Sistemas de Información Tema 4: Ingeniería de Sistemas de Información Bibliografía Análisis y Diseño de Aplicaciones Informáticas de Gestión: Una Perspectiva de Ingeniería del Software. M. Piattini, J.A. Calvo-Manzano, J. Cervera, L. Fernández. Editorial Rama, 2003. Fundamentos de Sistemas de Información. C. Edwards, J. Ward, A. Bytheway. Prentice Hall, 2º Edición, 2001. Principios de Sistemas de Información. R.M. Stair, G.W. Reynolds. Editorial Thomson, 4º Edición, 1999. Sistemas de Información Gerencial. K.C. Laudon, J.P. Laudon. Ed. Prentice Hall, 8º edición, 2004. 17/03/2010 Sistemas de Información 2 Contenido 4.1. 4.2. 4.3. 4.4. 4.5. Ciclos de Vida del Software Metodologías de Desarrollo de Software Gestión de Proyectos Software Análisis de Necesidades y Estudio de Viabilidad Introducción a la Ingeniería de Requisitos 17/03/2010 Sistemas de Información 3 4.1. Ciclos de Vida del Software 4.1. Ciclos de Vida del Software 4.1.1. 4.1.2. 4.1.3. 4.1.4. 4.1.5. 17/03/2010 Introducción Modelo en Cascada Modelo Incremental Modelo en Espiral Modelo genérico para desarrollo de sistemas orientados a objetos Sistemas de Información 4 4.1.1. Introducción Tradicionalmente el desarrollo de aplicaciones informáticas se llevaba a cabo de forma individualizada, a base de codificar (generar líneas de código) y probar lo realizado cuanto antes. Ventajas: desarrollo rápido Desventajas: ¿que sucede si se detectan errores en etapas tardías del desarrollo?. No se realiza actividades de planificación, de documentación, de aseguramiento de la calidad, etc. 17/03/2010 Sistemas de Información 5 4.1.1. Introducción Por lo tanto, es probable que las aplicaciones realizadas según este enfoque de codificar y probar: Sean poco flexibles ante posibles modificaciones. Sean incompletas o no reflejen bien las necesidades del cliente. Provoquen el descontento de los clientes (retrasos en la entrega, aparición de errores una vez que la aplicación ha sido entregada, etc.) “Es necesario que todo esfuerzo en el desarrollo del software conlleve un enfoque lógico para su realización que abarque toda la vida del sistema, comenzando con su concepción y finalizando cuando ya no se utiliza o se retira” [SIGWART, 1990]. 17/03/2010 Sistemas de Información 6 4.1.1. Introducción El ciclo de vida software es la descripción de las distintas formas de desarrollo de un proyecto o aplicación informática. Se define como el conjunto de fases o etapas, procesos y actividades requeridas para ofertar, desarrollar, probar, integrar, explotar y mantener un producto software. “Una aproximación lógica a la adquisición, el suministro, el desarrollo, la explotación y el mantenimiento del software” [IEEE 1074 - IEEE Standard for Developing Software Life Cycle Processes] “Un marco de referencia que contiene los procesos, las actividades y las tareas involucradas en el desarrollo, la explotación y el mantenimiento de un producto de software, abarcando la vida del sistema desde la definición de los requisitos hasta la finalización de su uso” [ISO 12207-1 - Software Life Cycle Processes] 17/03/2010 Sistemas de Información 7 4.1.1. Introducción Las funciones principales de un ciclo de vida software son: Determinar el orden de las fases y procesos involucrados en el desarrollo del software y su evolución. Establecer los criterios de transición para pasar de una fase a la siguiente (productos intermedios). El ciclo de vida que se seleccione en un proyecto influirá en el éxito del proyecto. 17/03/2010 Sistemas de Información 8 4.1.2. Modelo en Cascada Análisis Requisitos Sistema Análisis Requisitos Software Diseño Preliminar Diseño Detallado Codificación y Pruebas Explotación y Mantenimiento 17/03/2010 Sistemas de Información 9 4.1.2. Modelo en Cascada Características: Cada fase empieza cuando se ha terminado la fase anterior. Para pasar de una fase a otra es necesario conseguir todos los objetivos de la etapa previa. Ayuda a prevenir que se sobrepasen las fechas de entrega y los costes esperados. Al final de cada fase el personal técnico y los usuarios tienen la oportunidad de revisar el progreso del proyecto. Críticas: No refleja realmente el proceso de desarrollo del software. Se tarda mucho tiempo en pasar por todo el ciclo. Perpetua el fracaso de la industria del software en su comunicación con el usuario final. El mantenimiento se realiza en el código fuente. Las revisiones de proyectos de gran complejidad son muy difíciles. Impone una estructura de gestión de proyectos. 17/03/2010 Sistemas de Información 10 4.1.3. Modelo Incremental Análisis Requisitos Sistema Análisis Requisitos Software Incremento 1 Diseño Preliminar Diseño Detallado Codificación y Pruebas Incremento 2 Explotación y Mantenimiento Diseño Detallado Codificación y Pruebas Explotación y Mantenimiento Incremento n 17/03/2010 Sistemas de Información 11 4.1.3. Modelo Incremental Características: Corrige la necesidad de una secuencia no lineal de pasos de desarrollo. Va creando el sistema software añadiendo componentes funcionales al sistema (llamados incrementos). El sistema software ya no se ve como una única entidad monolítica, sino como una integración de resultados sucesivos obtenidos después de cada iteración. Se evitan proyectos largos y se entrega “algo de valor” a los usuarios con cierta frecuencia. Se ajusta a entornos de alta incertidumbre. Críticas: Persiste el problema de determinar si los requisitos propuestos son válidos (los errores en los requisitos se detectan tarde y su corrección resulta tan costosa como en el modelo en cascada). Difícil de evaluar el coste total. Difícil de aplicar a sistemas transaccionales que tienden a ser integrados y a operar como un todo. 17/03/2010 Sistemas de Información 12 4.1.4. Modelo en Espiral Determinar objetivos, alternativas, restricciones Evaluar alternativas, identificar y resolver los riesgos Análisis de Riesgos Análisis de Riesgos Análisis de Riesgos Prototipo 3 Análisis de Riesgos Prototipo 1 Simulaciones, modelos, benchmarks Plan de Requisitos Plan del Ciclo de Vida Planificar las fases siguientes Prototipo Operativo Prototipo 2 Concepto de Operación Plan de Desarrollo Validación de Requisitos Plan de Integración y Pruebas V & V del diseño Implementación Requisitos Sw Prueba de aceptación Diseño Producto Sw Diseño detallado Código Pruebas unitarias Integración y prueba Desarrolar, Verificar el producto del siguiente nivel 17/03/2010 Sistemas de Información 13 4.1.4. Modelo en Espiral Ejemplo: (Identificación) Objetivos: una empresa que desea aumentar su productividad en el desarrollo de software. Alternativas: en el área de tecnología se podría reutilizar software o utilizar ciertas herramientas, determinados métodos que condujeran al desarrollo de mejores productos. Alternativas “no software”: en gestión (la organización de los proyectos, la política de la empresa, la planificación y el control de los proyectos, etc.), en personal (la incorporación de plantilla, la promoción de incentivos, la formación, etc.) y en soporte (comunicaciones entre el personal, lugares de trabajo, etc.). Restricciones: que el aumento de productividad fuera a un coste razonable, que no se cambiase la cultura de la empresa, etc. 17/03/2010 Sistemas de Información 14 4.1.4. Modelo en Espiral Evaluar las diferentes alternativas que se plantean teniendo en cuenta los objetivos a conseguir y las restricciones impuestas. Formulación de una estrategia efectiva en coste (utilizando prototipos, simulación, bancos de prueba, cuestionarios para los usuarios, modelización analítica o combinaciones de éstas y otras técnicas de resolución de riesgos) para resolver dichos riesgos. Ejemplo: podría recurrirse a la realización de informes y análisis. Revisar los resultados. Ejemplo: se encuentra que las ganancias en productividad no serán significativas y que además dichas mejoras no fueran compatibles con la cultura de la empresa. Ejemplo: podrían indicar la posibilidad de conseguir ganancias significativas de productividad a un coste razonable persiguiendo un conjunto integrado de iniciativas en las áreas de tecnología, gestión, personal y soporte. Planificar la fase posterior. Ejemplo: se incluiría la necesidad de realizar informes y análisis más profundos y, por lo tanto, de contar con más personal. 17/03/2010 Sistemas de Información 15 4.1.4. Modelo en Espiral Características: Cada ciclo se completa con una revisión en la que participan las principales personas y organizaciones que tienen relación con el producto. Cada revisión incluye todos los productos desarrollados en el ciclo anterior y el plan para el siguiente. Los planes para las fases siguientes pueden incluir una partición del producto en incrementos o componentes (ciclos paralelos) Principales diferencias respecto a otros métodos: Reconocimiento explícito de las alternativas Identificación de riesgos asociados a las alternativas División del proyecto en ciclos. Se adapta a cualquier tipo de actividad. 17/03/2010 Sistemas de Información 16 4.1.5. Modelo genérico para desarrollo de sistemas orientados a objetos Los modelos orientados a objetos caracterizan el desarrollo orientado al objeto por: La eliminación de fronteras entre fases, ya que debido a la naturaleza iterativa del desarrollo orientado al objeto, estas fronteras se difuminan cada vez más. Una nueva forma de concebir los lenguajes de programación y su uso, ya que se incorporan bibliotecas de clases y otros componentes reutilizables. Un alto grado de iteración y solapamiento, lo que lleva a una forma de trabajo muy dinámica. 17/03/2010 Sistemas de Información 17 4.1.5. Modelo genérico para desarrollo de sistemas orientados a objetos Los expertos en tecnología de objetos proponen seguir un desarrollo iterativo e incremental. Iterativo: Existe un ciclo de desarrollo análisisdiseño-implementación-análisis que permite hacer evolucionar al sistema. Incremental: el sistema se divide en un conjunto de particiones. Las actividades de validación, verificación y aseguramiento de la calidad se pueden realizar de forma continuada. 17/03/2010 Sistemas de Información 18 4.1.5. Modelo genérico para desarrollo de sistemas orientados a objetos Se pueden combinar los modelos tradicionales de ciclo de vida con los más modernos: Idea del “microproceso” y del “macroproceso” Microproceso: seguir cualquiera de los ciclos de vida más modernos. Macroproceso: seguir un modelo en cascada. 17/03/2010 Sistemas de Información 19 4.1. Ciclos de Vida del Software Ejercicio: ¿Qué factores influyen a la hora de elegir un ciclo de vida para resolver un problema dado? ¿Qué ciclo de vida elegiría para resolver un problema que se comprende bien desde el principio y está muy estructurado? Una vez elegido el ciclo de vida, ¿qué procesos escogería para dicho ciclo de vida, teniendo en cuenta que el desarrollo informático para resolver el problema anterior lo realiza una única persona? Se supone que se va desarrollar una aplicación relativa a la gestión de pedidos de una empresa. En este caso el cliente no tiene todavía muy claro qué es lo que quiere. Además el personal informático va a utilizar una tecnología que le es completamente nueva. Discútase qué tipo de ciclo de vida es más apropiado y qué procesos se deberían utilizar para desarrollar esta aplicación. 17/03/2010 Sistemas de Información 20 4.2. Metodologías de Desarrollo de Software 4.2. Metodologías de Desarrollo de Software 4.2.1. Introducción 4.2.2. Características de las principales metodologías 17/03/2010 Sistemas de Información 21 4.2.1. Introducción Conceptos generales: Metodología Técnica Herramienta Tarea Procedimiento Producto 17/03/2010 Sistemas de Información 22 4.2.1. Introducción Metodología: Conjunto de pasos y procedimientos que debe seguirse para el desarrollo de software. “Conjunto de filosofías, fases, procedimientos, reglas, técnicas, herramientas, documentación y aspectos de formación para los desarrolladores de sistemas de información” [Maddison 1983]. Un conjunto de componentes que especifican: Cómo se debe dividir un proyecto en etapas. Qué tareas se llevan a cabo en cada etapa. Qué salidas se producen y cuándo se deben producir. Qué restricciones se aplican. Qué herramientas se van a utilizar. Cómo se gestiona y controla un proyecto. Una metodología, por tanto, representa el camino para desarrollar software de una manera sistemática. 17/03/2010 Sistemas de Información 23 4.2.1. Introducción Metodología: Objetivos: Registrar los requisitos de un sistema de información de una forma acertada. Proporcionar un método sistemático de desarrollo. Construir un sistema de información dentro de un tiempo apropiado y unos costes aceptables. Construir un sistema que esté bien documentado y que sea fácil de mantener. Ayudar a identificar cualquier cambio que sea necesario realizar dentro del proceso de desarrollo. Proporcionar un sistema que satisfaga a todas las personas afectadas por el mismo. Técnica: Para aplicar un procedimiento se pueden utilizar una o más técnicas. Suelen ser gráficas con apoyos textuales formales Determinan el formato de los productos resultantes de cada tarea. 17/03/2010 Sistemas de Información 24 4.2.1. Introducción Herramientas: Para la realización de técnicas nos apoyamos en herramientas software que automatizan su aplicación. Ej. Herramientas CASE. Pueden ser específicas de una metodología o de propósito más general. Tarea: La descomposición del proceso se realiza hasta el nivel de tareas o actividades elementales. Procedimientos: Para cada tarea se identifica un procedimiento que define la forma de ejecutarla y es el vehículo de comunicación entre usuarios y desarrolladores. Productos: Como resultado de seguir un procedimiento, se obtienen uno o más productos 17/03/2010 Sistemas de Información 25 4.2.1. Introducción Ejemplo: Supongamos una metodología en la que hay una tarea que define un procedimiento para construir un modelo conceptual de datos. Para ello, se puede elegir la técnica de Chen. Además se dispone de una herramienta que permite realizar y verificar el diagrama, así como mantener su información de forma consistente. Como resultado, se obtiene el modelo conceptual de datos, que será un producto intermedio y servirá de base para realizar el modelo lógico de datos. Confusión entre los términos metodología, método y ciclo de vida: Una metodología puede seguir uno o varios modelos de ciclo de vida. Una metodología es un concepto más amplio que el de método. 17/03/2010 Ej.: Métodos de programación estructurada. Sistemas de Información 26 4.2.1. Introducción Metodologías de desarrollo de sistemas de información: Visión histórica Desarrollo convencional Desarrollo estructurado Desarrollo orientado a objetos … 17/03/2010 Sistemas de Información 27 4.2.1. Introducción Desarrollo Convencional Problema inicial: Las primeras aplicaciones se basaban en funciones básicas de proceso de datos (copias, recuperaciones, ordenaciones, etc.) Las personas que desarrollaban eran programadores (codificación) Falta de una fase de análisis previo. Surge la importancia del análisis y el diseño en el desarrollo de un sistema: Se comienza a hablar de analistas-programadores, analistas de sistemas. Los analistas se dividían en dos tipos: 17/03/2010 Analistas funcionales (encargados del análisis de necesidades) Analistas técnicos (encargado del diseño) Sistemas de Información 28 4.2.1. Introducción Desarrollo Convencional Los resultados finales son impredecibles. No hay forma de controlar lo que está sucediendo en el proyecto. Los cambios organizativos afectan negativamente al proceso de desarrollo. 17/03/2010 Sistemas de Información 29 4.2.1. Introducción Desarrollo Estructurado De la construcción de programas de forma artesanal métodos de ingeniería. Sienta las bases para un desarrollo automatizado. Técnicas dirigidas a aspectos técnicos y de gestión en la construcción de software. Surge a partir del concepto de programación estructurada. 17/03/2010 Sistemas de Información 30 4.2.1. Introducción Desarrollo Estructurado Programación estructurada El enfoque estructurado comenzó con la programación Normas para la aplicación de las estructuras de datos y de control Diseño estructurado El enfoque estructurado se extiende posteriormente a la fase de diseño Aparecen las primeras publicaciones sobre el diseño (YOURDON y CONSTANTINE, 1975) Se refina el concepto de modularidad (módulo de programa, medidas en la calidad de los programas) 17/03/2010 Sistemas de Información 31 4.2.1. Introducción Desarrollo Estructurado Análisis estructurado Inicialmente se hacía una especificación narrativa de los requisitos, tal y como los percibía el analista. Los primeros autores sobre el análisis estructurado (GANE y SARSON, 1977; WEINBERG, 1978; DE MARCO, 1979) identificaron problemas: Eran monolíticas Eran redundantes Eran ambiguas Imposibles de mantener 17/03/2010 Sistemas de Información 32 4.2.1. Introducción Desarrollo Estructurado Se advierte la importancia del análisis: Si el análisis era erróneo, se realizaría una buena solución a un problema equivocado Especificaciones funcionales: Gráficas Particionadas Mínimamente redundantes Este enfoque, que se conoce como análisis estructurado (o análisis descendente o “top-down”) 17/03/2010 Sistemas de Información 33 4.2.1. Introducción Relación histórica de las principales metodologías estructuradas AÑO METODOLOGÍA 1968 Conceptos sobre la programación estructurada de DIJKSTRA, WARNIER y JACKSON 1974 Técnicas de programación estructurada de WARNIER y JACKSON 1975 Primeros conceptos sobre diseño estructurado de MYERS y YOURDON 1977 Primeros conceptos sobre análisis estructurado GANE y SARSON 1978 Análisis estructurado DEMARCO y WEINBERG 1981 SSADM (versión inicial) Information Engineering (versión inicial) 1985 Análisis y Diseño estructurado para sistemas de tiempo real de WARD y MELLOR 1986 SSADM Versión 3 1987 Análisis y Diseño estructurado para sistemas de tiempo real de HATLEY y PIRHBAY 1989 MÉTRICA (versión inicial) 1990 SSADM Versión 4 1993 MÉTRICA Versión 2 1995 MÉTRICA Versión 2.1 2001 MÉTRICA Versión 3 17/03/2010 Sistemas de Información 34 4.2.1. Introducción Desarrollo Orientado a Objeto El paradigma orientado a objetos trata los procesos y los datos de forma conjunta. Surge con los lenguajes de programación orientados a objetos. Se da énfasis a la abstracción de datos (objetos de datos). Lenguajes de programación como Smalltalk, C++, Java, etc. produjeron un gran interés para la expansión del análisis y diseño orientado a objetos. 17/03/2010 Sistemas de Información 35 4.2.1. Introducción Desarrollo Orientado a Objeto UML (Unified Modeling Language) integración de varios de los métodos de análisis y diseño orientado a objetos (de Booch, Rumbaugh y Jacobson). (1996) En 1997 el Object Management Group (OMG) lo adopta como estándar. Metodología del Proceso Unificado (UP, Unified Process) (1999): Marco de procesos que guía las actividades para el desarrollo de sistemas OO. RUP (Rational Unified Process) (2000) 17/03/2010 Sistemas de Información 36 4.2.1. Introducción Métodos Ágiles “Desarrollo ágil” (Agile Development) metodologías que denominan “ligeras”. Buscan un equilibrio entre: procesos de desarrollo muy “burocrático” y la inexistencia del mismo. Ejemplos: Método de Programación extrema (XP) o eXtreme Programming Dynamic System Development Method (DSDM). Scrum Cristal Metodologías que puedan adaptarse al desarrollo ágil y adaptar las reglas o buenas prácticas de los métodos de desarrollo ágil (ej. RUP) Herramientas RAD 17/03/2010 Sistemas de Información 37 4.2.1. Introducción Ejercicio de análisis: Análisis de metodologías ágiles 17/03/2010 Sistemas de Información 38 4.2.2. Características de las principales metodologías Entorno de desarrollo: conjunto de componentes que condicionan la construcción de software. El entorno de desarrollo afecta a la productividad. La productividad debe estar asociada a la calidad de los productos finales. La metodología de desarrollo influye directamente en estos dos factores. 17/03/2010 Sistemas de Información 39 4.2.2. Características de las principales metodologías ENTORNO DE DESARROLLO DE SOFTWARE ORGANIZACION DE DESARROLLO DE SOFTWARE EQUIPO DE DESARROLLO DE SOFTWARE Dan una estructura visible Seleccionan las herramientas PROCEDIMIENTOS DE GESTION Da informes a la dirección Coordinan y guían METODOLOGIA DE DESARROLLO soportan métodos SOPORTE AUTOMATIZADO TECNICAS determinan las herramientas necesarias 17/03/2010 Sistemas de Información 40 4.2.2. Características de las principales metodologías Selección de entornos de desarrollo: Combinaciones de métodos de gestión, técnicas de desarrollo y soporte automatizado, para crear y desarrollar la metodología de desarrollo software más apropiada. Analizar y evaluar las metodologías existentes y adoptar la que más se ajuste a sus necesidades. Influencia del tamaño, estructura de la organización, y el tipo de aplicaciones que va a desarrollar. 17/03/2010 Sistemas de Información 41 4.2.2. Características de las principales metodologías Características deseables de una metodología: 1. 2. 3. 4. 5. 6. 7. 8. 9. Existencia de reglas predefinidas Cobertura total del ciclo de desarrollo Verificaciones intermedias Enlace con procesos de gestión Comunicación efectiva Utilización sobre un abanico amplio de proyectos Fácil formación Herramientas La metodología debe contener actividades que mejoren el proceso de desarrollo 10. Soporte al mantenimiento 11. Soporte de la reutilización de software 17/03/2010 Sistemas de Información 42 4.3 Gestión de Proyectos Software 4.3. Gestión de Proyectos Software 4.3.1 4.3.2 4.3.3 4.3.4 17/03/2010 Planificación Estimación de Costes y Plazos Seguimiento y Supervisión del Proyecto Software Gestión del Riesgo Sistemas de Información 43 4.3 Gestión de Proyectos Software Trabajo a través de proyectos: Es la forma habitual de actuación en el desarrollo de software. Diferentes circunstancias para emprenderlo Depende de una gestión apropiada para alcanzar sus objetivos Un proyecto es un conjunto de etapas, actividades y tareas que tiene como finalidad alcanzar un objetivo 17/03/2010 Sistemas de Información 44 4.3 Gestión de Proyectos Software Un proyecto: Implica un principio y un final. Utiliza diversos recursos finitos y cuenta con un presupuesto. Tiene actividades únicas y esencialmente no repetitivas. Tiene un objetivo. Requiere un jefe de proyecto y personal de desarrollo cuyos roles y estructura de equipo deben definirse y desarrollarse. Tiene que planificarse. Debe medir su progreso frente al plan. Suele coexistir con otros proyectos y competir por los recursos. Posee fuerzas internas y externas, que deben identificarse y tratarse, que influyen en él. La división en trabajos más sencillos es lo que permite al personal del proyecto dominar la complejidad del proceso para desarrollar el software. 17/03/2010 Sistemas de Información 45 4.3 Gestión de Proyectos Software Ciclo de gestión de proyectos software 17/03/2010 Sistemas de Información 46 4.3 Gestión de Proyectos Software Planificación Implica: la realización de un plan de proyecto por parte del jefe de proyecto y la gestión de compromisos. Jefe de proyecto: persona que tiene la responsabilidad de planificar, controlar y dirigir las actividades del proyecto. El primer cometido del jefe de proyecto es la realización del plan de proyecto. Plan de proyecto: documento que describe los trabajos que se van a realizar y la forma en que el jefe de proyecto va a dirigir su desarrollo. Define un conjunto de tareas (tiempos y recursos) con el propósito de satisfacer los requisitos contractuales. Debe ser preciso. Implica una negociación y acuerdos de los compromisos de esfuerzo, calidad y plazo que cada persona del equipo deberá cumplir. 17/03/2010 Sistemas de Información 47 4.3 Gestión de Proyectos Software Planificación Para resultar útil, el plan de proyecto debería facilitar los siguientes objetivos: Proporcionar un resumen del proyecto a los directivos. Permitir supervisar el progreso del proyecto, desde el inicio hasta el final (jefe y clientes). Presentarse como un documento orientado al cliente. Constituir un documento base del proyecto con la aprobación del cliente y actualizable. 17/03/2010 Sistemas de Información 48 4.3 Gestión de Proyectos Software Planificación El contenido del plan de proyecto varía en cada proyecto, pero es recomendable incluir, al menos, los siguientes elementos: Un resumen del proyecto. Una lista de los hitos alcanzables. Los procedimientos y estándares que se van a aplicar. Una especificación del proceso de revisión (quién, cómo y cuándo se puede revisar la planificación del proyecto y con qué objeto). Un plan que defina la comunicación entre la organización de desarrollo y el cliente. Un diagrama de descomposición del trabajo. Una lista del personal del proyecto Una red de actividades que muestre la secuencia de tareas en el tiempo y su relación entre ellas. Los responsables de todas y cada una de las actividades. Los presupuestos de esfuerzo y dinero y los calendarios y plazos para todas las actividades. 17/03/2010 Sistemas de Información 49 4.3 Gestión de Proyectos Software Planificación El contenido del plan de proyecto varía en cada proyecto, pero es recomendable incluir, al menos, los siguientes elementos: Un resumen del proyecto. Una lista de los hitos alcanzables. Los procedimientos y estándares que se van a aplicar. Una especificación del proceso de revisión (quién, cómo y cuándo se puede revisar la planificación del proyecto y con qué objeto). Un plan que defina la comunicación entre la organización de desarrollo y el cliente. Un diagrama de descomposición del trabajo. Una lista del personal del proyecto Una red de actividades que muestre la secuencia de tareas en el tiempo y su relación entre ellas. Los responsables de todas y cada una de las actividades. Los presupuestos de esfuerzo y dinero y los calendarios y plazos para todas las actividades. 17/03/2010 Sistemas de Información 50 4.3 Gestión de Proyectos Software Diagrama de descomposición del trabajo 00 Proyecto de desarrollo X J.L. Fernández Nivel de Proyecto 10 20 30 40 S. Alonso J.L. Fernández Pruebas de integración y del sistema V. Pérez Desarrollo del Software Ingeniería del Sistema Gestión del Proyecto J. Gómez Nivel de paquete de trabajo 21 12 11 Gestión del Proyecto J.L. Fernández Plan de Proyecto UT. 111 Gestión de Configuración 31 Diseño del Sistema 32 Análisis y Diseño 41 33 Programación Pruebas 42 Pruebas de Integración Pruebas de Aceptación G. Alfonso G. Fuentes T. Diez S. Alonso Control de Configuración UT. 121 Comunicaciones UT. 211 Diseño Funcional UT. 311 Programación UT. 321 Procedimientos de Pruebas UT. 331 Procedimientos de Pruebas UT. 411 Procedimientos de Pruebas UT. 421 Construcción de Software UT. 122 Análisis de Requisitos UT. 212 Diseño de Algoritmos UT. 312 Documentación UT. 322 Pruebas Unitarias UT. 332 Satisfacción de Requisitos UT. 422 Gestión de la Base de Datos UT. 213 Diseño de la Base de Datos UT. 313 Soporte a las Pruebas UT. 323 Análisis de las Pruebas UT. 333 Integración del Sistema UT. 412 Formación UT. 413 A. Ramirez P. Redondo S. Sánchez Arquitectura UT. 214 Nivel de Unidad de Trabajo 4.3 Gestión de Proyectos Software Planificación Actividades para la planificación de un proyecto Configuración del calendario del proyecto Deber ser dinámico (variar a medida que avanza el proyecto si surgen cambios no previstos en su extensión, sus plazos, etc.) El control del proyecto se basa en la supervisión periódica y en la comparación de los resultados con los previstos en el calendario. Características del calendario: Comprensible por todas aquellas personas que van a utilizarlo. Suficientemente detallado. Capaz de señalar las actividades críticas. Flexible, fácilmente modificable. Basado en estimaciones de tiempos fidedignas. Ajustable a los recursos disponibles. Compatible con los planes de otros proyectos que compartan los mismos recursos. 17/03/2010 Sistemas de Información 52 4.3 Gestión de Proyectos Software Planificación Gestión de Compromisos Objetivo: negociar, establecer y gestionar los compromisos adquiridos por todas las partes implicadas en el desarrollo de un proyecto. Técnicas Muestran la interrelación entre las actividades. Ejemplos: Diagrama de Gantt, Diagrama de PERT (análisis de precedencia). 17/03/2010 Sistemas de Información 53 4.3 Gestión de Proyectos Software Unidades de tiempo 1 2 3 4 5 6 7 8 9 10 Tarea 1.1 Tarea 1.2 Tarea 1.3 Tarea 2.1 Ejemplo de Diagrama de Gantt Tarea 2.2 Tarea 2.3 17/03/2010 Sistemas de Información 54 4.3 Gestión de Proyectos Software A D B E C Ejemplo de Diagrama de PERT 17/03/2010 Sistemas de Información 55 4.3 Gestión de Proyectos Software Estimación de costes y plazos La principal unidad de medición de coste del proyecto suele ser el número de salarios mensuales o anuales que deben pagarse (personas-mes o personas-año). Las estimaciones suelen ser valoraciones con un cierto error (por ejemplo, ± 20%). La estimación en los proyectos de software tiene dificultades particulares si la comparamos con la predicción en otras industrias. En otras es habitual producir el mismo tipo de producto una y otra vez, con los mismos métodos. La estimación es un proceso continuo: A medida que se avanza en el proyecto, se obtiene una mayor cantidad de detalles y de información más fiable 17/03/2010 Sistemas de Información 56 4.3 Gestión de Proyectos Software Estimación de costes y plazos Métodos de estimación de costes 1. La opinión de expertos 2. La estimación por analogía 3. La descomposición 4. Ecuaciones o modelos de estimación 17/03/2010 Sistemas de Información 57 4.3 Gestión de Proyectos Software Seguimiento y supervisión del proyecto El seguimiento y la supervisión del proyecto software implica seguir, revisar y comparar los logros y los resultados obtenidos, frente a las estimaciones, los compromisos y los planes del proyecto, actualizándolos en función de estos resultados. Objetivos: Comparar los resultados actuales con los planes previstos. Tomar acciones correctivas cuando existan desviaciones significativas de los planes previstos. Acordar compromisos con el personal afectado por las acciones correctivas. “si no sabes donde estás, un mapa no te ayudará” 17/03/2010 Sistemas de Información 58 4.3 Gestión de Proyectos Software Gestión de Riesgos Riesgo: cualquier elemento potencial que provoca resultados insatisfactorios en un proyecto. Las áreas de riesgo que debe tratar un jefe de proyecto: Riesgos estratégicos: cualquier tipo de riesgo relacionado con la estrategia de la organización. Riesgos comerciales: relacionados con la venta del proyecto, el seguimiento del cliente, el precio y las posibles actualizaciones. Riesgos contractuales y financieros. Riesgos de gestión: relacionados con la organización de los proyectos. Riesgos de proyecto: causados por los aspectos técnicos del software. Riesgos de explotación. Riesgos de mantenimiento. 17/03/2010 Sistemas de Información 59 4.4. Análisis de Necesidades y Estudio de Viabilidad “todos los proyectos son realizables ¡con recursos ilimitados y un tiempo infinito!” [PRESSMAN, 2001] Antes de proceder con un desarrollo debe evaluarse su viabilidad Aspectos que abarca: Económico: ¿Vale la pena invertir en el proyecto? Técnico: ¿Está disponible la tecnología necesaria para el desarrollo? ¿Se puede utilizar en la organización? Legal: si los requisitos atentan contra alguna ley o reglamento. Operativa: ¿Puede coordinarse con los métodos existentes? ¿Encaja en la filosofía de la empresa y en la cultura del personal? ¿El personal está motivado para aceptarlo y explotarlo con la mayor eficiencia? Plazos y calendario: ¿el plazo propuesto es realista? 17/03/2010 Sistemas de Información 60 4.4. Análisis de Necesidades y Estudio de Viabilidad Normalmente el análisis de viabilidad puede incluir las siguientes fases [MAP, 2001]: Estudiar la solicitud de proyecto, y establecer el alcance y los límites del sistema. Estudiar la situación actual, describiendo y valorando los actuales sistemas de información e identificando a usuarios y personas involucradas/afectadas por el proyecto. Realizar una definición preliminar de requisitos, catalogando y especificando los mismos, así como las directrices técnicas o de gestión que puedan influir en el proyecto. Estudiar y especificar las diferentes alternativas de solución que se pueden concebir. Por ejemplo: Comprar un producto software comercial. Desarrollar el producto internamente. Desarrollarlo de forma externa mediante un contrato. Automatizar sólo parcialmente el sistema para no tener que afrontar demasiados gastos. Evaluar cada una de las alternativas, incluyendo su viabilidad económica, técnica, legal, operativa, etc. y su valoración en cuanto a beneficios, riesgos y planificación. Seleccionar y aprobar la alternativa más apropiada (tras la presentación de cada una de ellas), lo que incluye, para la misma, fechas y compromisos de trabajo por parte de las personas y departamentos implicados, es decir, definición de un plan inicial del proyecto. 17/03/2010 Sistemas de Información 61 4.5. Introducción a la Ingeniería de Requisitos 17/03/2010 Sistemas de Información 62 Introducción: Definición de Requisitos ¿Qué son los Requisitos? Describen los servicios que debe proporcionar el sistema y sus restricciones operativas. Un requisito puede ser una simple declaración abstracta de alto nivel o bien una definición detallada y formal de una función del sistema. Es necesario hacer una separación entre niveles de descripción. 17/03/2010 Sistemas de Información 63 Introducción: Tipos de Requisitos Tipos de Requisitos Requisitos del Usuario (descripción de alto nivel) Requisitos del Sistema (descripción detallada) Requisitos Funcionales Requisitos No Funcionales: Requisitos Del Producto Requisitos Organizacionales Requisitos Externos De Dominio 17/03/2010 Sistemas de Información 64 Introducción: Tipos de Requisitos Requisitos del Usuario: descripciones, en lenguaje natural o diagramas, de lo que se espera que el sistema proporcione y las restricciones bajo las cuales debe funcionar. Requisitos del Sistema: establecen con detalle las funciones, servicios y restricciones operativas del sistema. Deben ser precisos. Definir exactamente qué es lo que se va a implementar. Puede ser parte del contrato entre el comprador y el desarrollador. 17/03/2010 Sistemas de Información 65 Introducción: Tipos de Requisitos Ejemplo: 17/03/2010 Sistemas de Información 66 Introducción: Tipos de Requisitos Requisitos Funcionales: Son declaraciones de los servicios que debe proporcionar el sistema. Especifica la manera en que éste debe reaccionar a determinadas entradas. Especifica cómo debe comportarse el sistema en situaciones particulares. Pueden declarar explícitamente lo que el sistema no debe hacer. 17/03/2010 Sistemas de Información 67 Introducción: Tipos de Requisitos Ejemplo: Requisitos Funcionales 17/03/2010 Sistemas de Información 68 Introducción: Tipos de Requisitos Requisitos No Funcionales: No se refieren a funciones específicas que proporciona el sistema. Son restricciones de los servicios o funciones ofrecidas por el sistema (fiabilidad, tiempo de respuestas, capacidad de almacenamiento, etc.) Generalmente se aplican al sistema en su totalidad. Surgen de las necesidades del usuario debido a restricciones de presupuesto, políticas de la organización, necesidad de interoperatividad, etc. 17/03/2010 Sistemas de Información 69 Introducción: Tipos de Requisitos Requisitos No Funcionales: Requisitos Del Producto: Especifican el comportamiento del producto. Ejemplos: rapidez de la ejecución, capacidad de memoria, fiabilidad, etc. Requisitos Organizacionales: Derivan de políticas y procedimientos existentes en la organización del cliente y del desarrollador. Ejemplos: Estándares de procesos, métodos de diseño, lenguajes de programación, métodos de entrega, etc. Requisitos Externos: Se derivan de factores externos al sistema y a su proceso de desarrollo. 17/03/2010 Ejemplos: Requisitos de interoperatividad, legislativos, éticos, etc. Sistemas de Información 70 Introducción: Tipos de Requisitos Ejemplo: Requisitos No Funcionales 17/03/2010 Sistemas de Información 71 Introducción: Tipos de Requisitos Requisitos De Dominio: Provienen del dominio de aplicación del sistema. Reflejan características y restricciones del dominio de la aplicación. Pueden ser funcionales o no funcionales. 17/03/2010 Sistemas de Información 72 Introducción: Tipos de Requisitos Ejemplo: Requisitos de Dominio 17/03/2010 Sistemas de Información 73 Introducción: Tipos de Requisitos Ejercicio de análisis: 17/03/2010 Sistemas de Información 74 Introducción: Definición de Ingeniería de Requisitos ¿Qué es la Ingeniería de Requisitos? Es el proceso para descubrir, analizar, documentar y verificar los servicios que debe proporcionar el sistema y sus restricciones. Define un proceso. Facilita la comprensión de lo que quiere el cliente. 17/03/2010 Analizando sus necesidades Confirmando su viabilidad Negociando la solución Especificando la solución sin ambigüedad Validando y Gestionando requisitos para que el sistema pueda ser operativo. Sistemas de Información 75 Proceso de Desarrollo de Requisitos Objetivo: Crear y mantener un documento de requisitos del sistema. Define el conjunto estructurado de actividades de cuya ejecución se obtiene y mantiene la especificación de los requisitos. El proceso de desarrollo (ingeniería) de requisitos comprende (en general) 4 etapas: 1. 2. 3. 4. 17/03/2010 Identificación o captura de requisitos Análisis (y negociación) de requisitos Especificación o documentación de requisitos Validación de requisitos Sistemas de Información 76 Proceso de Desarrollo de Requisitos 17/03/2010 Sistemas de Información 77 Proceso de Desarrollo de Requisitos 17/03/2010 Sistemas de Información 78 Proceso de Desarrollo de Requisitos Actores del proceso: Stakeholders: persona o grupo que se verá afectado por el sistema, directa o indirectamente. Usuarios finales del sistema Gerentes Ingenieros de software Encargados de mantenimiento de sistemas relacionados Reguladores externos Expertos en el dominio Representantes de trabajadores Etc. 17/03/2010 Sistemas de Información 79 Proceso de Desarrollo de Requisitos Ejemplo: Stakeholders del sistema para un cajero automático (ATM) de un banco 17/03/2010 Sistemas de Información 80 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Captura de requisitos: En esta etapa los ingenieros de software trabajan con los clientes y los usuarios finales del sistema. Determinar: 17/03/2010 el dominio de la aplicación qué servicios debe proporcionar el sistema rendimiento requerido del sistema restricciones de hardware etc. Sistemas de Información 81 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Análisis de requisitos: Una vez recopilados los requisitos: Se agrupan por categorías y se organizan Se estudia cada requisito en relación con el resto Se examina la consistencia, completitud y ambigüedad de los requisitos Se clasifican en base a las necesidades de los clientes/usuarios. Negociación de requisitos: 17/03/2010 Los clientes, usuarios y resto de los implicados deberán clasificar sus requisitos y discutir posibles conflictos Priorizar requisitos Compromiso final sobre el conjunto de requisitos a implementar Sistemas de Información 82 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos La captura y análisis de requisitos es un proceso complejo y de vital importancia. Implica: Comprender el dominio de la aplicación Comprender el problema en cuestión Comprender el contexto del negocio Comprender las necesidades y restricciones de los usuarios finales 17/03/2010 Sistemas de Información 83 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Problemas a la hora de hacer una captura de requisitos: Problemas de Alcance: Límites del sistema mal definidos Detalles técnicos innecesarios proporcionados por los clientes/usuarios No están claros los objetivos del Sistema Problemas de Comprensión: Los clientes no están seguros de lo que necesitan Los clientes no entienden totalmente el dominio del problema Dificultades para comunicar las necesidades Omisión de información por considerar que es obvia Especificación de requisitos ambiguos, poco estables o contradictorios Problemas de volatilidad: Los requisitos que cambian con el tiempo 17/03/2010 Sistemas de Información 84 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Para la recopilación y análisis de requisitos se seguirán, en general, 5 pasos: Identificar las fuentes de información y planificar las actividades de investigación Realizar las preguntas apropiadas (comprender necesidades) Analizar la información (detectar puntos no claros) Confirmar con los usuarios (lo que parece haberse comprendido) Sintetizar los requisitos (especificación de requisitos) 17/03/2010 Sistemas de Información 85 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Principales técnicas de captura y análisis de requisitos: 17/03/2010 Entrevistas Desarrollo conjunto de aplicaciones (JAD) Prototipado Observación Estudio de documentación Cuestionarios Tormenta de ideas (Brainstorming) ETHIC Sistemas de Información 86 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Entrevistas: Cada tipo de entrevista requiere un comportamiento y una preparación distinta. Existen dos elementos principales: Entrevistador y Entrevistado 17/03/2010 87 Sistemas de Información Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos EL ENTREVISTADO PUEDE PRESENTAR: EL ENTREVISTADOR DEBE POSEER: PASIVIDAD, INHIBICION ☺ CIERTAS CUALIDADES PERSONALES NO ACEPTACION ☺ CONOCIMIENTO DE TECNICAS RECHAZO ☺ ACTITUD ADECUADA AGRESIVIDAD ☺ EXPERIENCIA PRACTICA Es importante la forma en que se plantea la conversación y la relación que se establece No basta con hacer preguntas “relación asimétrica, dinámica y única” 17/03/2010 Sistemas de Información 88 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Problemas de Comunicación: DISCREPANCIA DE OBJETIVOS BARRERAS DE COMUNICACION MANTENIMIENTO DE LA MOTIVACION 17/03/2010 Sistemas de Información 89 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Barreras de la Comunicación: OIR LO QUE QUEREMOS PASAR POR ALTO IDEAS CONTRARIAS DIFERENTE SIGNIFICADO DE LAS PALABRAS COMUNICACION NO VERBAL EMOCIONES RUIDO DISTANCIA Eliminación de Barreras: ADAPTARSE AL MUNDO DEL RECEPTOR UTILIZAR EL DIALOGO SERVIRSE DE LA COMUNICACION DIRECTA INSISTIR (VARIAS VECES) UTILIZAR LENGUAJE SENCILLO Y DIRECTO UTILIZAR VIAS DISTINTAS REDUCIR LAS DISTANCIAS 17/03/2010 Sistemas de Información 90 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Factores a Considerar: COMUNICACION NO VERBAL PROXIMIDAD FISICA ORIENTACION POSTURA ADEMANES CABEZA EXPRESION FACIAL OJOS APARIENCIA ASPECTOS DEL LENGUAJE ESCUCHAR Y RESPONDER VOCABULARIO EXPRESION VERBAL 17/03/2010 Sistemas de Información 91 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Cualidades del Entrevistador: Saber observar y escuchar (escucha activa) Poseer madurez Ser objetivo e imparcial No ser autoritario Capacidad de “empatía” Comprensión Ser cordial y accesible Respetar la intimidad Ser sincero, paciente, sereno Ser prudente 17/03/2010 Sistemas de Información 92 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Fases de la Entrevista: Preparación Realización y Conducción Análisis 17/03/2010 Sistemas de Información 93 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Preparación de la Entrevista: Investigar la situación Identificar los entrevistados Preparar el objetivo y el contenido Planificar lugar y hora 17/03/2010 Sistemas de Información 94 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Realización de la Entrevista: Etapas: Apertura (establecer un ambiente confortable) Desarrollo Técnicas Directivas: preguntas abiertas, preguntas directas, preguntas cerradas, sondeo. Técnicas No Directivas: pausa, asentir, reflejar ideas, resumir. Término (resumir, agradecer, establecer nuevas citas) 17/03/2010 Sistemas de Información 95 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Análisis de la Entrevista: Es la fase más descuidada Requiere: Pasar notas a limpio Reorganizar la información Contrastar la información con otras entrevistas o fuentes Evaluar cómo ha ido la entrevista. 17/03/2010 Sistemas de Información 96 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Desarrollo Conjunto de Aplicaciones (JAD): Es una técnica para promover la cooperación y el trabajo en equipo entre usuarios y analistas. Razones para realizar: 17/03/2010 Dinero gastado en preparación y realización de entrevistas. Todo el grupo puede actuar como revisor y detectar defectos. Propugna una participación más profunda de los usuarios en el proyecto. Sistemas de Información 97 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Fases de un JAD: Adaptación o preparación: Selección de los participantes Recabar una cierta información Organizar la reunión Sesión JAD Documentación 17/03/2010 Sistemas de Información 98 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Prototipado: Consiste en la elaboración de un modelo o maqueta del sistema. Se construye para evaluar mejor los requisitos que desea que cumpla. Es útil cuando: 17/03/2010 El área de aplicación no está bien definida. El coste de rechazo de la aplicación es muy alto. Es necesario evaluar previamente el impacto del sistema en los usuarios y en la organización. Sistemas de Información 99 Proceso de Desarrollo de Requisitos: Captura, Análisis y Negociación de requisitos Tipos principales de prototipos: Prototipado de la interfaz de usuario Modelos de Rendimiento Prototipado funcional 17/03/2010 Sistemas de Información 100 Sistemas de Información Tema 4: Ingeniería de Sistemas de Información