Apuntes sobre Proceso de Desarrollo de Software
Contexto y Orígenes de la Ingeniería de Software
- Década de los 60: "Crisis del software" debido al aumento del HW, complejidad, y tamaño de los problemas.
- Enfoque de especialistas en problemas acotados.
- Propuesta para un enfoque ingenieril en el desarrollo de software.
Definición y Objetivos de la Ingeniería de Software
- Disciplina para el desarrollo sistemático, eficaz y eficiente de software.
- Objetivos:
- Maximizar la calidad.
- Maximizar la productividad.
- Minimizar los riesgos.
Interrelación de Elementos en el Desarrollo de Software
- Interesado identifica requisitos.
- Requisitos exigen esfuerzo para crear una solución.
- Solución se enfoca en una oportunidad.
- Sistema de software satisface al interesado.
- Forma de trabajo aplica el equipo.
- Equipo apoya el trabajo, que actualiza y cambia la forma de trabajo.
- Trabajo restringe y delimita el sistema de software.
- Sistema de software emplea y ayuda a tratar los requisitos.
Ciclo de Vida del Software
- Proceso desde la concepción inicial hasta el retiro del software.
- Importancia de un ciclo de vida:
- Determinar el orden de las actividades.
- Establecer criterios de transición entre actividades.
- Definir entradas y salidas de cada actividad.
- Describir los estados en cada actividad.
Modelos del Ciclo de Vida
- Describen las etapas y estados de un producto de software.
- Concepción.
- Desarrollo.
- Puesta en marcha.
- Mantenimiento.
- Retirada.
Diferencias entre Modelos de Ciclo de Vida
- Alcance del ciclo.
- Características de las actividades.
- Estructura y sucesión de las actividades, incluyendo realimentación e iteraciones.
Modelo de Desarrollo en Cascada (Lineal Secuencial)
- Primer modelo concebido (Royce, 1971).
- Actividades suceden de forma lineal.
- Ventajas:
- Claridad en el estado del proyecto y las tareas.
- Desventajas:
- Fases:
- Análisis de Requerimientos.
- Diseño del Sistema.
- Diseño de Programas.
- Codificación.
- Testing Unitario e Integrado.
- Testing del Sistema.
- Testing de Aceptación.
- Operación y Mantención.
Uso Recomendado del Modelo en Cascada
- Requisitos bien conocidos.
- Productos estables.
- Tecnología entendida.
- Sin requisitos ambiguos.
- Experiencia previa en cascada.
- Proyecto corto.
Modelo en V
- Variación del modelo en cascada.
- Actividades de prueba son contraparte de desarrollo.
- Forma ciclos desarrollo-verificación-desarrollo.
- Propuesto en Alemania en 1992.
Uso Recomendado del Modelo en V
- Proyectos de alcance pequeño a mediano.
- Requisitos claramente definidos.
- Recursos técnicos completamente disponibles.
- Experiencia en el uso de los recursos.
Modelo de Desarrollo en Fase
- Desarrollo en fases debido a demandas del mercado.
- Diseño del sistema para entregas parciales.
- Usuario obtiene funcionalidad parcial durante el desarrollo.
- Dos sistemas en paralelo:
- Desarrollo: siguiente versión.
- Producción: versión actual usada por el cliente.
Desarrollo Iterativo-Incremental
- Incremental: partición en subsistemas por funcionalidad, agregando en cada versión.
- Iterativo: sistema completo al inicio, con cambios y mejoras en cada versión.
Ventajas del Desarrollo Iterativo-Incremental
- Entrenamiento temprano de usuarios.
- Detección temprana de problemas.
- Enfoque en diferentes áreas de experticia en cada versión.
- Esfuerzo focalizado.
Modelo en Espiral
- Orden de ejecución determinado por análisis de riesgo (Boehm, 1986).
- Iterativo: Planificación -> Análisis de Riesgo -> Ingeniería -> Evaluación -> Planificación -> …
- Evaluación de alternativas y mitigación de riesgos en cada iteración.
Ventajas del Modelo en Espiral
- Alto manejo de riesgo.
- Buen manejo de proyectos críticos.
- Buena documentación.
- Facilidad para agregar funcionalidades.
- Software en etapas tempranas.
Desventajas del Modelo en Espiral
- Costoso.
- Requiere experiencia en análisis de riesgo.
- Éxito depende del análisis de riesgo.
- No adecuado para proyectos pequeños.
Uso Recomendado del Modelo en Espiral
- Costos y riesgos importantes.
- Proyectos de tamaño variable.
- Requisitos complejos o inciertos.
- Nuevas líneas de productos.
- Cambios significativos esperados.
Proceso de Desarrollo de Software (PDS)
- Unifica actividades y prácticas para cubrir necesidades de desarrollo.
- Objetivo: garantizar software adecuado, conforme a especificaciones, en tiempo y costo.
- Modelar el proceso mejora el desarrollo y la calidad.
Ingeniería de Procesos de Software (SPE)
- Modelar, diseñar, mejorar y aplicar procesos con lenguajes de modelado de procesos (PML).
- Lenguaje basado en MOF y metamodelo UML.
- Sintaxis y estructura para procesos de desarrollo, incluyendo:
- Roles.
- Tareas.
- Artefactos.
- Lista de verificación.
- Productos de trabajo.
- Técnicas y herramientas.
- Estructuras de trabajo.
- Capacidad de rastreo y refinamiento.
- Ayuda sensible al contexto.
- Descripción textual.
Elementos Clave de Procesos
- Roles.
- Work products (artefactos).
- Resultados (intangibles).
- Entregables (artefactos + resultados).
- Tareas.
- Guías.
- Checklists.
- Plantillas.
RUP (Rational Unified Process)
- Framework de procesos para describir procesos de desarrollo específicos.
- Centrado en arquitectura, iterativo-incremental.
Dimensiones de RUP
- Horizontal (tiempo): ciclo de vida en fases e iteraciones.
- Vertical (workflows): disciplinas de proceso.
Fases de RUP
- Concepción: visión, requisitos de alto nivel, ámbito, decisión de factibilidad.
- Elaboración: requisitos detallados (80%), arquitectura, prototipos.
- Construcción: análisis, diseño, desarrollo, testing, beta desplegable.
- Transición: despliegue, post-mortem, producto liberado.
Elementos Clave Adicionales de RUP
- Disciplinas (Modelado de negocio, Requisitos, Análisis y Diseño, Implantación, Prueba (test), Despliegue, Gestión de Cambio y Configuración, Gestión del Proyecto, Ambiente).
- Roles (36).
- Workproducts (76) -> Artefactos.
OpenUP
- Versión ligera de RUP.
- Disciplinas: 5.
- Roles: 7.
- Workproducts: 17.
Fases de OpenUP
- Inicio: alcance y arquitectura del proyecto.
- Elaboración: priorizar workstreams.
- Construcción: desarrollar, probar y entregar work packages.
- Transición: solución beta para validar expectativas del negocio.
EPF Composer
- Herramienta para generar marcos de procesos de software.
- Basado en modelos reutilizables.
- Ambiente de desarrollo Eclipse.
- Permite autorizar, parametrizar y publicar métodos.
Evolución de los Procesos de Desarrollo
- Demanda por investigación en problemas relacionados a PDS.
- Inserción de estándares de la industria.
- Importancia de paradigmas de modelamiento.
Conclusión sobre Modelos y Procesos de DSW
- No existe una “bala de plata”.
- Seleccionar proceso/modelo según el equipo y el problema.
Mejoramiento de Procesos de Software (SPI)
- Principio básico: Mejorar la calidad del producto mejorando la calidad del proceso de software.
- La capacidad de los procesos puede ser mejorada.
Proceso de Mejora
- Mejorar el proceso midiendo, previniendo, documentando, resolviendo problemas y automatizando.
Diagrama ETVX
- Modelo Entry-Task-Verification-eXit para controlar actividades.
- Estructura requiere criterios de entradas, tareas, verificaciones y criterios de salida.
Objetivos de SPI
- Entender el estado presente.
- Seleccionar áreas de mejoramiento.
- Enfocar e insertar valor agregado.
- Combinar procesos efectivos con personas motivadas.
Modelo de Madurez de Capacidades (CMMI)
- Marco evolutivo para la mejora continua de procesos.
- Ventajas: específico para software, áreas clave de procesos, modelo de evaluación.