Otra vez… Antes de comenzar… Algunos Conceptos Sistema de Información Pasos para la solución de un problema Personas que intervienen

en el desarrollo de un proyecto de Sw. Quién dice yo? Usuarios de un sistema Modelo Ingeniería de Software Papel (Rol) Actividad, recurso tarea, trabajo, proyecto

¿Qué es un ciclo de vida de software?
 El periodo de tiempo que comienza cuando se concibe

un software y concluye cuando el producto ya no está disponible para su uso.  El ciclo de vida del software típicamente incluye una fase de requisitos, una fase de diseño, una fase de pruebas, una fase de instalación y aceptación, una fase de operación y mantenimiento, y, con ocasiones, una fase de retirada.  Un modelo de ciclo de vida es una abstracción particular que representa un ciclo de vida de software.  Un modelo de ciclo de vida se denomina con frecuencia un ciclo de vida de desarrollo software (SDLC, siglas inglesas).
Estándar de Terminología de la Ingeniería del Software del IEEE

Etapas del Ciclo de Vida
 Planificación

Ámbito del proyecto Estudio de viabilidad Análisis de riesgos
 Análisis (¿Qué?)

Requerimientos funcionales y no funcionales Modelado de datos y de procesos
 Diseño (¿Cómo?)

Estudio de alternativas y diseño arquitectónico Diseño de base de datos Diseño de las aplicaciones

Etapas del Ciclo de Vida
 Implementación

Adquisición de componentes, creación e integración de los recursos necesarios para que el sistema funcione.
 Pruebas

Pruebas de unidad, pruebas de integración, test de aceptación.
 Instalación / Despliegue

 Uso y mantenimiento

Modelos de ciclo de vida .

.

Qué hacer? Cómo hacerlo? Especificaciones Corrección Adaptación Mejora Prevención .

Modelos de ciclo de vida Ciclo de vida en cascada .

Es un modelo sencillo (para explicar al cliente). También llamado ciclo de vida clásico. sugiere un enfoque sistémico secuencial en el desarrollo del software. . Requiere que los requerimientos estén bien definidos y estables en forma razonable.CARACTERISTICAS DEL CICLO DE VIDA CLASICO Es el paradigma más antiguo para la Ingeniería del Software.

INCONVENIENTES….EL CICLO TRADICIONAL DE LOS S.I. FASE N + 1 FASE N FASE 3 EL USUARIO: FASE 2 FASE 1 ..

sino hasta el final  El usuario o el ambiente pueden cambiar las especificaciones originales del sistema. .  Presenta numerosos problemas Analista-Usuario ya que es difícil para el cliente establecer todos los requisitos de manera explícita.INCONVENIENTES  Es raro que los proyectos reales sigan un flujo secuencial El usuario no ve resultados.

.Ciclo de vida en cascada Básico Conduce a estados de bloqueo en donde algunos miembros de equipo deben esperar a otros para terminar tareas dependientes.

Ciclo de vida en cascada con “feedback” o Modelo de Royce Definición de Requerimientos Diseño del Software y del Sistema La dificultad en este modelo reside. en la dificultad de hacer cambios entre etapas. Implementación y Prueba de unidades Integración y Prueba del Sistema Operación y Mantenimiento .

la iteración donde se reformulan partes anteriores es siempre una parte de sistemas grandes.  Dos vertientes   Entrega Incremental Desarrollo en espiral .Proceso iterativo  Los requisitos de un sistema evolucionan durante el curso de un proyecto.  La Iteración de puede aplicar a cualquiera de los Modelos de proceso genéricos.

Modelos de ciclo de vida Ciclo de vida Incremental .

 Una vez se comienza el el desarrollo de un incremento se fijan los requisitos. el desarrollo y entrega se hace en incrementos.Modelo Incremental  En lugar de hacer una sola entrega del sistema. .  Los requisitos del usuario se atienden por lista de prioridades. los de mayor prioridad se incluyen en los primeros incrementos. aunque los requisitos de incrementos posteriores pueden evolucionar. cada entrega con parte de la funcionalidad requerida.

Modelo de desarrollo incremental .

Modelo Incremental .

Ventajas del Desarrollo Incremental  El usuario se involucra más.  Los primeros incrementos sirven de prototipos que ayudan en la elaboración de requisitos para incrementos posteriores.  El valor para el cliente aumenta con cada incremento y la funcionalidad esta disponible antes.  El riesgo de que el proyecto falle es menor.  Los servicios del sistema de mayor prioridad se prueban con mayor frecuencia. .

Modelo de desarrollo incremental .

Modelos de ciclo de vida Ciclo de vida en Espiral .

 Cada vuelta de la espiral representa una fase del proceso. .  Los riesgos se evalúan y resuelven a través de todo el proceso.  No hay fases fijas – se seleccionan vueltas en la espiral segun sea requerido.Modelo de Desarrollo en Espiral  El Proceso de representa como una espiral. en lugar de una secuencia de actividades.

mayor será el riesgo.  El riesgo es proporcional al monto de la calidad de la información disponible. .  Las actividades con alto riesgo causan sobre-gasto y muchas veces ponen en peligro que se lleve a buen término el proyecto. Cuanto menos información se tenga.  La tarea principal del administrador consiste en minimizar riesgos.Manejo de Riesgos  El “riesgo” inherente en una actividad se mide en base a la incertidumbre que presenta el resultado de esa actividad. estos se evalúan y se añaden actividades para reducirlos.

Modelo en espiral .

Modelo en espiral .

Ventajas del Modelo en Espiral  Incorpora objetivos de calidad y gestión de riesgos.  Cada ciclo empieza identificando: Los objetivos de la porción correspondiente • Las alternativas • Restricciones  Cada ciclo se completa con una revisión que incluye todo el ciclo anterior y el plan para el siguiente. • .

el modelo evolutivo asume que los requerimientos no son completamente conocidos al inicio del proyecto. .Modelo de desarrollo evolutivo Como el modelo de desarrollo incremental. mientras que la aproximación incremental presupone que el conjunto completo de requerimientos es conocido al comenzar. Sin embargo. el modelo de desarrollo evolutivo (algunas veces denominado como prototipado evolutivo) construye una serie de grandes versiones sucesivas de un producto.

El desarrollo evolutivo es 100% compatible con el modelo cascada. El desarrollo evolutivo no demanda una forma específica de observar el desarrollo de algún incremento. el modelo cascada puede ser usado para administrar cada esfuerzo de desarrollo. Así. el desarrollo incremental y evolutivo puede ser combinado también. . Obviamente.

Desarrollo Evolutivo .

Modelo de desarrollo evolutivo .

por ejemplo la interface de usuarios. por ejemplo.  Se puede aplicar para partes de un sistema mayor.  No se conocen niveles apropiados de calidad y documentación.Características del Desarrollo Evolutivo  Reduce el riesgo y aumenta la probabilidad de éxito.  El proceso no es visible. lenguajes para prototipos rápidos  Construir software para que pueda ser modificado fácilmente es un “arte desconocido” .  Requiere destrezas especiales.

Modelos de ciclo de vida basados en Prototipos .

Modelo de prototipado de requerimientos El prototipado de requerimientos es la creación de una implementación parcial de un sistema. clientes o representantes de ellos. . posibilitando que ellos experimenten con el prototipo. quienes capturan en la documentación actual de la especificación de requerimientos la información entregada por los usuarios para el desarrollo del sistema real. Estos individuos luego proveen la retroalimentación sobre lo que a ellos les gustó y no les gustó acerca del prototipo proporcionado. Un prototipo es construido de una manera rápida tal como sea posible. Esto es dado a los usuarios. para el propósito explícito de aprender sobre los requerimientos del sistema.

Modelo de prototipado de requerimientos -Todos los requerimientos no son conocidos al principio. . -Se hace una implementación parcial del sistema y se prueba. -Se utiliza en sistemas complejos. -La aplicación se hace por fases. -Los usuarios lo prueban y añaden requerimientos. -Sólo se desarrollan los que se conocen bien.

.

Modelo basados en prototipos .

Modelo basados en prototipos .

.

 El software puede representarse como una combinación de módulos Diseñar aplicaciones = especificar módulos + interrelaciones.LA REUTILIZACION EN EL CICLO DE VIDA Principios de la reutilización:  Existen similitudes entre distintos sistemas de un mismo dominio de aplicación. .

LA REUTILIZACION EN EL CICLO DE VIDA Los sistemas nuevos se pueden caracterizar por diferencias respecto a los antiguos ☺ Reduce tiempos y costos de desarrollo ☺ Aumenta la fiabilidad Dificultad para reconocer los componentes potencialmente reutilizables. Dificultad de catalogación y recuperación. . Problemas de motivación.

.Modelo de Desarrollo de software basado en componentes  Basado en reuso. (Los COTS o “Commercial-off-the-shelf systems”)  Etapas del proceso  Análisis de componentes  Modificación de requisitos  Diseño del sistema con reuso  Desarrollo e integración  Este modelo se usa cada vez mas gracias a la estandarización de componentes. Los sistemas se integran partiendo de componentes existentes o adquiridos.

Modelo de Desarrollo de software basado en componentes .

Desarrollo basado en reuso .

. Los modelos presentados. Criterios a considerar:  Madurez de la aplicación (relacionado a la probabilidad que muchos requerimientos comenzarán a conocerse sólo después del uso del sistema). un proyecto puede decidir cuáles enfoques son más útiles en situaciones especiales. Aunque todos ellos son compatibles unos con otros. suministran una guía con el fin de ordenar las diversas actividades técnicas en el proyecto de desarrollo de software e intentan suministrar un marco para la administración en el desarrollo y el mantenimiento.Seleccionando Modelos de Ciclo de Vida.

Tolerancia al riesgo. y su perfil como una función del tiempo.Seleccionando Modelos de Ciclo de Vida. Planes y presupuestos críticos Grado de lentitud de construcción dentro de los planes y presupuestos. Certeza de requerimientos conocidos. Acceso de los desarrolladores a los usuarios. . Financiamiento disponible.  Complejidad del problema y de la solución.  Frecuencias y magnitudes esperadas de los       cambios de requerimientos.

MODELOS PARA DESARROLLO DE SISTEMAS ORIENTADOS A OBJETOS  Modelo de Agrupamiento  Modelo Remolino  Modelo PinBall .