Proceso de Software y Ciclo de Vida
Proceso de Software y Ciclo de Vida
Proceso de Software y Ciclo de Vida
Proyecto de IS
Introducción a la IS
Proceso y Ciclo de Vida
Proceso Software y
Ciclo de Vida
Curso 2008-2009
Gonzalo Méndez
Dpto. de Ingeniería de Software e Inteligencia Artificial
Facultad de Informática
Universidad Complutense de Madrid
Conceptos importantes
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
Un traje
Personas
• El sastre
Producto
• El traje
Proyecto:
• el sastre, el traje, el presupuesto del traje, el traje en sí, los
pasos a dar para hacer el traje...
Proceso
• La secuencia de acciones para hacer un traje concreto
Una cena
Personas
• Empleados de una empresa de catering
Producto
• La cena que se sirve
Proyecto
• El menú, el presupuesto, lo que hay que hacer para
conseguir el menú, ...
Proceso
• La secuencia de acciones de servir una cena
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
Para vosotros
Personas
• vuestro grupo
Producto
• la aplicación elegida
Proyecto
• parte práctica IS
Proceso
• entregas mensuales + cómo vosotros decidáis
organizaros
Capas de la IS
Capa de enfoque de calidad
Capa de proceso
Capa de métodos
Capa de herramientas
Capas de la IS
Capa de calidad
• Base de cualquier proceso de ingeniería
• La IS se basa en calidad
• Mejores técnicas de construcción de software
Capa de proceso
• Capa que une calidad y métodos
• Desarrollo racional de la IS
• Conjunto de actividades y resultados asociados que
sirven para construir un producto software
Capas de la IS
Capa de métodos
• Un método incluye:
• Análisis de requisitos
• Diseño
• Construcción de programas
• Prueba
• Mantenimiento
• Suelen estar bastante ligados al proceso
Capa de herramientas
• Soporte automático o semiautomático para el proceso y los
métodos
• Herramientas CASE
Visión general de la IS
Con independencia del modelo de proceso hay
tres fases genéricas:
• Fase de definición
• Fase de desarrollo
• Fase de mantenimiento
Cada una de estas fases se descompone en un
conjunto de tareas
Fase de definición/especificación
Se identifican requisitos de 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
Fase de desarrollo
Se define:
• Cómo diseñar las estructuras de datos
• Cómo implementar las funciones
• Cómo caracterizar las interfaces
• Cómo traducir el diseño a programación
• Cómo validar el producto (pruebas, verificación)
• Tareas principales:
• Diseño del software
• Generación del código
• Pruebas del software
Fase de mantenimiento
Centrada en cambios que se pueda necesitar realizar
sobre un producto
Se vuelven a aplicar las fases de definición y
desarrollo, pero sobre software ya existente
Pueden producirse cuatro tipos de cambio:
• Corrección: Corregir los defectos
• Adaptación: Modificaciones por cambio externo
• Mejora: Ampliar los requisitos funcionales originales, a
petición del cliente
• Prevención: Cambio para facilitar el cambio
Visión general de la IS
Estas fases se complementan con las
actividades de soporte
• No crean software
• Mejoran su calidad
• Facilitan su desarrollo
Se aplican a lo largo de todo el proceso del
software
Visión general de la IS
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
Proceso software
Conjunto estructurado de actividades y resultados
asociados requeridos para desarrollar un sistema de
software
• Especificación: establecer requisitos y restricciones
• Diseño: Producir un modelo en papel del sistema
• Implementación: construcción del sistema de software
• Validación: verificar (por ejemplo mediante pruebas) que el
sistema cumple con las especificaciones requeridas
• Instalación: entregar el sistema al usuario
• Evolución y mantenimiento: cambiar/adaptar el software
según las demandas; reparar fallos en el sistema
Modelos de proceso
Un modelo de proceso, o paradigma de IS, es
una plantilla, patrón o marco que define el
proceso a través del cual se crea software
Dicho de otra forma, los procesos son
instancias de un modelo de proceso
En esta asignatura los términos proceso y
modelo de proceso se utilizan indistintamente
Modelos de proceso
Una organización podría 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 requeridas
Características del 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 en que el proceso puede proporcionar un
sistema a partir de una especificación
Modelos Genéricos de Desarrollo de
Software
Modelo de Cascada
Prototipado
Desarrollo Evolutivo
En espiral
Desarrollo basado en componentes
Métodos Formales
Modelo en cascada (waterfall)
Modelo de proceso clásico (desde los 70)
Basado en la mentalidad de línea de
ensamblaje (cartesiano)
Es sencillo y fácil de entender
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 tiene que haber
conseguido todos los objetivos de la fase anterior
• No hay apenas comunicación entre las fases
Modelo en cascada (waterfall)
Definición de
Requisitos
Implementación y
Pruebas Unitarias
Integración y Prueba
del Sistema
Operación y
Mantenimiento
Modelo en cascada (waterfall)
Fases:
• Conceptualización: Se determina la arquitectura de la
solución (división del sistema en subsistemas)
• 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 de software y sistemas
• Instalación y comprobación: Se instala el software al
cliente, el cual comprueba la corrección de la aplicación
Se supone que sólo se baja en la cascada... pero
también se puede subir (aunque difícilmente)
Modelo en cascada (waterfall)
Posibles ventajas:
• Sencillo: Sirve cuando el personal está poco cualificado
• Aplicable cuando el problema es estable y cuando se
trabaja con técnicas conocidas
Críticas:
• No se ve un producto hasta muy tarde en el proceso
• Un error grave detectado en las últimas fases puede ser letal
• Especificación de requisitos estable
• Impone una estructura de gestión de proyectos
• Fases muy rígidas
• Las revisiones de proyectos de gran complejidad son muy
difíciles
Prototipado
Se usa un prototipo para dar al usuario una idea
concreta de lo que va a hacer el sistema
Se aplica cada vez más cuando la rapidez de
desarrollo es esencial
Prototipado evolutivo: el prototipo inicial se refina
progresivamente hasta convertirse en versión final
Prototipado desechable: de cada prototipo se extraen
ideas buenas que se usan para hacer el siguiente, pero
cada prototipo se tira entero
Prototipado
Escuchar
al cliente
Construir/
revisar
prototipo
El cliente
evalúa el
prototipo
Prototipado
Comienza con la recolección de requisitos
• Cliente 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 (e.g. 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 prototipo?
Prototipado
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 por qué hay que desechar el 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
– Utilizar un SO o lenguaje de programación inadecuado pero conocido
Modelos evolutivos
Características:
• Gestionan bien la naturaleza evolutiva del software
• Son iterativos: construyen versiones de software
cada vez más completas
Se adaptan bien:
• Los cambios de requisitos del producto
• Fechas de entrega estrictas poco realistas
• Especificaciones parciales del producto
Modelos evolutivos
Actividades
Concurrentes
Versión
Especificación Inicial
Descripción Versiones
del sistema
Desarrollo Versiones
Intermedias
Intermedias
Validación Versión
Final
Modelos evolutivos. Incremental
Fusiona el modelo lineal secuencial con el de
construcción de prototipos
A D C P 1er incremento
A D C P 2º incremento
60-90 días
Desarrollo Basado en Componentes
Ventajas
• Rapidez
• Válido para aplicaciones modularizables
Inconvenientes
• Exige conocer bien los requisitos y delimitar el ámbito del
proyecto
• Número de personas
• Clientes y desarrolladores comprometidos
• Gestión riesgos técnicos altos
• Uso de nueva tecnología
• Alto grado de interoperabilidad con sistemas existentes
Desarrollo Basado en Componentes
Identificar
componentes
candidatos
Construir Buscar
iteración N componentes
del sistema en biblioteca
Añadir Extraer
componentes componentes
a biblioteca disponibles
Construir
componentes
que falten
Desarrollo con métodos formales
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
Desarrollo con métodos formales
Formal transformations
T1 T2 T3 T4
Formal R1 Executable
R2 R3
specification program
P1 P2 P3 P4
Proceso de
Requisitos desarrollo de Sistema
de usuario software software
Phases
Process Components Inception Elaboration Construction Transition
Requirements Capture
Implementation
Organization Test
along content
Supporting Components
Management
Environment
Deployment
preliminary iter. iter. iter. iter. iter. iter. iter.
iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1
Iterations
Extreme Programming (XP)
Modelo de proceso de Kent 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 (XP)
Basado en pruebas automatizadas escritas por
desarrolladores y clientes (test-driven)
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
Extreme Programming (XP)
La estructura del proceso, si la hay, es un poco
atípica
Actividades en XP
Extreme Programming (XP)
Las cuatro actividades están soportadas por doce prácticas:
• El juego de planificación
• Pequeñas entregas
• Metáfora
• Diseño simple
• Prueba
• Refactoring
• Programación en pareja
• Propiedad colectiva
• Integración continua
• Semana de cuarenta horas
• Cliente en el lugar de desarrollo
• Codificación estándar
Extreme Programming (XP)
Ventajas:
• Bueno para especificaciones cambiantes
• Fundamentación práctica
Inconvenientes:
• Poco probado
• Poco compatible con especificaciones/diseños
totales
• Sólo funciona con equipos pequeños (hasta diez
personas)
Extreme Programming (XP)
Level 5
Optimizing
Level 4
Managed
Level 3
Defined
Level 2
Repeatable
Level 1
Initial
Áreas clave del proceso
O p t i m i zi n g
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
M a n a g ed
S o f tw a re q u a l it y m a n a g e m e n t
Q u a nt it a t iv e p r o c e s s m a n a g e m e n t
D e fin e d
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 a t io n
S o f tw a r e p r o d u c t 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 a r e m a n a g e m e n t
T ra ining p rog ra 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
R e p e atab le
S o f tw a r e c o n f i g u ra t io n m a n a g e m 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 e m 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