Descarga la aplicación para disfrutar aún más
Esta es una vista previa del archivo. Inicie sesión para ver el archivo original
Temario/Tema 01 - Introducción a la IS.pdf Introducción a la Ingeniería del Software Ingeniería del Software Juan Pavón Mestras Dep. Ingeniería del Software e Inteligencia Artificial Facultad de Informática Universidad Complutense Madrid Ingeniería del Software ¿Qué es la Ingeniería del Software? ¿En qué se diferencia un Programador de un Ingeniero de Software? ¿Cuál es la diferencia entre un Ingeniero de Software y un Ingeniero de Sistemas? ¿Qué diferencia la Ingeniería del Software de la Ciencia de la Computación? ¿Qué es el software? ¿Qué es un proceso de software? ¿Qué es la arquitectura del software? Juan Pavón - UCM 2011-12 Ingeniería del Software 2 Mitos del software Te explico un poco como va y ya concretaremos luego Es fácil modificar el software Como es complejo, el software puede fallar Una vez que el programa funciona, hemos terminado Hasta que empiece a funcionar no sabré si está bien Al cliente basta con darle un código que funcione El programa no falla, es el cliente que no sabe utilizarlo Con pruebas y verificación formal se pueden eliminar todos los errores Cuanto más voluminosa sea la documentación de un producto, mejor será Siempre podemos añadir más programadores Si una característica de la aplicación no es necesaria para el 80% de los usuarios, al 20% restante realmente no le hará falta Si un error ha sobrevivido a dos revisiones, no es un error, sino comportamiento normal del sistema Juan Pavón - UCM 2011-12 Ingeniería del Software 3 Desastres causados por fallos del software Explosión del Ariane 5, 1996 Motivo: conversión de datos de un número demasiado grande Pérdida del Mars Climate Observer, 1999 Motivo: mezcla de kilos y libras. El satélite acabó pegándosela en Marte Airbus 320 derribado por un misil lanzado desde el USS Vicennes durante la guerra Irán-Irak, 1988 Fallo en el software de reconocimiento de patrones, que confundió a un avión civil con un F-14 iraní: 290 pasajeros muertos Muertes de pacientes de cáncer por sobredosis de radiación del equipo Therac-25, 1986 Fallo de control de condiciones de carrera Redondeo en la conversión del Euro a DM 1 EURO = 1.95583 DM 0.01 DM = 0.01 Euro y 0.01 Euro = 0.02 DM Virus y gusanos Juan Pavón - UCM 2011-12 Ingeniería del Software 4 ¿Qué es el software? Pressman: 1. Instrucciones (programas de computadora) que cuando se ejecutan proporcionan la función y el rendimiento deseados 2. Estructuras de datos que permiten a los programas manipular adecuadamente la información, y 3. Documentos que describen la construcción y uso de programas Sommerville: Programas de ordenador y documentación asociada Los productos de software pueden ser • Genéricos: desarrollados para clientes muy diversos • Hecho a medida: para un cliente particular de acuerdo a su especificación Juan Pavón - UCM 2011-12 Ingeniería del Software 5 ¿Qué es la Ingeniería del Software? La Ingeniería de Software (IS) es una disciplina de ingeniería • Aplicación de teorías, métodos, herramientas para hacer cosas que funcionen: • Software que sea fiable y trabaje en máquinas reales • Teniendo en cuenta restricciones financieras, organizacionales y técnicas que comprende todos los aspectos de la producción de software • Desde la especificación inicial al mantenimiento del sistema • Administración y gestión del proceso de producción • Principios y metodologías para desarrollo y mantenimiento de sistemas de software IEEE 610-12 (Software Engineering) Aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación (funcionamiento) y mantenimiento del software Juan Pavón - UCM 2011-12 Ingeniería del Software 6 ¿Qué es la Ingeniería del Software? La IS es aplicar el sentido común al desarrollo de sistemas software [Navarro, UCM] ¿Qué es el sentido común? • Planificar antes de desarrollar • Diseñar antes de programar • Reutilizar diseños que funcionan y son mantenibles ... utilizando las herramientas apropiadas [Pavón, UCM] Juan Pavón - UCM 2011-12 Ingeniería del Software 7 Herramientas CASE Computer-Aided Software Engineering (CASE) Software que facilita la realización de actividades del proceso de desarrollo de software • Edición de diagramas • Comprobar la consistencia de los diagramas • Generación de documentación • Seguimiento de actividades del proyecto Upper-CASE Herramientas que ayudan en las actividades de captura de requisitos, análisis y diseño Lower-CASE Herramientas para la programación, depuración y pruebas Juan Pavón - UCM 2011-12 Ingeniería del Software 8 Ingeniería del Software e Ingeniería de Sistemas La Ingeniería de Sistemas se refiere a todos los aspectos del desarrollo de sistemas basados en computadora, tanto del hardware como del software y los procesos de diseño y distribución de sistemas La Ingeniería del Software es solo parte de este proceso Los ingenieros de sistemas se encargan de especificar el sistema, definir su arquitectura, integrar sus partes • Están menos relacionados con la ingeniería de los componentes del sistema (HW y SW) Al ser el software muchas veces la parte más importante del sistema, las técnicas de ingeniería del software se aplican en el proceso de ingeniería de sistemas Juan Pavón - UCM 2011-12 Ingeniería del Software 9 Ingeniería de Software y Ciencia de la Computación La Ciencia de la Computación se refiere a las teorías y los fundamentos subyacentes en los sistemas de computación La Ingeniería del Software trata los problemas prácticos del desarrollo de software Con las teorías de la ciencia de la computación no es suficiente para desarrollar software (al menos cuando el sistema tiene suficiente envergadura) Juan Pavón - UCM 2011-12 Ingeniería del Software 10 Relevancia de la IS Las economías de TODOS los países desarrollados dependen en gran medida del software Cada vez más sistemas son controlados por software Comunicaciones Seguridad Administración Fábricas Comercio Agricultura Etc. El gasto en la Ingeniería de Software, representa un alto porcentaje del PIB de los países desarrollados Juan Pavón - UCM 2011-12 Ingeniería del Software 11 Costes del software Los gastos del software dominan sobre los de sistema El HW es cada vez más barato Cuesta más el software que hay en un PC que el PC Cuesta más mantener el software que desarrollarlo En sistemas con una larga vida, los costes de mantenimiento llegan a multiplicar varias veces los costes de desarrollo Lo más caro en un proyecto son los desarrolladores La IS trata de mejorar el coste del desarrollo de software Juan Pavón - UCM 2011-12 Ingeniería del Software 12 ¿Cuáles son los costes de la IS? Coste del software Gastos de desarrollo Gastos de mantenimiento y evolución El coste varía dependiendo de: Tipo de sistema que se desarrolle y los requisitos de atributos del sistema como eficiencia y fiabilidad Modelo de desarrollo Generalmente, para el desarrollo del software 60% en desarrollo 40% en pruebas En software hecho a medida los gastos de evolución suelen ser mayores que los de desarrollo En software genérico muchas veces no se considera la evolución sino que cada nueva versión se trata como un nuevo producto (razones mercantiles) Juan Pavón - UCM 2011-12 Ingeniería del Software 13 Retos de la IS Sistemas heredados (legacy systems) Mantenimiento, actualización, integración Heterogeneidad (SW y HW) de sistemas distribuidos Integración y evolución Tiempos de desarrollo cada vez más cortos Y con menos recursos Proyectos web: 3 meses–3 personas–3 kilos Modas Métodos, lenguajes, ... Cultura de ingeniería Formalidad Existe una gran demanda de que exista formalidad en el proceso de desarrollo de software Juan Pavón - UCM 2011-12 Ingeniería del Software 14 IS: las 3 P Personas Producto Proceso Juan Pavón - UCM 2011-12 Ingeniería del Software 15 Producto: el software El software cada día es más caro, más grande, menos eficiente, menos robusto, … El hardware cada día es más barato, más pequeño, más eficiente, más robusto, … El software hoy: Distribuido: web, nube, … Multi-componente Multi-plataforma Ubicuidad Interfaces multi-modales Múltiples versiones Inteligente Juan Pavón - UCM 2011-12 Ingeniería del Software 16 Características del software El software se desarrolla, no se fabrica Los costes se centran en ingeniería, no en fabricación Los proyectos software no se pueden gestionar como procesos de fabricación El software no se estropea Pero hay que mantenerlo Juan Pavón - UCM 2011-12 Ingeniería del Software 17 Características del software Curva de fallos del hardware Juan Pavón - UCM 2011-12 Ingeniería del Software 18 Curva de fallos del software Características del software Reparación del software El software deteriorado no se puede reparar • ¿revisar miles de líneas de código? • ¿cambia una versión con el tiempo? Muchas veces las reparaciones dañan más al software El software debe estar bien diseñado para facilitar su evolución Juan Pavón - UCM 2011-12 Ingeniería del Software 19 Software bien diseñado Atributos del software bien diseñado Mantenible • Capaz de evolucionar según las necesidades de cambio de los clientes Seguro • Robusto, que no produce daños incluso bajo un fallo del sistema Eficiente • No desperdicia los recursos del sistema (memoria, procesador, disco) Amistoso • Buena interfaz Bien documentado Atributos en tensión: su importancia depende del sistema y del entorno en el que será utilizado El coste tiende a ser alto si se exige un alto nivel de alguna característica Juan Pavón - UCM 2011-12 Ingeniería del Software 20 Características del software Coste de la eficiencia del software Juan Pavón - UCM 2011-12 Ingeniería del Software 21 Coste Eficiencia Software bien diseñado Componentes software Ingeniería: creación y mantenimiento de una serie de componentes estándar con el fin de no reinventar la rueda Software bien diseñado debe favorecer la reutilización de código Las tecnologías OO y de componentes software reutilizables favorecen dicha reutilización Juan Pavón - UCM 2011-12 Ingeniería del Software 22 Distintos tipos de software Software de sistemas Programas escritos para servir a otros programas • Compiladores, Sistemas Operativos (SSOO), etc. Software de gestión Proceso de información comercial, accediendo a bases de datos que contienen dicha información • Gestión de nóminas, control de almacén, etc. Software de PC Procesadores de texto, hojas de cálculo, navegadores, etc. Software de ingeniería y científico Algoritmos numéricos • Programas CAD, simuladores, etc. Software empotrado (embedded systems) Controla productos y sistemas de mercados industriales y de consumo Reside en ROM Relacionado con el tiempo real Software de inteligencia artificial Problemas complejos • Sistemas expertos • Reconocimiento de patrones (voz, imágenes, etc.) • Agentes software Software en móviles Recursos limitados Juan Pavón - UCM 2011-12 Ingeniería del Software 23 De vuelta con los mitos del software Mitos del gestor Mito: Tenemos un manual de desarrollo de software, ¿qué más necesitamos? • Realidad: ¿Se entiende? ¿Se utiliza? ¿El personal tiene práctica en su aplicación? Mito: Disponemos de las herramientas de desarrollo más avanzadas, ya que compramos siempre los mejores equipos • Realidad: ¿Se invierte en herramientas CASE? ¿Y en entornos de desarrollo? ¿Se forma al personal en el uso de estas herramientas? Mito: Si fallamos en la planificación, podemos añadir más personal y adelantar el tiempo perdido • Realidad: En el proceso de software añadir gente puede retrasar más el proyecto. La gente debe añadirse de forma planificada y ordenada. Además si sacamos a gente de otros proyectos, en último término retrasaremos otros proyectos Juan Pavón - UCM 2011-12 Ingeniería del Software 24 De vuelta con los mitos del software Mitos del cliente Mito: Una declaración general de objetivos es suficiente para comenzar a escribir los programas, y podemos dar los detalles más adelante • Realidad: Una mala definición inicial conlleva trabajo inútil Mito: Los requisitos del proyecto cambian continuamente, pero los cambios pueden acomodarse fácilmente porque el software es flexible • Realidad: Es cierto que los requisitos cambian, pero el impacto del cambio varía en función del momento en que se introduzcan los cambios Juan Pavón - UCM 2011-12 Ingeniería del Software 25 De vuelta con los mitos del software Juan Pavón - UCM 2011-12 Ingeniería del Software 26 Impacto del cambio Momento Coste del cambio Definición 1x Desarrollo 1,5-6x Después entrega 60-100x De vuelta con los mitos del software Mitos de los desarrolladores Mito: Una vez que escribamos el programa y hagamos que funcione, nuestro trabajo ha terminado • Realidad: Entre el 50% y el 70% de todo el esfuerzo dedicado a un programa se realiza después de que se entregue al cliente por primera vez Mito: Hasta que no tenga el programa ejecutándose, no tengo forma de medir su calidad • Realidad: Revisiones Técnicas Formales durante el desarrollo de software. Mito: Lo último que se entrega al terminar el proyecto es el programa funcionando • Realidad: Software = programas + datos + documentos Juan Pavón - UCM 2011-12 Ingeniería del Software 27 Responsabilidad y ética profesional Confidencialidad De los demás empleados y de los clientes Competencia Reconocer los límites y capacidades para aceptar un trabajo Derechos de propiedad intelectual Patentes, copyright Trabajo de otros colegas Mal uso de los sistemas Juegos, virus, pirateo Juan Pavón - UCM 2011-12 Ingeniería del Software 28 Responsabilidad y ética profesional Código ético de ACM/IEEE Principios que deben guiar el comportamiento y decisiones de ingenieros software profesionales (incluyendo gestores, estudiantes y profesores) 1.Actuar en bien del interés público 2.Actuar en el mejor interés del cliente y el empleador, siendo consistente con el interés público 3.Asegurar que los productos y modificaciones reúnen los mejores estándares profesionales posibles 4.Mantener la integridad e independencia en el juicio profesional 5.Suscribir y promocionar un comportamiento ético en la gestión y mantenimiento del desarrollo de software 6.Colaborar en el avance de la integridad y la reputación de la profesión siendo consistente con el interés público 7.Ser justo y ayudar a los colegas 8.A lo largo de la vida, reciclarse en la práctica de la profesión y promocionar un comportamiento ético en la práctica de la profesión Juan Pavón - UCM 2011-12 Ingeniería del Software 29 Responsabilidad y ética profesional Dilemas en el ejercicio de la profesión Desacuerdo con los principios y política de los superiores El empleador actúa de manera no ética y libera un sistema crítico de seguridad sin haber acabado las pruebas del sistema Participación en el desarrollo de sistemas con fines contrarios a la propia moral Juan Pavón - UCM 2011-12 Ingeniería del Software 30 Conclusiones El desarrollo y mantenimiento de software: Personas, Producto, Proceso El software siempre evoluciona La IS trata de abordar estas cuestiones de forma rigurosa ¡ Cuidado con los mitos ! Juan Pavón - UCM 2011-12 Ingeniería del Software 31 Bibliografía R. Pressman: Ingeniería del Software - Un enfoque práctico, 7ª edición. McGraw-Hill, 2010 I. Sommerville: Ingeniería del Software, 7ª edición. Addison Wesley, 2006 Frederick P. Brooks, Jr., The Mythical Man-Month, Addison Wesley, 1975 (Anniversary edition 1995) Juan Pavón - UCM 2011-12 Ingeniería del Software 32 Temario/Tema 02 - Proceso de Desarrollo de Software.pdf Tema 02 – Proceso de desarrollo de software Ingeniería del Software Rubén Fuentes Fernández Dep. Ingeniería del Software e Inteligencia Artificial Facultad de Informática Universidad Complutense Madrid Trabajando con Antonio Navarro, Juan Pavón y Pablo Gervás Contenidos • El proceso de desarrollo de software – Introducción – Modelos de proceso • Modelo de madurez de capacidades del software Rubén Fuentes Fernández Ingeniería del Software 2 Objetivos • Entender qué es el proceso de desarrollo de software • Cuáles son los componentes que debe considerar un proceso de desarrollo de software • Modelos de proceso de desarrollo de software • Calidad del proceso de desarrollo de software Ingeniería del Software 3Rubén Fuentes Fernández INTRODUCCIÓN Rubén Fuentes Fernández Ingeniería del Software 4 El producto como base del proceso • La Ingeniería es el análisis, diseño, construcción y verificación de entidades técnicas (o sociales). • La entidad sobre la que trabaja caracteriza a la ingeniería: – Caminos, canales y puertos – Aeronaves – Buques – … Ingeniería del Software 5Rubén Fuentes Fernández Ingeniería del Software 6 Conceptos clave del proceso • Personas: los que trabajan • Producto: lo que se obtiene • Proyecto: la pauta a seguir para desarrollar un producto • Proceso: la pauta a seguir para desarrollar un proyecto Rubén Fuentes Fernández Ingeniería del Software 7 Una cena • Personas: Empleados de una empresa de catering • Producto: La cena que se sirve • Proyecto: La secuencia de acciones de servir una cena concreta • Proceso: Las instrucciones de la empresa sobre cómo se sirve una cena Rubén Fuentes Fernández Ingeniería del Software 8 Una gama de automóviles • Personas: Empleados de la marca • Producto: Los automóviles • Proyecto: Desarrollo de un modelo nuevo • Proceso: Las instrucciones de la empresa sobre cómo desarrollar un modelo nuevo Rubén Fuentes Fernández Ingeniería del Software 9 Software • Personas: Vosotros • Producto: ??? • Proyecto: ??? • Proceso: Asignatura de IS Rubén Fuentes Fernández Aspectos a considerar en la Ingeniería • Con independencia de la entidad debemos identificar y solucionar: – Problema a resolver – Características de la entidad – Forma de construir la entidad – Enfoque para resolver los errores cometidos durante el diseño y construcción de la entidad – Mantenimiento de la entidad frente a su evolución Rubén Fuentes Fernández Ingeniería del Software 10 Tecnología estratificada • La IS es una tecnología multicapa: – Capa de enfoque de calidad • Base de cualquier proceso de ingeniería • Mejores técnicas o buenas prácticas – Capa de proceso • Conjunto de actividades y resultados asociados que sirven para construir un producto software. – Capa de métodos • Un método ofrece pautas para: análisis de requisitos, diseño, construcción de programas, prueba, instalación y mantenimiento – Capa de herramientas Rubén Fuentes Fernández Ingeniería del Software 11 Objetivos de un proceso del software • Desarrollar, operar y mantener software de forma que: – Se apliquen principios y metodologías de ingeniería – Se construya software que satisfaga las necesidades del cliente • No sólo funcionales • También coste, fiabilidad y eficiencia – Se pueda sistematizar, disciplinar y cuantificar • Establecer pautas sobre las que orientar, reflexionar, aprender y mejorar Ingeniería del Software 12Rubén Fuentes Fernández Producto y fases genéricas • En IS, entidad = software • Soporte para el desarrollo de la entidad/soporte para la IS: modelo de proceso • Con independencia del modelo de proceso hay tres fases genéricas: – Fase de definición – Fase de desarrollo – Fase de mantenimiento Ingeniería del Software 13Rubén Fuentes Fernández Fase de definición • Centrada en el qué • Se identifican los requisitos del sistema y software: – Información a procesar – Función y rendimiento deseados – Comportamiento del sistema – Interfaces establecidas – Restricciones de diseño • Tareas principales: – Planificación del proyecto software – Ingeniería de sistemas o de información – Análisis de requisitos Ingeniería del Software 14Rubén Fuentes Fernández Fase de desarrollo • Centrada en el cómo • Se define cómo han de plasmarse los requisitos en el sistema: – Diseño de las estructuras de datos – Implementación de las funciones – Caracterización de las interfaces – Traducción del diseño a un lenguaje de programación – Pruebas • Tareas principales: – Diseño del software – Generación del código – Pruebas del software Rubén Fuentes Fernández Ingeniería del Software 15 Fase de mantenimiento • Centrada en el cambio. • Pueden producirse 4 tipos de cambio: – Corrección. Corregir los defectos – Adaptación. Modificaciones por cambio en el entorno externo – Mejora. Ampliar los requisitos originales, a petición del cliente – Prevención. Cambio para facilitar el cambio • En esta fase se vuelven a aplicar las fases de definición y desarrollo, pero sobre software ya existente. Ingeniería del Software 16Rubén Fuentes Fernández Fases, actividades y tareas • Las fases de un proceso del software se realizan mediante una serie de actividades. – Las actividades se pueden extender a lo largo de varias fases. – Ej. comunicación con el cliente, planificación, diseño e implementación del software • Las actividades a su vez se articulan mediante acciones. – Una acción es un conjunto de tareas relacionadas que produce un producto del trabajo o artefacto. – Ej. la actividad diseño e implementación puede incluir una acción de análisis, que puede descomponerse en las tareas realizar diagramas casos de uso, realizar diagramas actividades, realizar diagramas clases análisis… Ingeniería del Software 17Rubén Fuentes Fernández Actividades de protección • Las actividades de creación de artefactos se complementan con las actividades de soporte o protección. – No crean software – Mejoran su calidad – Facilitan su desarrollo • Se aplican a lo largo de todo el proceso del software. • Ejemplos de actividades de soporte: – Documentación – Gestión de configuración – Seguimiento y control del proyecto de software – Revisiones técnicas formales – Garantía de la calidad del software – Gestión de reutilización – Mediciones – Gestión de riesgos Rubén Fuentes Fernández Ingeniería del Software 18 Proceso del software • Conjunto estructurado de actividades y resultados asociados requeridos para desarrollar un sistema de software – Especificación: establecer los requisitos y restricciones del sistema – Diseño: producir un modelo del sistema – Implementación: construcción del sistema de software – Validación: verificar que el sistema cumple con las especificaciones requeridas – Instalación: entregar el sistema al usuario y asegurar su operacionalidad – Evolución y mantenimiento: cambiar/adaptar el software según las demandas; reparar fallos en el sistema cuando sean descubiertos • Debe estar explícitamente modelado si va a ser bien administrado. Rubén Fuentes Fernández Ingeniería del Software 19 Modelos de proceso • Un modelo de proceso del software (o paradigma de IS) es una representación abstracta de un proceso del software. – Plantilla, patrón o marco que define el proceso a través del cual se crea software • Los modelos de proceso tienen en cuenta, en mayor o menor medida, las actividades estructurales comunes a todos los procesos de construcción de software. • Un modelo de proceso ha de definir sus actividades estructurales así como su flujo de realización. Ingeniería del Software 20Rubén Fuentes Fernández Adaptación de los modelos de proceso • Los modelos de proceso no son fijos para una organización o tipo de proyecto. • Una organización puede variar su modelo de proceso para cada proyecto según: – La naturaleza del proyecto – La naturaleza de la aplicación – Los métodos y herramientas a utilizar – Los controles y entregas requeridos • Los modelos de proceso se ajustan a los proyectos concretos variando el conjunto de tareas en que se dividen las actividades estructurales. Ingeniería del Software 21Rubén Fuentes Fernández Características para seleccionar el proceso • Entendible • Visibilidad – Grado en que las actividades del proceso proporcionan resultados • Soportable por herramientas CASE • Aceptabilidad – Grado en que los desarrolladores aceptan y usan el proceso • Fiabilidad – Capacidad de evitar o detectar errores antes de que sean defectos • Robustez – Continuidad del proceso a pesar de los problemas • Mantenible – Capacidad de evolución para adaptarse • Rapidez – Velocidad con que el proceso proporciona un sistema a partir de una especificación Rubén Fuentes Fernández Ingeniería del Software 22 MODELOS DE PROCESO QUE SÍ SON… Rubén Fuentes Fernández Ingeniería del Software 23 Principales modelos de proceso del software • Modelo en cascada – Separa en distintas fases de especificación y desarrollo que se realizan en secuencia lineal. • Prototipado – Un prototipo sirve de modelo para la construcción del sistema final. • Desarrollo evolutivo – La especificación y el desarrollo están intercalados. • Transformación formal – Un modelo matemático del sistema se transforma formalmente en la implementación. • Desarrollo basado en reutilización – El sistema es ensamblado a partir de componentes existentes. Rubén Fuentes Fernández Ingeniería del Software 24 MODELOS EN CASCADA Modelos de proceso que sí son… Rubén Fuentes Fernández Ingeniería del Software 25 Modelo en cascada (waterfall) (1/2) Rubén Fuentes Fernández Ingeniería del Software 26 Análisis Diseño Implementación Pruebas e integración Instalación Conceptualización Modelo en cascada (2/2) • Es el modelo de proceso clásico (desde los 1970s) • Es sencillo y fácil de entender – Basado en la mentalidad de línea de ensamblaje • El proyecto pasa a través de una serie de fases – Al final de cada fase se revisan las tareas de trabajo y productos • Para poder pasar a la siguiente fase se tienen que haber conseguido todos los objetivos de la fase anterior. – No hay apenas comunicación entre las fases • Se supone que sólo se baja en la cascada... – ... pero también se puede subir (aunque difícilmente) Rubén Fuentes Fernández Ingeniería del Software 27 Modelo en cascada: fases • Conceptualización – Se determina la arquitectura de la solución – Arquitectura = división del sistema en subsistemas + comunicación • Análisis de requisitos – Básicamente se definen los requisitos funcionales y de rendimiento • Diseño – Representación de la aplicación que sirve de guía a la implementación • Implementación – Transforma el diseño en código • Prueba – Validación e integración del software y de los sistemas • Instalación y comprobación – Se instala al cliente, el cual comprueba la corrección de la aplicación Rubén Fuentes Fernández Ingeniería del Software 28 Modelo en cascada: documentos Actividad Documentos producidos Análisis de Requisitos Documento de Requisitos Definición de Requisitos Documento de Requisitos Especificación del Sistema Especificación Funcional y Plan de Pruebas de Aceptación Diseño Arquitectural Especificación de la Arquitectura y Plan de Pruebas del Sistema Diseño de Interfaces Especificación de Interfaces y Plan de Pruebas de Integración Diseño detallado Especificación del Diseño y Plan de Pruebas de Unidades Codificación Código de Programa Prueba de Unidades Informe de Prueba de Unidades Prueba de Módulos Informe de Prueba de Módulos Prueba de Integración Informe de Prueba de Integración y Manual de Usuario Final Prueba del Sistema Informe de Prueba del Sistema Prueba de Aceptación Sistema Final y Documentación Rubén Fuentes Fernández Ingeniería del Software 29 Variantes del modelo en cascada • Modelo Sashimi – Solapamientos de fases • Sommerville • Pressman (lineal secuencial) • Modelo en V • Cascada con subproyectos Rubén Fuentes Fernández Ingeniería del Software 30 Modelo en cascada: evaluación • Ventajas: – Muy probado – Sencillo • Sirve cuando el personal está poco cualificado – Aplicable cuando el problema es estable y cuando se trabaja con técnicas conocidas • Inconvenientes: – Poco realista – Supone una especificación de requisitos estable – Baja visibilidad • No se ve un producto hasta muy tarde en el proceso – Un error grave en las últimas fases puede ser letal – Si no hay solapamientos entre fases puede haber bloqueos – Las revisiones de proyectos de gran complejidad son muy difíciles Ingeniería del Software 31Rubén Fuentes Fernández PROTOTIPADO Modelos de proceso que sí son… Rubén Fuentes Fernández Ingeniería del Software 32 Modelo de construcción de prototipos Rubén Fuentes Fernández Ingeniería del Software 33 Escuchar al cliente El cliente evalúa el prototipo Construir/ revisar prototipo Modelo de construcción de prototipos • Comienza con la recolección de requisitos – Clientes y desarrolladores definen los objetivos globales del software. – Además, identifican los requisitos conocidos y aquellos que deben ser más definidos. • Aparece un diseño rápido centrado en los aspectos visibles para el cliente (ej. información de E/S) – El diseño rápido lleva a la construcción de un prototipo. • El prototipo lo evalúa el cliente y lo utiliza para refinar los requisitos • El proceso se itera... ... desechando el primer prototipo Rubén Fuentes Fernández Ingeniería del Software 34 Rubén Fuentes Fernández Ingeniería del Software 35 Modelo de construcción de prototipos • Ventajas: – Permite identificar los requisitos incrementalmente – Permite probar alternativas a los desarrolladores – Tiene una alta visibilidad tanto clientes como desarrolladores ven resultados rápidamente • Inconvenientes: – El cliente no entiende porque hay que desechar el primer prototipo • Si simplemente ha pedido unos ajustes...(¿?) – Riesgo de software de baja calidad • Compromisos de implementación para que el prototipo funcione rápidamente y que al final son parte integral del sistema • Ej. utilizar un sistema operativo o lenguaje de programación inadecuado pero que ya es conocido DESARROLLO EVOLUTIVO Modelos de proceso que sí son… Rubén Fuentes Fernández Ingeniería del Software 36 Modelos evolutivos • Características: – Gestionan bien la naturaleza evolutiva del software – Son iterativos construyen versiones del software cada vez más completas • Se adaptan bien a: – Los cambios de requisitos del producto – Fechas de entrega estrictas poco realistas – Especificaciones parciales del producto Rubén Fuentes Fernández Ingeniería del Software 37 Modelos evolutivos Rubén Fuentes Fernández Ingeniería del Software 38 Descripción del sistema Versión Inicial Versiones Intermedias Versión Final Especificación Desarrollo Validación Actividades Concurrentes Modelos evolutivos incremental • Fusiona el modelo lineal secuencial con el de construcción de prototipos – El modelo lineal secuencial es una variante del modelo en cascada Rubén Fuentes Fernández Ingeniería del Software 39 A D C P 1er incremento A D C P 2º incremento ..................... N-ésimo incremento Rubén Fuentes Fernández Ingeniería del Software 40 Modelos evolutivos incremental • Cada secuencia lineal produce un incremento del software. – Un incremento es un producto operacional de una parte del sistema. • El primer incremento suele ser un producto esencial o núcleo. – Requisitos básicos – Muchas funciones suplementarias se dejan para después • Se evalúa (ej. por el cliente) el producto entregado. – Como resultado se desarrolla un plan para el incremento siguiente • Se itera. – Hasta elaborar el producto completo Rubén Fuentes Fernández Ingeniería del Software 41 Modelos evolutivos incremental • Ventajas – Es interactivo • Con cada incremento se entrega al cliente un producto operacional que puede evaluar – Personal • Permite variar el personal asignado a cada iteración – Gestión riesgos técnicos • Ej. disponibilidad de hardware específico • Inconvenientes – La primera iteración puede plantear los mismos problemas que en un modelo lineal secuencial Modelo evolutivo incremental vs Prototipos • Discusión: aparte de las fases de desarrollo concretas, ¿qué diferencia esencial hay entre el modelo de construcción de prototipos y el incremental? Rubén Fuentes Fernández Ingeniería del Software 42 Modelos evolutivos espiral • Original: Boehm, 1988 – Revisado en el IEEE Std. 1490‐1998 • Se centra en tratar las áreas de mayor riesgo en un proyecto. – Ej. requisitos y arquitectura • El proyecto se compone de varios mini‐proyectos que tratan una o varias áreas de riesgo. • Múltiples iteraciones sobre varias regiones de tareas – Vuelta a la espiral ciclo – Número de iteraciones predeterminadas o calculadas dinámicamente • Se pueden variar las actividades de desarrollo familia de modelos de procesos Rubén Fuentes Fernández Ingeniería del Software 43 Modelos evolutivos espiral de Boehm Rubén Fuentes Fernández Ingeniería del Software 44 Desarrollar entregas de la iteración y verificar que son correctas Determinar objetivos, alternativas y restricciones Identificar y resolver riesgos Análisis de Riesgos Análisis de Riesgos Análisis de Riesgos Análisis de Riesgos Planificar la siguiente iteración Prototipo OperacionalPrototipo 3Prototipo 2Proto tipo 1 Plan de requisitos Plan del ciclo de vida REVISIÓN Plan de Desarrollo Plan de Integración y Prueba Concepto de Operación Simulaciones, modelos y benchmarks Requisitos SW Validación de Requisitos Diseño V &V Servicio Pruebas de Aceptación Pruebas Integración Pruebas unitarias Codificación Diseño Detallado Diseño del Producto Evaluar alternativas Entrega Rubén Fuentes Fernández Ingeniería del Software 45 Modelos evolutivos espiral • El IEEE Std. 1490 especifica cuatro ciclos prototípicos: – Prueba de concepto • Requisitos generales – Primer desarrollo • Requisitos del sistema – Segundo desarrollo • Requisitos de los subsistemas – Ciclo final • Requisitos de unidades • Realización de pruebas de aceptación • Las regiones de tareas son asimilables a las fases del modelo en cascada. Modelos evolutivos – espiral IEEE Std. 1490: regiones (1/2) • Identificar requisitos – En función del ciclo: • Requisitos de negocio • Requisitos del sistema • Requisitos de subsistemas • Requisitos de unidad • Diseñar – En función del ciclo: • Diseño conceptual • Diseño lógico • Diseño físico • Diseño final Rubén Fuentes Fernández Ingeniería del Software 46 Rubén Fuentes Fernández Ingeniería del Software 47 Modelos evolutivos – espiral IEEE Std. 1490: regiones (2/2) • Construir – En función del ciclo: • Prueba de concepto (prototipo) • Primer desarrollo • Segundo desarrollo • Desarrollo final • Evaluar – En función del ciclo se hace: • Análisis de riesgo • Prueba del concepto • Evaluación de los primeros desarrollos • Prueba del desarrollo final Rubén Fuentes Fernández Ingeniería del Software 48 Modelos evolutivos espiral: evaluación • Ventajas – Enfoque realista – Gestión explícita de riesgos – Centra su atención en la reutilización de componentes y la eliminación de errores en información descubiertos en las fases iniciales – Los objetivos de calidad son el primer objetivo – Integra desarrollo con mantenimiento • Inconvenientes – Convencer cliente enfoque controlable – Requiere de experiencia en la identificación de riesgos – Requiere refinamiento para uso generalizado Ejemplos de procesos evolutivos modernos • 3 modelos de proceso concretos – Modelos pesados • Proceso Unificado – Modelos ágiles • eXtreme Programming • Scrum Rubén Fuentes Fernández Ingeniería del Software 49 PROCESO UNIFICADO DE DESARROLLO Rubén Fuentes Fernández Ingeniería del Software 50 Proceso unificado de desarrollo • El Proceso Unificado (Unified Process, UP) es creado por los autores de UML. – Booch: método Booch – Rumbaugh: OMT – Jacobson: proceso Objectory • También es conocido como RUP (Rational Unified Process) en su versión comercial. Rubén Fuentes Fernández Ingeniería del Software 51 Proceso unificado de desarrollo: claves • Es un proceso de desarrollo de software: – Dirigido por casos de uso – Centrado en la arquitectura – Iterativo e incremental • Utiliza UML para definir los modelos del sistema software. • El sistema software en construcción está formado por: – componentes software – interconectados a través de interfaces Rubén Fuentes Fernández Ingeniería del Software 52 Proceso de desarrollo de SW Requisitos de usuario Sistema SW Los requisitos cambian y el sistema SW evoluciona Proceso unificado de desarrollo • Discusión: ¿todo modelo iterativo es incremental? ¿Y todo incremental es iterativo? Rubén Fuentes Fernández Ingeniería del Software 53 Proceso unificado de desarrollo: mapa Rubén Fuentes Fernández Ingeniería del Software 54 Gestión Entorno Modelo de negocio Implementación Pruebas Análisis & Diseño Iteración(es) preliminares Iter. #1 Fases Flujos de trabajo de proceso Iteraciones Flujos de trabajo de soporte Iter. #2 Iter. #n Iter. #n+1 Iter. #n+2 Iter. #m Iter. #m+1 Implantación Gestión de configuración Requisitos Elaboración TransiciónConcepción Construcción Proceso unificado de desarrollo: iteración Rubén Fuentes Fernández Ingeniería del Software 55 Análisis Requisitos Implementación Diseño Prueba Proceso unificado de desarrollo: fase • Cada vuelta en la espiral se denomina iteración • La agrupación de iteraciones se denomina fase – Inicio – Elaboración – Construcción – Transición Rubén Fuentes Fernández Ingeniería del Software 56 Proceso unificado de desarrollo: fases • Fase de inicio – Se desarrolla una descripción del producto final • Fase de elaboración: – Se especifican los casos de uso – Se diseña la arquitectura del sistema • Fase de construcción – Se crea el producto • Fase de transición – Periodo durante el cual el producto se entrega a clientes • No todos los flujos de trabajo tienen el mismo peso dentro de cada fase Rubén Fuentes Fernández Ingeniería del Software 57 Proceso unificado de desarrollo • Actividad en el tiempo Rubén Fuentes Fernández Ingeniería del Software 58 Descubrimiento Invención Foco Implementación Proceso unificado de desarrollo: ciclo • Las agrupaciones de fases se denominan ciclo. • Cada ciclo concluye con una versión del producto. • Discusión: ¿es lo mismo un ciclo UP que un ciclo del modelo en espiral? Rubén Fuentes Fernández Ingeniería del Software 59 Proceso unificado de desarrollo: evaluación • Ventajas – Modelo de proceso racional – Tecnologías de componentes • Inconvenientes – Muy ligado al método Rubén Fuentes Fernández Ingeniería del Software 60 DESARROLLO ÁGIL Rubén Fuentes Fernández Ingeniería del Software 61 Modelos de proceso ágil: supuestos • Los procesos ágiles parten de 3 supuestos clave: – Es difícil predecir qué requisitos software persistirán y cuáles cambiarán. • También es difícil predecir las prioridades del cliente. – El diseño y el desarrollo de software están intercalados. • Por tanto, se deben realizar de manera conjunta, de forma que el diseño se pruebe según se crea. • Es difícil predecir cuanto diseño es necesario antes de construir el código que lo implementa. – El análisis, el diseño y la construcción no son predecibles desde el punto de vista de la planificación, lo que sería deseable. Ingeniería del Software 62Rubén Fuentes Fernández Modelos de proceso ágil: características • Un proceso ágil tiene 3 características clave: – Es adaptable de forma incremental. – Necesita retroalimentación del cliente. – Se basa en la entrega continua de incrementos. • Teóricamente, la agilidad se puede aplicar a cualquier proceso de software. – En cualquier caso, surgen modelos de proceso propios del desarrollo ágil. Ingeniería del Software 63Rubén Fuentes Fernández Rubén Fuentes Fernández Ingeniería del Software 64 eXtreme Programming • El eXtreme Programming (XP) es un modelo de proceso propuesto por K. Beck: “Un modo ligero, eficiente, de bajo riesgo, flexible, predecible, científico y divertido de producir software” • Características: – Alta visibilidad debido a ciclos muy cortos – Planificación incremental – Se adapta a cambios de negocio eXtreme Programming: claves • Basado en pruebas automatizadas escritas por desarrolladores y clientes • Alta comunicación • Diseño evolutivo • Colaboración entre programadores • Busca equilibrio entre las necesidades a corto plazo de los programadores y las de largo plazo del proyecto Rubén Fuentes Fernández Ingeniería del Software 65 eXtreme Programming: estructura • La estructura del proceso, si se puede considerar que la hay, es un poco atípica Rubén Fuentes Fernández Ingeniería del Software 66 Actividades en XP Prueba Evaluación DiseñoCodificación Rubén Fuentes Fernández Ingeniería del Software 67 eXtreme Programming: prácticas • Las 4 actividades de XP están soportadas por 12 prácticas: – El juego de planificación – Pequeñas entregas – Metáfora – Diseño simple – Prueba – Refactorización – Programación en pareja – Propiedad colectiva – Integración continua – Semana de cuarenta horas – Cliente en el lugar de desarrollo – Codificación estándar Rubén Fuentes Fernández Ingeniería del Software 68 eXtreme Programming: evaluación • Ventajas: – Bueno para especificaciones cambiantes – Fundamentación práctica • Inconvenientes: – Poco probado – Poco compatible con especificaciones/diseños totales – Solo funciona con equipos pequeños (hasta 10 personas) • Esta evaluación es extensible al resto de procesos ágiles. SCRUM • SCRUM (melé) es un modelo de proceso desarrollado por J. Sutherland a principios de los 90, y revisado posteriormente por Schwaber y Beedle. • Se basa en: – Equipos de trabajo organizados para maximizar la comunicación y minimizar los gastos – Proceso adaptable a cambios técnicos y de negocio para asegurar el mejor producto – Incrementos frecuentes de software – Trabajo y equipo divididos en paquetes de bajo acoplamiento – Capacidad de construir un producto cuando se requiera Ingeniería del Software 69Rubén Fuentes Fernández SCRUM: actividades • El proceso incluye actividades clásicas: – Requisitos – Análisis – Diseño – Evolución – Entrega • Dentro de cada actividad las tareas se ajustan a patrones de proceso. – Un patrón de proceso es un conjunto de tareas. • En general, SCRUM se basa en cuatro patrones de proceso para organizar las actividades. Rubén Fuentes Fernández Ingeniería del Software 70 SCRUM: patrones de proceso Ingeniería del Software 71Rubén Fuentes Fernández SCRUM: patrones de proceso (1/2) • Product backlog (trabajo acumulado) – Lista de requisitos priorizados que puede actualizarse en cualquier momento, salvo en el propio sprint • Sprint – Trabajo requerido para satisfacer un requisito definido – 30 días normalmente Ingeniería del Software 72Rubén Fuentes Fernández SCRUM: patrones de proceso (2/2) • SCRUM – Reunión diaria corta (15”) centrada en: • ¿Qué hiciste desde la última reunión? • ¿Tienes algún obstáculo? • ¿Qué harás antes de la próxima reunión? – Un maestro de SCRUM preside la reunión y evalúa las respuestas de cada persona. • Demostración – Se entrega el incremento al cliente. Ingeniería del Software 73Rubén Fuentes Fernández TRANSFORMACIONES FORMALES Modelos de proceso que sí son… Rubén Fuentes Fernández Ingeniería del Software 74 Desarrollo formal de sistemas • Se basa en la transformación de una especificación formal a lo largo de varias representaciones hasta llegar a un programa ejecutable. • Las transformaciones preservan la corrección. – Permiten comprobar fácilmente que el programa es conforme a la especificación. Rubén Fuentes Fernández Ingeniería del Software 75 Rubén Fuentes Fernández Ingeniería del Software 76 Desarrollo formal de sistemas • Transformación formal T1 T2 T3 T4 Especificación formal R1 R2 R3 Programa ejecutable Pruebas de corrección de la transformación P1 P2 P3 P4 Transformaciones Desarrollo formal de sistemas: evaluación • Problemas – Hace falta una formación especializada para aplicar la técnica. – Muchos aspectos de los sistemas reales son difíciles de especificar formalmente. • Interfaz de usuario • Requisitos no funcionales • Aplicabilidad – Sistemas críticos en los que la seguridad y fiabilidad deben poder asegurarse antes de poner el sistema en operación. Rubén Fuentes Fernández Ingeniería del Software 77 DESARROLLO BASADO EN REUTILIZACIÓN Modelos de proceso que sí son… Rubén Fuentes Fernández Ingeniería del Software 78 Componentes • Una interfaz es una colección de operaciones que son utilizadas para especificar un servicio de una clase o de un componente. • Un componente es una parte física y reemplazable de un sistema que se ajusta a, y proporciona la realización de, un conjunto de interfaces. • Un sistema software basado en componentes se modela y construye en base a componentes software interconectados a través de interfaces bien definidas. Ingeniería del Software 79Rubén Fuentes Fernández Rubén Fuentes Fernández Ingeniería del Software 80 Modelos evolutivos ensamblaje de componentes Planificación Análisis de riesgos Evaluación por parte del cliente Ingeniería, construcción y entrega Comunicación con el cliente Identificar componentes candidatos Buscar componentes en biblioteca Extraer componentes disponibles Construir componentes que falten Añadir componentes a biblioteca Construir iteración N del sistema Es un ejemplo de este tipo de modelos Rubén Fuentes Fernández Ingeniería del Software 81 Modelos evolutivos ensamblaje de componentes • El modelo de ensamblaje de componentes es un espiral de Boston adaptado al uso de componentes software reutilizables. • Ventajas – Componentes • Inconvenientes – Tamaño biblioteca • Cómo encontrar los componentes adecuados • Realmente todos los procesos vistos pueden hacer uso de componentes. SELECCIÓN DE PROCESOS Rubén Fuentes Fernández Ingeniería del Software 82 Rubén Fuentes Fernández Visibilidad de Procesos • Los sistemas de software son intangibles por lo que los administradores necesitan documentación para identificar el progreso en el desarrollo. • Esto puede causar problemas: – El tiempo planeado para entrega de resultados puede no coincidir con el tiempo necesario para completar una actividad. – La necesidad de producir documentos restringe la iteración entre procesos. – El tiempo para revisar y aprobar documentos es significativo. • El modelo de cascada es aún el modelo basado en resultados más utilizado. Ingeniería del Software 83 Rubén Fuentes Fernández Visibilidad de Procesos Modelo de Proceso Visibilidad del Proceso Modelo de Cascada Buena visibilidad, cada actividad produce un documento o resultado Desarrollo Evolutivo Visibilidad pobre, muy caro al producir documentos en cada iteración Modelos Formales Buena visibilidad, en cada fase deben producirse documentos Desarrollo orientado a la reutilización Visibilidad moderada. Importante contar con documentación de componentes reutilizables Modelo de Espiral Buena visibilidad, cada segmento y cada anillo del espiral debe producir un documento Ingeniería del Software 84 ¿Qué modelo utilizar? • Para sistemas bien conocidos se puede utilizar el modelo en cascada. – La fase de análisis de riesgos debe ser relativamente fácil. • Con requisitos estables y sistemas de seguridad críticos, se recomienda utilizar modelos formales. • Con especificaciones incompletas, el modelo de prototipado ayuda a identificarlos y va produciendo un sistema funcional. • Pueden utilizarse modelos híbridos en distintas partes del desarrollo. Rubén Fuentes Fernández Ingeniería del Software 85 MADUREZ DEL PROCESO SOFTWARE DE UNA ORGANIZACIÓN Rubén Fuentes Fernández Ingeniería del Software 86 Rubén Fuentes Fernández Ingeniería del Software 87 Madurez del proceso software • La madurez del proceso software es la corrección en la aplicación de un proceso de software. • El Instituto de Ingeniería del Software (SEI) ha desarrollado el Modelo de Madurez del Software (SW CMM) para identificar este nivel. • El CMM identifica una serie de Áreas Clave del Proceso (ACPs). – Una ACP es básicamente una actividad de IS. – Las ACPs han de aparecer en la aplicación del proceso. • Dependiendo de la ejecución del proceso, las ACPs se encuentran en distintos niveles. • El nivel de las ACPs determina el nivel de madurez de la organización. Rubén Fuentes Fernández Ingeniería del Software 88 CMM • Áreas clave del proceso P r o ce s s c h a n g e m a n a g em e n t T e c h n o l o g y c h a n g e m a n a g em e n t D e f e c t p r e v e n t io n S o f tw a re q u a l it y m a n a g em e n t Q u a nt it a t iv e p r o ce s s m a n a g em e n t P e e r r e v ie w s I n t e r g ro u p c o o r d in at io n S o f tw a r e p r o d u ct e n g i n e e r i n g I n t e g r a t e d s o f tw ar e m a n a g e m e n t T r a i n i n g p r o g r a m m e O r g a n i z a ti o n p r oc e s s d e f in it io n O r g a n i z a ti o n p r oc e s s f o c u s S o f tw a r e c o n f i g u ra t io n m a n a g em e n t S o f tw a r e q u a l it y a s s u r a n c e S o f tw a r e s u b c o n tr a c t m a n a g em e n t S o f tw a r e p ro je c t tr a c k i n g a n d o v e r s ig h t S o f tw a r e p ro je c t p l a n n in g R e q u ir e m e n ts m a n a g e m e n t I n it i a l R e p e a t a b l e D e f i n e d M a n a g ed O p t i m i zi n g CMM: niveles (1/3) • Nivel 1: Inicial – El proceso de software se caracteriza según el caso. – Se definen poco los procesos. – El éxito depende del esfuerzo individual. • Nivel 2: Repetible – Nivel 1 – Se incluye seguimiento del coste, de la planificación y de la funcionalidad. – Se repiten técnicas de proyectos anteriores con buenos resultados. – Las ACPs son: • Planificación del proyecto de software • Seguimiento y supervisión del proyecto de software • Gestión de requisitos • Gestión de la configuración software (GCS) • Garantía de calidad del software (SQA) • Gestión de la subcontratación Rubén Fuentes Fernández Ingeniería del Software 89 Rubén Fuentes Fernández Ingeniería del Software 90 CMM: niveles (2/3) • Nivel 3: Definido – Nivel 2 – Las actividades se documentan, estandarizan e integran en un proceso a nivel organización. – Existe un proceso documentado. – Las ACPs son: • Definición y enfoque del proceso de la organización • Programa de formación • Revisiones periódicas • Coordinación entre grupos • Ingeniería de productos software • Gestión de integración del software Rubén Fuentes Fernández Ingeniería del Software 91 CMM: niveles (3/3) • Nivel 4: Gestionado – Nivel 3 – Se recopilan medidas del proceso del software y de la calidad del producto. – Estas medidas sirven para gestionar el proceso. – Las ACPs son: • Gestión de la calidad del software • Gestión cuantitativa del software • Nivel 5: Optimización – Nivel 4 – En base a la experiencia y métricas se optimiza el proceso. – Las ACPs son: • Gestión de cambios del proceso • Gestión de cambios de tecnología • Prevención de defectos Rubén Fuentes Fernández Ingeniería del Software 92 CMM: niveles • Un nivel razonable es el definido (nivel 3). • Un nivel deseable es optimización (nivel 5). • Con independencia del CMM, ACPs mínimas: – Planificación del proyecto – Seguimiento y supervisión del proyecto – Gestión de requisitos – GCS – SQA – Definición del proceso – Revisiones periódicas – Coordinación entre grupos CMM • Datos Agosto 2000 – Inicial 34,9% – Repetible 38,2% – Definido 18,5% – Gestionado 5,5% – Optimizado 2,9% • Resultados de 901 empresas desde 1996 Rubén Fuentes Fernández Ingeniería del Software 93 CONCLUSIONES Rubén Fuentes Fernández Ingeniería del Software 94 Rubén Fuentes Fernández Ingeniería del Software 95 Conclusiones • La IS es una tecnología multicapa. • La IS es una ingeniería. • El proceso del software es un conjunto estructurado de actividades requeridas para desarrollar un sistema de software. – Varían dependiendo de la organización y el tipo de sistema a desarrollar. • El proceso debe estar explícitamente modelado si va a ser bien administrado. • En IS hay tres fases genéricas. – Estas tres fases están presentes en todos los modelos de proceso. Glosario • ACP = Área Clave de Proceso • CASE = Computer‐Aided Software Engineering • GCS = Gestión de Configuración Software • IS = Ingeniería del Software • RUP = Rational Unified Process • SEI = Software Engineering Institute • SQA = Software Quality Assurance • SW CMM = Software Capability Maturity Model • UML = Unified Modelling Language • UP = Unified Process • XP = eXtreme Programming Ingeniería del Software 96Rubén Fuentes Fernández Referencias • R. Pressman: Ingeniería del Software. Un enfoque práctico, 7ª edición. McGraw‐Hill, 2010. – Modelos de proceso pp. 17‐46 – SW CMM pp. 21‐25 • I. Sommerville: Ingeniería del Software, 7ª edición. Addison Wesley, 2007. – Modelos de proceso pp. 42‐67 – SW CMM pp. 557‐575 • Proceso unificado de Rational – Jacobson, Krutchen • SW CMM – http://www.sei.cmu.edu/cmm/obtain.cmm.html Ingeniería del Software 97Rubén Fuentes Fernández Temario/Tema 03 - Ingeniería de Requisitos.pdf Tema 03 – Ingeniería de requisitos Ingeniería del Software Rubén Fuentes Fernández Dep. Ingeniería del Software e Inteligencia Artificial Facultad de Informática Universidad Complutense Madrid Trabajando con Antonio Navarro, Juan Pavón y Pablo Gervás Contenidos • Introducción • Tipología de requisitos • El proceso de Ingeniería de Requisitos – Casos de uso – FAST • IEEE Std. 830‐1998 Rubén Fuentes Fernández Ingeniería del Software 2 Objetivos • Entender las dificultades de capturar las necesidades del cliente • Determinar qué aspectos clave hay que capturar en los requisitos • Proporcionar pautas para el proceso de captura • Examinar guías de documentación de requisitos Ingeniería del Software 3Rubén Fuentes Fernández INTRODUCCIÓN Rubén Fuentes Fernández Ingeniería del Software 4 El contexto del sistema • Entender la naturaleza de un problema es por lo general algo difícil. – Implica una interacción entre el grupo desarrollador y el contratante. – Estos grupos tienen diferentes perspectivas, y una idea imprecisa de qué información es relevante y cómo transmitirla. • Un interesado (stakeholder) es cualquier persona que puede tener influencia directa o indirecta sobre los requisitos: – Clientes quien contrata o representa a la organización – Usuarios quien utilizará el sistema – Otros ej. expertos externos Rubén Fuentes Fernández Ingeniería del Software 5 Dificultades en la captura de requisitos • Un sistema tiene muchos usuarios y ninguno tiene una visión de conjunto. • Distintos interesados pueden tener distintos requisitos. • Influencia de factores políticos. • Entorno de negocio dinámico del sistema informático. • Los clientes no saben qué partes del trabajo pueden transformarse en software. • Los interesados pueden desconocer lo que esperan del sistema informático. • Los interesados no saben cómo hacer más eficiente la operación en su conjunto. • Los interesados no saben detallar lo que saben de forma precisa. • Es posible que los ingenieros de requisitos no conozcan el dominio del sistema, familiar para los interesados. Rubén Fuentes Fernández Ingeniería del Software 6 Requisitos • Los requisitos son una descripción de los servicios y restricciones del sistema a construir. • La Ingeniería de Requisitos es el proceso que permite identificar dichos requisitos. – Sistemáticamente – De una forma apropiada para el proceso de desarrollo • Discusión con el cliente • Punto de partida del resto de fases Ingeniería del Software 7Rubén Fuentes Fernández Tipos de requisitos • Requisitos de usuario – Describen los servicios que el sistema debe proporcionar y las restricciones bajo las que debe operar. – Ej. el sistema debe hacer préstamos • Requisitos de sistema – Determinan los servicios del sistema y las restricciones en detalle. – Sirven como contrato. – Pueden ser funcionales, no funcionales y de dominio. – Ej. función préstamo; entrada: código socio, código ejemplar; salida: fecha devolución; ... • Son los mismos, pero a distinto nivel de detalle. – Ambos se describen con lenguaje natural, diagramas y otros recursos. Rubén Fuentes Fernández Ingeniería del Software 8 Requisitos funcionales vs no funcionales • Los requisitos funcionales describen: – Los servicios que proporciona el sistema (funciones). – La respuesta del sistema ante determinadas entradas. – El comportamiento del sistema en situaciones particulares. – En algunos casos, también determinan lo que no debería hacer el sistema. • Los requisitos no funcionales describen: – Restricciones de los servicios o funciones que ofrece el sistema. Rubén Fuentes Fernández Ingeniería del Software 9 Requisitos – función préstamo • Requisitos funcionales – prioridad: alta – estabilidad: alta – descripción: presta un ejemplar a un socio de la biblioteca – entrada: código socio, código ejemplar – salida: fecha devolución – origen: operador, consola – destino: sistema – necesita: base de datos de socios y ejemplares – acción: prestar ejemplar – precondición: usuario y ejemplar dados de alta, usuario sin préstamos pendientes, usuario sin límite de préstamos alcanzado – postcondición: ejemplar prestado al usuario – efectos laterales: retirada del carné durante 7 días si el usuario tiene préstamos pendientes de devolución • Requisitos no funcionales – El tiempo de proceso de una petición será siempre inferior a 1 segundo. – El sistema de biblioteca debe ser capaz de atender simultáneamente a todas las bibliotecas de la universidad, estimadas en picos de 50 peticiones/minuto Rubén Fuentes Fernández Ingeniería del Software 10 Requisitos no funcionales: tipos • Requisitos del producto – Especifican el comportamiento del producto. – Ej. prestaciones, memoria o tasa de fallos • Requisitos organizativos – Se derivan de las políticas y procedimientos de las organizaciones de los clientes y desarrolladores. – Ej. estándares de proceso o lenguajes de programación • Requisitos externos – Se derivan de factores externos al sistema y al proceso de desarrollo. – Ej. requisitos legislativos o éticos Rubén Fuentes Fernández Ingeniería del Software 11 Requisitos del dominio • Se derivan del dominio de la aplicación y reflejan características de dicho dominio. – Pueden ser funcionales o no funcionales. – Ej. el sistema de biblioteca de la universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicación de Bibliotecas de España (LIBE) – Ej. el sistema de biblioteca no podrá acceder a bibliotecas con material censurado Rubén Fuentes Fernández Ingeniería del Software 12 PROCESO Rubén Fuentes Fernández Ingeniería del Software 13 El proceso de Ingeniería de Requisitos • La Ingeniería de Requisitos debe centrarse en lo que hay que hacer, no en el cómo. • Para obtener los requisitos es necesario realizar varias tareas. • También hay que tener en cuenta que los requisitos evolucionan. – Es necesario gestionar su cambio. • Las actividades anteriores se organizan siguiendo modelos de proceso. – De la misma manera que el proceso de desarrollo de software global. – Aunque existen variantes de este modelo, vienen a cubrir las mismas actividades. Ingeniería del Software 14Rubén Fuentes Fernández Proceso estilo cascada Ingeniería del Software 15 Estudio de viabilidad Obtención y análisis de requisitos Especificación de requisitos Validación de requisitos Informe de viabilidad Requisitos Requisitos especificados Requisitos validados Rubén Fuentes Fernández Proceso estilo evolutivo Ingeniería del Software 16 Pese a las figuras, se debe usar “requisitos” en vez de “requerimientos”. Rubén Fuentes Fernández Fases: estudio de viabilidad • Se trata de una estimación sobre si se puede resolver el problema cumpliendo las restricciones establecidas: – Usando las tecnologías software y hardware disponibles. – Integrándose en el entorno tecnológico y organizativo. – Cumpliendo las restricciones económicas del desarrollo. – Creando un sistema rentable en cuanto a operación y mantenimiento. • Se origina tras una especificación preliminar de los requisitos. • El estudio debe responder a las preguntas: – ¿Contribuye el sistema a los objetivos generales de la organización? – ¿Se puede implementar el sistema utilizando la tecnología actual y dentro de las restricciones de coste y tiempo? – ¿Puede integrarse el sistema con otros sistemas existentes en la organización? Rubén Fuentes Fernández Ingeniería del Software 17 Fases: análisis de requisitos • Proceso en el que se interactúa con los interesados para determinar: – El dominio de la aplicación – Los requisitos funcionales – Los requisitos no funcionales Rubén Fuentes Fernández Ingeniería del Software 18 Análisis de requisitos: proceso Ingeniería del Software 19 1º 2º 3º 4º Rubén Fuentes Fernández Fases: especificación de requisitos • Se fija una descripción detallada y precisa de los requisitos. – Debe servir de base para un contrato entre los clientes y los desarrolladores de software. • En función del ciclo, los requisitos serán preliminares del negocio, de usuario o de sistema. – Dentro de un proceso evolutivo o incremental • El objetivo es realizar la Especificación de Requisitos Software (SRS). Ingeniería del Software 20Rubén Fuentes Fernández Lenguajes de especificación de requisitos • Pueden utilizarse distintos lenguajes para especificar los requisitos: – Lenguaje natural – Lenguaje natural estructurado – Lenguaje de descripción de diseño – Lenguaje de especificación de requisitos – Notaciones gráficas – Especificaciones matemáticas – Especificaciones lógicas Rubén Fuentes Fernández Ingeniería del Software 21 Fases: validación de requisitos • Se encarga de comprobar si los requisitos se ajustan a los deseos y necesidades de los interesados. • Si la validación es inadecuada, se propagarán errores al diseño e implementación. • Evidentemente, tiene una fuerte repercusión sobre el coste. Ingeniería del Software 22Rubén Fuentes Fernández Verificaciones en la validación de requisitos (1/2) • Corrección – Cada requisito identificado es un requisito del sistema. • No ambigüedad – Cada requisito identificado tiene una única interpretación. • Realismo – Comprobar que se pueden implementar los requisitos con las tecnologías y plantilla disponibles. • Completitud – La SRS debe incluir: • Todos los requisitos relativos a funcionalidad, prestaciones, restricciones de diseño, atributos o interfaces externas. • Definición de las respuestas del sistema a todos los tipos posibles de datos de entrada en todas las posibles situaciones. • Todas las etiquetas y referencias a todas las figuras, tablas y diagramas en la SRS, así como definiciones de todos los términos y unidades de medida. Ingeniería del Software 23Rubén Fuentes Fernández Verificaciones en la validación de requisitos (2/2) • Consistencia – Consistencia interna con todos los requisitos en todos los documentos (ej. requisitos de usuario vs requisitos de sistema). • Priorizada – La SRS debe priorizar la importancia y/o la estabilidad de cada requisito mediante un identificador de importancia y/o estabilidad para cada requisito. • Verificable – Cada requisito identificado es verificable. • Es decir, se puede comprobar que el sistema implementa el requisito. • Modificable – La estructura y estilo permiten cambios en los requisitos de forma fácil, completa y consistente manteniendo la estructura y estilo. • Trazable – El origen de cada requisito está claro. – Facilita la referencia de cada requisito en desarrollos futuros o en mejoras de la documentación. Ingeniería del Software 24Rubén Fuentes Fernández Técnicas de validación • Hay distintas técnicas para validar los requisitos, que pueden utilizarse conjunta o individualmente: – Revisión de requisitos • Análisis sistemático de los requisitos por parte de un equipo de revisores. – Prototipado • Creación de un modelo ejecutable del sistema. – Generación de casos de prueba • Si no se puede diseñar un caso de prueba para un requisito, probablemente el requisito sea problemático. – Análisis automático de la consistencia • Supuesto que se haya utilizado una herramienta formal de especificación de requisitos. Ingeniería del Software 25Rubén Fuentes Fernández Gestión de requisitos software • Los requisitos pueden cambiar y evolucionar. – Puede haber requisitos variables en función del usuario. – El cliente no suele ser el usuario. – El producto y/o el entorno evolucionan. • La gestión de requisitos es el proceso de entender y controlar los cambios en los requisitos del sistema. – Tiene en cuenta aspectos técnicos no contemplados por la Gestión de la Configuración Software (GCS). Ingeniería del Software 26Rubén Fuentes Fernández Objetivos de la gestión de requisitos software • En la gestión de requisitos debemos ser capaces de: – Identificar los requisitos – Tener un proceso de gestión del cambio – Disponer de políticas de traza – Disponer de soporte CASE Ingeniería del Software 27Rubén Fuentes Fernández Gestión de requisitos software • La identificación de cada requisito se supone realizada cuando se dispone de una SRS. • El proceso de gestión de cambio es común al de cualquier Elemento de Configuración Software (ECS). • Las políticas de traza deben llevar cuenta de diversa información de traza: – De origen liga el requisito al interesado – De requisitos determina las dependencias entre requisitos – De diseño liga los requisitos a los módulos de diseño Ingeniería del Software 28Rubén Fuentes Fernández Matriz de traza • La información de traza de requisitos puede representarse mediante una matriz de traza. Ingeniería del Software 29 D: depende de R: relacionado con Rubén Fuentes Fernández Tipología de requisitos según su evolución • Estables – Se derivan de la actividad principal del sistema y están directamente relacionados con el dominio. • Volátiles – Probablemente cambiarán durante el desarrollo del sistema o después de su entrega. – Se clasifican en: • Mutables Cambian debido a cambios en el entorno en el que la organización opera. • Emergentes Aparecen durante el desarrollo del sistema por el mayor entendimiento por parte del cliente. • De consecuencia Aparecen por la introducción del sistema. • De compatibilidad Dependen de los procesos de negocio de la organización. Rubén Fuentes Fernández Ingeniería del Software 30 Herramientas CASE • Las herramientas CASE facilitan: – El almacenamiento de requisitos – La gestión del cambio – La gestión de la traza • Pueden ser herramientas específicas o gestionar el cambio de la SRS como el de cualquier otro ECS. Ingeniería del Software 31Rubén Fuentes Fernández CASOS DE USO Técnicas de especificación de requisitos Rubén Fuentes Fernández Ingeniería del Software 32 Modelo de casos de uso • Visión del sistema tal como se muestra a sus usuarios externos. – Lo desarrollan tanto los analistas como los expertos del dominio (los interesados). • Para entenderlo mejor se puede fragmentar en distintos puntos de vista y con diferentes propósitos. • Representa el acuerdo alcanzado entre clientes y desarrolladores. – Sirve como entrada al análisis, diseño y pruebas. Rubén Fuentes Fernández Ingeniería del Software 33 Casos de uso • Un caso de uso describe una forma en que los actores usan el sistema. – Es un fragmento de funcionalidad que el sistema ofrece para aportar un resultado de valor para sus actores. – Es una transacción (caso de uso) que tiene significado para los usuarios (actores). • Un actor es cada tipo de usuario o sistema externo que interactúa con el sistema. – Terceros fuera del sistema que colaboran con el sistema. Rubén Fuentes Fernández Ingeniería del Software 34 Especificación del modelo de casos de uso • El estándar de UML [OMG, 2010] especifica estos modelos con: – Diagramas de casos de uso – Descripción de los casos de uso • Mediante plantillas de texto • Acompañados de diagramas de interacción Rubén Fuentes Fernández Ingeniería del Software 35 Diagrama de casos de uso: entidades • Caso de uso – Secuencia de acciones, incluyendo variantes, que puede realizar el sistema interaccionando con los actores del sistema • Actor – Un conjunto coherente de roles que juegan los usuarios cuando interaccionan con los casos de uso • Límite del sistema – Representa el límite entre el sistema físico y los actores que interaccionan con el sistema Rubén Fuentes Fernández Ingeniería del Software 36 nombre de caso de uso nombre de actor Diagrama de casos de uso: relaciones • Asociación – La participación de un actor en un caso de uso – La instancia de un actor se comunica con instancias de un caso de uso • Generalización – Relación taxonómica entre un caso de uso más general y otro más específico • Dependencia – <<extend>> el comportamiento de un caso de uso origen extiende el de un caso de uso destino – <<include>> el comportamiento de un caso de uso origen incluye el de un caso de uso destino Rubén Fuentes Fernández Ingeniería del Software 37 <<extend>> <<include>> Ejemplo: asociaciones de dependencia y generalización Rubén Fuentes Fernández Ingeniería del Software 38 Proporcionar Datos Cliente Pedir Producto Realizar Pago Pago con tarjeta de crédito Pago en metálico Solicitar catálogo Realizar pedido <<include>> <<include>> <<include>> <<extend>> el vendedor solicita el catálogo Adaptado de Fig. 3-54, UML Notation Guide Ejemplo: límite del sistema Rubén Fuentes Fernández Ingeniería del Software 39 Customer Supervisor SalespersonPlace Establish credit Check Telephone Catalog Fill orders Shipping Clerk status order Rubén Fuentes Fernández Ingeniería del Software 40 CASO DE USO #1 ArranqueSistema Objetivo en contexto Se encarga de crear los objetos que componen el sistema e inicializarlos adecuadamente, leyendo archivos de configuración y cargando los casos de una base de datos Entradas Precondiciones Los archivos de configuración deben existir y ser válidos Debe ser posible establecer la conexión con la base de datos, y en ésta se han definido los esquemas adecuados Salidas Postcondición si éxito Es posible empezar a interactuar con el sistema Postcondición si fallo El sistema no se ha podido inicializar adecuadamente y la aplicación acaba Actores El usuario y la base de datos Secuencia normal Paso Acción 1 Leer los archivos de configuración. Si error S-1 2 Construir la función de similitud 3 Construir el conector a la base de datos. Si error S-2 4 Construir la base de casos, a partir de la función de similitud y el conector a la base de datos. Si error S-3 Secuencias alternativas Paso Acción S-1 Error al leer los archivos de configuración. Se informa del error y termina la aplicación. S-2 Error al establecer la conexión con la base de datos. Se informa del error y termina la aplicación. S-3 Error al leer los casos de la base de datos. Se cierra la base de datos, se informa del error y termina la aplicación. ¿Hay algún problema en esta descripción? Flujo de sucesos • El flujo de sucesos es una especificación textual de la secuencia de acciones que el sistema puede llevar a cabo interactuando con sus actores. – Incluye las alternativas dentro de la secuencia. • Estas secuencias de acciones deben poder ser modificadas, revisadas, diseñadas, implementadas y probadas como un conjunto significativo. – Pueden ser descritas como una sección del manual del usuario. Rubén Fuentes Fernández Ingeniería del Software 41 Prototipo de interfaz de usuario • Los casos de uso se centran en los aspectos funcionales. – No son los únicos requisitos • Los prototipos de interfaz de usuario ayudan a comprender y especificar las interacciones entre actores humanos y el sistema. • Pueden usarse modelos de interfaz gráfica y esquemas de pantallas. Ingeniería del Software 42Rubén Fuentes Fernández Rubén Fuentes Fernández Ingeniería del Software 43 Requisitos especiales • Aquellos que no pueden asociarse a ningún caso de uso – Requisitos no funcionales • Se capturan como lista de requisitos. – De interfaz interacción con un elemento externo que impone restricciones en formatos, tiempos u otros factores – Legales (normativas) – Físico característica física que debe poseer un sistema (material, forma, tamaño, peso) – Restricción de diseño limita el diseño (extensibilidad, mantenibilidad, reutilización de sistemas heredados) – Restricción de implementación especifica o limita la codificación o construcción del sistema (estándares, lenguajes, políticas para la integridad de base de datos...) Rubén Fuentes Fernández Ingeniería del Software 44 Glosario • Define términos comunes importantes que los analistas utilizan para describir el sistema. • Centrado en el sistema que se va a construir, en lugar de su contexto. Rubén Fuentes Fernández Ingeniería del Software 45 Captura de los requisitos 1. Identificar actores 2. Identificar casos de uso 3. Describir brevemente cada caso de uso 4. Priorizar los casos de uso 5. Detallar los caso de uso 6. Prototipar la interfaz de usuario 7. Identificar los requisitos adicionales 8. Describir y estructurar el modelo de casos de uso completo – Incluye la elaboración del glosario • El proceso no es necesariamente secuencial. Rubén Fuentes Fernández Ingeniería del Software 46 Cómo identificar casos de uso • A partir de los actores – Identificar los actores relacionados con el sistema o la organización. – Para cada actor, identificar los procesos que inicia o en los que participa. • A partir de los eventos – Identificar los eventos externos a los que puede responder el sistema. – Relacionar los eventos con actores y casos de uso. • Criterios para identificar los actores relevantes: – Al menos un usuario que pueda representar al actor candidato. – Coincidencia mínima entre distintos actores. Rubén Fuentes Fernández Ingeniería del Software 47 Pautas de elaboración • Asegurarse que cada caso de uso describe una parte significativa del funcionamiento del sistema. • Evitar un número excesivo de casos de uso. – Un caso de uso no es un paso, operación o actividad individual en un proceso. – Un caso de uso describe un proceso completo que incluye varios pasos. • Los casos de uso tienen que ser entendibles tanto por desarrolladores como por expertos del dominio. – Es una descripción de alto nivel del sistema. – Evitar conceptos de diseño. Rubén Fuentes Fernández Ingeniería del Software 48 Cuándo definir un modelo de casos de uso • Para identificar los requisitos funcionales del sistema – y para identificar escenarios de prueba • Normalmente en las primeras etapas de desarrollo – En metodologías dirigidas por casos de uso: • Empezar por los casos de uso y derivar de ellos los modelos estructural y de comportamiento – y si no: • Asegurarse que el modelo de casos de uso es consistente con los modelos estructural y de comportamiento Rubén Fuentes Fernández Ingeniería del Software 49 FAST Técnicas de especificación de requisitos Rubén Fuentes Fernández Ingeniería del Software 50 Técnica de facilitación de la especificación de aplicaciones • La técnica de facilitación de la especificación de aplicaciones (FAST) es un método específico para gestionar entrevistas. – Múltiples versiones • Está diseñado para poner a clientes y desarrolladores a trabajar en equipo. Ingeniería del Software 51Rubén Fuentes Fernández Proceso fundamental • Se realiza una reunión previa con el cliente. – Establecer el alcance y la descripción básica. • Se redacta una petición de producto breve. – 1 o 2 páginas • Se convoca una reunión FAST. – Se elige un moderador. – Se reparte la petición de producto a todos los asistentes. – Se realiza la reunión. Rubén Fuentes Fernández Ingeniería del Software 52 Reunión: entorno • Se celebra en sitio neutral. • Asisten clientes y desarrolladores • Hay reglas claras para la preparación y la participación. • Hay un orden del día. – Suficientemente formal para que se cubra todo. – Suficientemente informal para que haya flexibilidad. • Hay un moderador. – Cliente o desarrollador • Hay un mecanismo de definición. – Ej. pizarra, proyector o fichas. • El objetivo es identificar el problema y especificar los requisitos básicos de la solución. 53Ingeniería del SoftwareRubén Fuentes Fernández Deberes para la reunión • Cada asistente tiene que traer preparadas a la reunión las siguientes listas: – Objetos elementos que forman parte del entorno del sistema, produce el sistema o utiliza el sistema – Servicios – Restricciones coste, tamaño, reglas de negocio… – Criterios de rendimiento • Las listas no tienen que ser exhaustivas pero deben reflejar la visión que cada participante tiene del sistema. 54Ingeniería del SoftwareRubén Fuentes Fernández Reunión: fases • Primera fase exposición – Se exponen las listas para un área concreta. – En este punto no se admiten críticas ni discusión. – Se elabora una lista combinada. – Cuando están las listas combinadas para todas las áreas, se acuerda una versión negociada de cada una. • Segunda fase elaboración – Se separan los asistentes por equipos. – Cada grupo se encarga de hacer una mini especificación de unas cuantas propuestas de la lista. – Cada equipo presenta su mini especificación a
Compartir