PUD Desarrollo iterativo e incremental Metodologas de Desarrollo

  • Slides: 39
Download presentation
PUD Desarrollo iterativo e incremental Metodologías de Desarrollo Software Javier Sánchez Pérez Facultad de

PUD Desarrollo iterativo e incremental Metodologías de Desarrollo Software Javier Sánchez Pérez Facultad de Informática Universidad de Las Palmas de Gran Canaria

Desarrollo iterativo e incremental Flujos de trabajo / Fases Gestación Elaboración Construcción Transición Requisitos

Desarrollo iterativo e incremental Flujos de trabajo / Fases Gestación Elaboración Construcción Transición Requisitos Análisis Diseño Implementac. Test Iter #1 Iter #2 --- --- --- Iter #n-1 Iter #n

Fase de inicio l l Objetivo: Establece la viabilidad del proyecto Se fundamenta el

Fase de inicio l l Objetivo: Establece la viabilidad del proyecto Se fundamenta el análisis de negocio inicial: – – l Se delimita el ámbito del sistema Se propone o esboza una arquitectura del sistema Se identifican riesgos críticos Se demuestra a los usuarios la utilidad del sistema propuesto Sistema rentable económicamente

Fase de elaboración l Dos grandes objetivos: – – l Elaborar una arquitectura estable

Fase de elaboración l Dos grandes objetivos: – – l Elaborar una arquitectura estable Conocer suficientemente el sistema como para planificar en detalle la fase de construcción Tareas básicas: – – Crear una línea base para la arquitectura Identificar riesgos significativos Especificar atributos de calidad Estudiar 80% de los requisitos funcionales

Fase de construcción l l Objetivo: La capacidad de operación inicial Versión beta Requiere

Fase de construcción l l Objetivo: La capacidad de operación inicial Versión beta Requiere mayor número de iteraciones Tareas básicas: – – Extensión a todos los casos de uso Finalización del análisis, diseño, implementación y prueba Mantenimiento de la integridad de la arquitectura Monitorización de los riesgos críticos y significat.

Fase de transición l l Objetivo: Entrega del producto final Tareas básicas: – –

Fase de transición l l Objetivo: Entrega del producto final Tareas básicas: – – – Preparar el lugar y actualizar el entorno Preparar manuales Ajustar el software al entorno del usuario Corregir defectos de la versión beta Evaluar y registrar las “lecciones aprendidas” Registrar asuntos útiles para la versión siguiente

Analista de sistemas Especificador de casos de uso Encontrar actores y casos de uso

Analista de sistemas Especificador de casos de uso Encontrar actores y casos de uso Detallar un caso de uso Ingeniero de casos de uso Planificar prueba Diseñar prueba Priorizar los casos de uso Ingeniero de pruebas Evaluar prueba Integrador de sistemas Integrar sistemas Realizar prueba de integración Prototipar la interfaz de usuario Diseñador de interfaces Arquitecto Estructurar el modelo de casos de uso Diseño de la arquitectura Análisis de la arquitectura Analizar un caso de uso Ingeniero de pruebas de int. Realizar prueba Ingeniero de de sistema pruebas de sis. Implementación de la arquitectura Diseñar un caso de uso Implementar pruebas Analizar una clase Ingeniero de componentes Diseñar una clase Analizar un paquete Diseñar un subsistema Implementar un subsistema Realizar prueba Implementar una clase de unidad

Planificación de las fases l l l Asignaciones de tiempo Hitos principales Iteraciones por

Planificación de las fases l l l Asignaciones de tiempo Hitos principales Iteraciones por fases Plan de proyecto En la fase de inicio – – Ajustar el PUD al proyecto y seleccionar herramientas Reunir a gente conocimientos específicos Entender el dominio Familiarizar al equipo con las herramientas

Planificación de las iteraciones l l La iteración se planifica más en detalle cuando

Planificación de las iteraciones l l La iteración se planifica más en detalle cuando está próxima Para planificar tenemos en cuenta: – – l Los casos de uso Los riesgos técnicos Cambios en los requisitos Los subsistemas de implementación El nº de iteraciones depende del proyecto

Administración de riesgos l Se crea una lista de riesgos – – – l

Administración de riesgos l Se crea una lista de riesgos – – – l Descripción Prioridad (crítico, significativo, rutinario) Impacto: partes del proyecto afectadas Monitor: responsable del seguimiento del riesgo Responsabilidad: responsable de eliminarlo Contingencia: lo que hacer cuando ocurra Aparecen nuevos riesgos

Evaluación de las iteraciones l Se evalúa al final de cada iteración – –

Evaluación de las iteraciones l Se evalúa al final de cada iteración – – l Reconsiderar plan de la siguiente iteración Modificar el proceso, adaptar las herramientas El jefe del proyecto: – – – Determina si el trabajo está listo para pasar a la siguiente iteración Planea en detalle la siguiente iteración Actualiza el plan de las siguientes Actualiza la lista de riesgos Compara el coste y la planificación de la iteración

Fase de inicio l l La mayor parte se realiza en el flujo de

Fase de inicio l l La mayor parte se realiza en el flujo de requisitos Ajuste del proyecto al entorno – – – l Proceso + herramientas + servicios para proyectos Herramientas para los flujos de trabajo Herramientas para la gestión del proyecto Identificar y mitigar/planificar riesgos críticos

Analista de sistemas Especificador de casos de uso Encontrar actores y casos de uso

Analista de sistemas Especificador de casos de uso Encontrar actores y casos de uso Detallar un caso de uso Ingeniero de casos de uso Planificar prueba Diseñar prueba Priorizar los casos de uso Ingeniero de pruebas Evaluar prueba Integrador de sistemas Integrar sistemas Definir ámbito del sistema Prototipar la interfaz de usuario Diseñador de interfaces Arquitecto Estructurar el modelo de casos de uso Análisis de la arquitectura Esbozar la arquitectura Implementación candidata de la Diseño de la arquitectura Analizar un caso de uso Realizar prueba de integración Ingeniero de pruebas de int. Realizar prueba Ingeniero de de sistema pruebas de sis. arquitectura Diseñar un caso de uso Implementar pruebas Analizar una clase Ingeniero de componentes Diseñar una clase Analizar un paquete Diseñar un subsistema Implementar un subsistema Realizar prueba Implementar una clase de unidad

Fase de inicio l Requisitos – – – Enumerar requisitos candidatos Comprender contexto del

Fase de inicio l Requisitos – – – Enumerar requisitos candidatos Comprender contexto del sistema Recopilar requisitos funcionales l l l – Encontrar actores y casos de uso Priorizar casos de uso Detallar un caso de uso Recoger requisitos no funcionales

Fase de inicio l Análisis – – – l Se completa alrededor del 5%

Fase de inicio l Análisis – – – l Se completa alrededor del 5% del modelo Análisis de la arquitectura Analizar un caso de uso Diseño – – Diseño de la arquitectura Colaboraciones entre clases y subsistemas Identificar interfaces entre clases y subsistemas Elegir software del sistema y elementos del middleware

Fase de inicio l Implementación – – l No suele ser necesaria Implementación de

Fase de inicio l Implementación – – l No suele ser necesaria Implementación de un prototipo desechable Prueba – – – Los ingenieros de pruebas consideran qué pruebas se requerirán Planes de prueba No se realizan pruebas

Fase de inicio Modelo negocio Casos de uso identificados Casos de uso descritos Casos

Fase de inicio Modelo negocio Casos de uso identificados Casos de uso descritos Casos de uso analizados Casos de uso diseñados, implementados y probados Fase inicio 50% -70% 50% 10% 5% Lo suficiente para el prototipo Fase elaboración Cerca del 100% >80% 40% - 80% 20% - 40% <10% Fase construcción 100% si se mantiene 100%

Fase de inicio l Productos de la fase: – – – – Lista de

Fase de inicio l Productos de la fase: – – – – Lista de características Primera versión del modelo del negocio Primera versión del modelo de casos de uso, de análisis y de diseño Descripción de la arquitectura candidata Prototipo exploratorio Lista inicial de riesgos y clasificación de casos de uso Plan para el proyecto Primer borrador del análisis del negocio

Fase de elaboración l Objetivos: – – l l Recopilar la mayor parte de

Fase de elaboración l Objetivos: – – l l Recopilar la mayor parte de los requisitos Establecer la línea base de la arquitectura Controlar riesgos críticos e identificar riesgos significativos Completar detalles del plan del proyecto Planificación de la fase Formación del equipo

Encontrar actores y casos de uso Analista de sistemas Especificador de casos de uso

Encontrar actores y casos de uso Analista de sistemas Especificador de casos de uso Diseñador de interfaces Arquitecto Ingeniero de casos de uso Estructurar el modelo de casos de uso Detallar un caso de uso Planificar prueba Diseñar prueba Integrar sistemas Evaluar prueba Desarrollar línea base de la arquitectura Refinar mayor parte de requisitos Prototipar la interfaz de usuario Priorizar los casos de uso Análisis de la arquitectura Diseño de la arquitectura Analizar un caso de uso Ingeniero de pruebas Integrador de sistemas Realizar prueba de integración Ingeniero de pruebas de int. Realizar prueba Ingeniero de de sistema pruebas de sis. Implementación de la arquitectura Diseñar un caso de uso Implementar pruebas Analizar una clase Ingeniero de componentes Diseñar una clase Analizar un paquete Diseñar un subsistema Implementar un subsistema Realizar prueba Implementar una clase de unidad

Fase de elaboración l Recopilar requisitos – – – Encontrar casos de uso y

Fase de elaboración l Recopilar requisitos – – – Encontrar casos de uso y actores adicionales Desarrollar prototipos de interfaces de usuario Determinar prioridad de los casos de uso Detallar un caso de uso Estructurar el modelo de casos de uso

Fase de elaboración l Análisis – – Análisis de la arquitectura Analizar un caso

Fase de elaboración l Análisis – – Análisis de la arquitectura Analizar un caso de uso Analizar una clase Analizar un paquete

Fase de elaboración l Diseño – Diseño de la arquitectura l l – –

Fase de elaboración l Diseño – Diseño de la arquitectura l l – – – Identificar la arquitectura en capas Identificar subsistemas y sus interfaces Identificar clases significativas Si es un sistema distribuido, identificar nodos Diseñar un caso de uso Diseñar una clase Diseñar un subsistema

Fase de elaboración l Implementación – – – l Implementación de la arquitectura Implementación

Fase de elaboración l Implementación – – – l Implementación de la arquitectura Implementación de una clase y de un subsistema Integrar el sistema Pruebas – – – Planificar las pruebas Diseñar las pruebas Realizar pruebas de integración y pruebas de sistema

Fase de elaboración l l l Análisis del negocio Evaluación de la fase de

Fase de elaboración l l l Análisis del negocio Evaluación de la fase de elaboración Planificación de la fase de construcción – – Se planifica en detalle la 1ª iteración Se esboza el plan de las siguientes

Fase de elaboración l Productos – – – – Modelo del negocio completo Versión

Fase de elaboración l Productos – – – – Modelo del negocio completo Versión de los modelos Línea base de la arquitectura Lista de riesgos actualizada Plan de proyecto para construcción y transición Manual de usuario (opcional) Análisis del negocio completo

Fase de construcción l l l Versión beta Se detallan todos los casos de

Fase de construcción l l l Versión beta Se detallan todos los casos de uso Se modifica la descripción de la arquitectura Se terminan todos los modelos Es la fase del desarrollo Se mitigan todos los riesgos excepto los de operación

Fase de construcción l l Esta fase comienza con la firma del contrato Asignación

Fase de construcción l l Esta fase comienza con la firma del contrato Asignación de personal Se divide el trabajo atendiendo a subsistemas e interfaces Se preparan primeras versiones de manuales de usuario y cursos de formación

Analista de sistemas Especificador de casos de uso Encontrar actores y casos de uso

Analista de sistemas Especificador de casos de uso Encontrar actores y casos de uso Detallar un caso de uso Ingeniero de casos de uso Planificar prueba Diseñar prueba Integrador de sistemas Integrar sistemas Realizar prueba de integración hace crecer el sistema Priorizar los casos de uso Ingeniero de pruebas Evaluar prueba Prototipar la interfaz de usuario Se Diseñador de interfaces Arquitecto Estructurar el modelo de casos de uso Análisis de la arquitectura Diseño de la arquitectura Analizar un caso de uso Ingeniero de pruebas de int. Realizar prueba Ingeniero de de sistema pruebas de sis. Implementación de la arquitectura Diseñar un caso de uso Implementar pruebas Analizar una clase Ingeniero de componentes Diseñar una clase Analizar un paquete Diseñar un subsistema Implementar un subsistema Realizar prueba Implementar una clase de unidad

Fase de construcción l Requisitos – – – Encontrar casos de uso y actores:

Fase de construcción l Requisitos – – – Encontrar casos de uso y actores: pequeña fracción Desarrollar prototipos de interfaces de usuario Determinar prioridad de los casos de uso Detallar un caso de uso: todos Estructurar el modelo de casos de uso: sólo para los casos de uso no desarrollados

Fase de construcción l Análisis – – – Puede no mantenerse Análisis de la

Fase de construcción l Análisis – – – Puede no mantenerse Análisis de la arquitectura Analizar un caso de uso Analizar una clase Analizar un paquete

Fase de construcción l Diseño – – Diseño de la arquitectura: prácticamente no se

Fase de construcción l Diseño – – Diseño de la arquitectura: prácticamente no se modifica Las otras tres tareas se realizan para el resto de los casos de uso (cerca del 90%) l l l Diseñar un caso de uso Diseñar una clase Diseñar un subsistema

Fase de construcción l Implementación – – Implementación de la arquitectura: se actualiza si

Fase de construcción l Implementación – – Implementación de la arquitectura: se actualiza si es necesario Implementación de una clase y de un subsistema: se pueden utilizar stubs Pruebas de unidad: podrá requerir corregir el diseño y la implementación del componente Integrar el sistema: por capas. Define período de las construcciones

Fase de construcción l Pruebas – – – Planificar las pruebas Diseñar las pruebas

Fase de construcción l Pruebas – – – Planificar las pruebas Diseñar las pruebas Realizar pruebas de integración: después de cada construcción Realizar pruebas de sistema: hacia el final de las iteraciones Evaluar las pruebas

Fase de construcción l Productos – – – El plan de proyecto para la

Fase de construcción l Productos – – – El plan de proyecto para la fase de transición El sistema software ejecutable Todos los artefactos La descripción de la arquitectura actualizada Versión preliminar del manual de usuario Análisis del negocio actualizado

Fase de transición l l l Se completa la versión del producto Se gestionan

Fase de transición l l l Se completa la versión del producto Se gestionan los aspectos relativos al entorno del cliente Se corrigen los defectos de la versión beta Se terminan los manuales de usuario y cursos de formación La atención se desplaza a la corrección de defectos

Fase de transición l l l Preparar la versión beta Instalación Adaptar el producto

Fase de transición l l l Preparar la versión beta Instalación Adaptar el producto a las circunstancias del usuario Completar los artefactos del proyecto Determinar cuándo se acaba el proyecto

Fase de transición l Si ya existía un software : – – l Sustitución

Fase de transición l Si ya existía un software : – – l Sustitución del sistema antiguo por el nuevo Transferencia de datos del sistema antiguo: migración y conversión de datos Evaluación – – De las iteraciones y de la fase Autopsia del proyecto

Fase de transición l Productos – – – El sistema software ejecutable + software

Fase de transición l Productos – – – El sistema software ejecutable + software instalación Documentos legales, contratos, licencias, garantías Versión completa y corregida del producto, incluyendo los modelos del sistema La descripción de la arquitectura completa y actualizada Manuales y material de formación del usuario, del operador y del administrador Referencias para la ayuda del cliente, cómo informar de defectos