Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 1
Modelos de Proceso de Software
Ingeniería de Software I
FIEC03046
Sesión 03
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 2
Agenda
• Terminología
• Ciclo de vida para desarrollo de software
• Actividades de un proceso de software
• Modelos de proceso de software
• Modelo en cascada
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 4
Terminología
• Un proceso de software es un conjunto relacionado de actividades que están involucrados en el desarrollo y evolución de un producto de software.
• El modelo de un proceso de software es una representación simplificada del proceso desde una perspectiva en particular.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 5
Terminología
• Un producto Commercial-off-the-shelf [COTS] es un sistema de software que puede ser adaptado para las necesidades de diferentes clientes sin la necesidad de modificar el código fuente del sistema. Por ejemplo: Un ERP.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 6
Ciclo de vida para desarrollo de software
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 7
Ciclo de vida para desarrollo de software
• Existen varios procesos de software. Sin embargo, todos ellos incluyen cuatro actividades fundamentales para la ingeniería de software: – Especificación de software: se deben definir las
funcionalidades del software y sus restricciones de operación.
– Diseño e implementación de software: se debe producir un software que cumpla sus especificaciones.
– Validación de software: se debe validar el software a fin de asegurar que este hace lo deseado por el cliente.
– Evolución de software: el software debe evolucionar para cumplir con los cambios producto de las cambiantes necesidades del cliente.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 8
Ciclo de vida para desarrollo de software • Los procesos dividen estas actividades en subactividades. • Las descripciones de estas actividades también pueden
incluir: – Productos: los cuales son los resultados de una actividad. Por
ejemplo: en una actividad de diseño de arquitectura el resultado podría ser el modelo de la arquitectura del software.
– Roles: reflejan las responsabilidades de los involucrados en el proceso. Por ejemplo: director de proyectos, programador, gestor de la configuración, etc.
– Pre y post condiciones: hechos que son verdaderos antes y después de procesar la actividad. Por ejemplo: para el inicio del diseño de la arquitectura se tiene como pre-condición que los requerimientos hayan sido aprobados por el cliente y una post-condición sería que se haya revisado los modelos UML que describen la arquitectura.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 9
Ciclo de vida para desarrollo de software
• No existen procesos de software ideales, dependen del buen juicio y criterio de las personas.
• Los procesos deben evolucionar para tomar ventaja de las capacidades de los integrantes de la organización.
• Los procesos de software se saben categorizar en: – Plan-driven processes
– Agile processes
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 10
Ciclo de vida para desarrollo de software
• Plan-driven processes: procesos en los cuales sus actividades son planeadas con antelación y sus avances son medidos con respecto al plan.
• Agile processes: la planeación es incremental y es más fácil cambiar el proceso pra reflejar cambios en los requerimientos del cliente.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 11
Actividad de especificación de software
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 12
Especificación del software
• También conocido como Ingeniería de requerimientos.
• Es el proceso de entender y definir qué servicios son requeridos desde el sistema e identificar sus restricciones de operación y desarrollo.
• Es un actividad crítica en vista que errores en esta inevitablemente generarán problemas en el diseño e implementación.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 13
Especificación del software
• Las principales cuatro actividades en el proceso de ingeniería de requerimientos son:
1. Estudio de factibilidad
2. Análisis y elicitación de requerimientos
3. Especificación de requerimientos
4. Validación de requerimientos
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 15
Especificación del software
• Estudio de factibilidad
– Estimar si las necesidades del usuario pueden ser satisfechas con la tecnología disponible,
– Estimar si el sistema es costo-efectivo desde un punto de vista económico
– Estimar si se puede llevar a cabo el desarrollo dentro del presupuesto establecido
– Producir un informe relativamente barato y rápido si se debe o no continuar con un análisis detallado.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 16
Actividad de especificación del software
• Análisis y elicitación de requerimientos
– Es el proceso de derivar los requerimientos del sistema a través de la observación del proceso existente
– Entrevistas con los potenciales usuarios
– Contruir prototipos
– Entre otras técnicas…
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 17
Especificación del software
• Especificación de requerimientos – Traducir los requerimientos recopilados durante la
actividad de análisis en un documento que define un conjunto de requerimientos
– Dos tipos de requerimientos se incluyen en el documento: • Requerimientos de usuario: oraciones en lenguaje
natural de los servicios que el sistema debe proveer y sus restricciones de operación.
• Requerimientos de sistema: descripciones detalladas de la funciones, servicios y restricciones operativas del sistema.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 18
Especificación del software
• Especificación de requerimientos
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 19
Especificación del software
• Validación de requerimientos
– Comprobar que los requerimientos seas reales, consistentes y completos.
– Durante el proceso se descubren errores en el documento, los cuales son modificados para corregir estos problemas.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 20
Actividad de diseño e implementación de software
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 21
Diseño e implementación de software • Convertir las especificación del sistema en un sistema
ejecutable. • Implica diseño e implementación. • En un proceso de diseño se llevan a cabo las siguientes
actividades: – Diseño de arquitectura: identificar la estructura general del
sistema, sus principales componentes o módulos y la relación distribución de los mismos.
– Diseño de interface: definir las interfaces entre los componentes del sistema. Así, los componentes pueden ser usados sin conocer su implementación.
– Diseño de componentes: diseñar la operación de cada componente. Alternativamente, podría contemplar los cambios a los componentes reutilizados.
– Diseño de base de datos: diseñar las estructuras de base de datos y su representación en la base de datos.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 22
Diseño e implementación de software
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 23
Actividad de validación de software
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 24
Validación de software • Validación de software o más generalmente
verificación y validación tiene por objeto mostrar que un sistema cumple con su especificación y a la vez cumple con las expectativas del cliente.
• Las pruebas de software son la principal técnica de validación.
• La fase formal de testing y sus costos de validación se llevan a cabo luego de la fase de implementación.
• Las pruebas llevadas a cabo por los desarrolladores son parte de la implementación. Lo veremos en detalle en el próximo curso…
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 26
Actividad de evolución de software
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 27
Evolución de software
• También conocida como actividad de mantenimiento de software.
• Cambios en el software pueden ser hechos durante o después de la fase de implementación. Sin embargo, históricamente se ha dividido el proceso de desarrollo del proceso de evolución o mantenimiento.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 29
Modelos de proceso de software
• Los modelos de procesos de software son frameworks que pueden ser extendidos y adaptados para crear procesos de ingeniería de software más específicos.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 30
Modelos de proceso de software • Cubriremos los siguientes modelos:
– Modelo en cascada: fases separadas para especificación de requerimientos, diseño de software, implementación, pruebas, etc.
– Modelo de desarrollo incremental: intercala las actividades de especificación, desarrollo y validación. El sistema se desarrolla en una serie de versiones en donde cada una de ellas agrega funcionalidad.
– Modelo de desarrollo iterativo: no se inicia con una especificación de requerimientos completa. Se especifica parte del software y se inicia un ciclo de desarrollo. Al final de este, se repite el proceso con un nuevo ciclo identificando nuevos requerimientos.
– Modelo de espiral de Boehm: es un tipo de proceso de software iterativo, generalmente implementado en proyectos de alto riesgo. Cada lazo en el espiral representa un fase de desarrollo.
– Modelo orientado al reuso: basado en la existencia de un número significativo de componentes reusables. El desarrollo se centra en la integración de los mismos en vez de empezar desde cero.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 32
Modelo en cascada • Es un modelo de proceso de software que incluye
las etapas de desarrollo: especificación, diseño, implementación, pruebas y mantenimiento.
• La etapa previa debe finalizar antes de iniciar la siguiente.
• Es un ejemplo de plan-driven process ya que primero se debe planificar y programar todas las actividades del proceso antes de empezar a trabajar en ellas.
• Se producen y aprueban documentos al final de cada etapa.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 34
Modelo en cascada
– Fuente: http://istqbexamcertification.com
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 35
Actividades del modelo en cascada 1. Definición y análisis de requerimientos: Los servicios,
restricciones y objetivos del sistema son establecidos con los usuarios del sistema.
2. Diseño de software y del sistema: Se define la arquitectura del sistema. Se diseñan los componentes de software.
3. Implementación y pruebas unitarias: El diseño es transformado en un conjunto de programas. Las pruebas unitarias consisten en verificar que el sistema cumpla su especificación.
4. Pruebas de integración y de sistema: Los programas individuales son integrados y probadas como un sistema completo. Luego de las pruebas el software es entregado al cliente.
5. Operación y mantenimiento: El sistema es instalado y puesto en producción. El mantenimiento implica la corrección de errores que no fueron descubiertos en las etapas preliminares, además las mejoras al sistema a partir de los nuevos requerimientos.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 36
Ventajas del modelo en cascada
• Simple y fácil de entender y usar.
• Fácil de manejar dado que cada fase tiene entregables específicos.
• Cada fase es procesada una por una.
• Funciona en proyectos pequeños o en aquellos en que los requerimientos están claros.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 37
Desventajas del modelo en cascada
• Es muy difícil regresar a una fase previa.
• El software no es entregado sino hasta el final del ciclo de vida.
• No es apropiado para proyectos complejos o aquellos en los que los requerimientos tienen alta probabilidad de cambio.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 38
Modelo en cascada
• Conveniente cuando…
– Los requerimientos están bien entendidos, claros y fijos.
– La definición del producto es estable.
– Se entiende la tecnología.
– No hay requerimientos ambiguos.
– Proyectos pequeños.
Ingeniería de Software I © MSc. Carlos Mera Gómez
2013
Modelos / 39
Puntos para recordar
• Significado de modelo de proceso de software
• Actividades de un proceso de software
• Ventajas y desventajas del modelo en cascada
• Los modelos no son mutuamente excluyentes. Se pueden combinar las mejores características de cada uno en proyectos grandes.