Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modelos de Desarrollo
Modelos de Desarrollo
de software
septiembre de 2007
Referencias bsicas
Ingeniera de software. Un enfoque
prctico. Pressman, R. Quinta edicin. Mc.
Graw Hill 2002
Ingeniera de software. Sommerville, I.
Sptima edicin. Addison Wesley 2005
Ingenieria de Software
Un ingeniero civil supervisando la construccin
de un edificio para asegurar que sea estable y
de acuerdo a los requerimientos de los clientes.
Un ingeniero o varios ingenieros escribiendo
procedimientos de diversa complejidad para
desarrollar sistemas de software (sw)
El software de gran envergadura requiere de
mtodos, procedimientos y herramientas
Metodologas inapropiadas incrementan costos y
el consumo extra de tiempo.
3
Software
Caractersticas deseables
Confiable
Robusto
Reutilizable
Eficiente
Mantenible
Evolutivo
Portable
Utilizable
4
Proceso de Software
Proceso: Serie de operaciones usadas en la
creacin de un producto.
Proceso de Software: Conjunto de tareas que
tienen que ser realizadas para producir un
producto de software de alta calidad (Desarrollo
de software)
Proceso de Software: Proceso que se sigue para
construir un producto de software desde la
concepcin de una idea, hasta la entrega y el
retiro final del sistema.
5
Modelos de Desarrollo de
Software
Actividades en el proceso de desarrollo
de software
Anlisis de Requerimientos
Especificacin
Diseo
Programacin
Integracin y Gestin de Configuraciones
Validacin y Verificacin
Prototipaje
Modelos de Desarrollo de
Software
Relaciones entre las actividades: Modelo
de Desarrollo
Ciclo de vida del software
Modelos de desarrollo: cascada, espiral,
incremental, basado en transformaciones,
basado en reutilizacin, etc.
Actividades usuales
Anlisis de requerimientos
Datos provistos
Es una actividad
por los expertos
requerida
en
el dominio en
y
cualquier
usuarios
potenciales
modelo
Documentos
orientados al
usuario y tiles
para el analista:
Comprensibles Precisos
Completos
Consistentes
No ambiguos
Fcil de modificar
11
Anlisis de requerimientos
Identificar el problema
Documentar los requerimientos
Involucrar a los usuarios y expertos en el
dominio de aplicacin (requiere dilogo y
comunicacin)
Esta actividad puede mantenerse a lo largo
del proceso
Pueden crearse prototipos.
12
Especificacin
Describe en
forma precisa
Datos resultantes
sistema
delelanlisis
de a
desarrollar
requerimientos
y
consideraciones
tcnicas
Descripcin
orientada al
desarrollador
13
Especificacin
Puede ser informal, semiformal o formal
La especificacin formal permite
verificacin
En algunos modelos sustituye al diseo
Describe el qu y no el cmo
14
Diseo
Constituye un
refinamiento
del anlisis
Especificacin y
consideraciones
tcnicas
Descripcin
detallada
orientada al
implementador
15
Diseo
Se enriquece la descripcin del anlisis
incorporando aspectos de la plataforma de
desarrollo
Diseo arquitectnico: se desarrolla la
arquitectura del sistema
Diseo detallado: Se desarrollan los
componentes (algoritmos, representacin de
datos, etc.)
16
Programacin
Clases, mdulos
en el LP
seleccionado
Diseo y
consideraciones
tcnicas
Componentes de
programas Cdigo en un LP
17
Integracin y gestin de
configuraciones
Obtener el
sistema
ejecutable
Componentes de
programa
Ensamblaje de
versiones
coherentes de
los componentes
18
Validacin y verificacin
Permite
determinar la
confiabilidad o
correctitud del
Documentos
producto
(textos,
programas, etc)
Documentos
validados/
verificados
19
Validacin y verificacin
Validacin: el software responde a lo que espera
el usuario
Verificacin: el software satisface la
especificacin
prueba: el programa satisface la
especificacin
testing: bsqueda de errores en los
componentes, en la integracin, en el sistema.
20
Prototipaje
Desarrollo rpido
de programas
que constituyen
partes
del
sistema
Resultados
parciales del
anlisis
Prototipo (esbozo
parcial del sistema)
21
Prototipaje
Esbozo parcial del futuro sistema
Permite experimentar
Permite validar y precisar la especificacin de
requerimientos y caractersticas del futuro
sistema
Indispensable para el desarrollo de la interfaz.
22
Diseo del
Sistema
Liberacin
Diseo de
Programas
Validacin
del Sistema
Construccin
de Programas
Integracin
Validacin
de componentes
23
Modelos de desarrollo
Define la estructura de un proceso de
desarrollo racional y controlable
No existe un modelo universal
Los modelos no son rgidos
Son una gua respecto al orden en que deben
adelantarse las actividades
Se basa en el reconocimiento que el software
tiene un ciclo de vida.
24
Comprensin del
problema
Desarrollo del
software
25
...casi siempre...!!
Mantenimiento
del producto
26
27
Modelos de desarrollo
Secuencial Lineal
Cascada (clsico)
RAD (Desarrollo Rpido de Aplicacin)
Evolutivo
Incremental
Espiral
Basado en reutilizacin
Basado en transformaciones
......
28
Modelo de la cascada
Propuesto por Winston Royce en 1970
Conocido como modelo secuencial lineal
Encadenamiento secuencial de las
actividades
Cada etapa produce documentos que son la
entrada a la siguiente
Para desarrollar una etapa debe concluirse la
anterior
Popular en la dcada 70
29
Modelo de cascada
Modificado
Permite retroalimentacin y solapamiento
entre fases.
Es un modelo iterativo y no lineal.
Para facilitar la terminacin de metas y
tareas, es normal congelar partes del
desarrollo despus de cierto punto en la
iteracin.
30
Modelo de cascada
Ventajas:
Planificacin sencilla.
Una plantilla estructurada para ingeniera de sw.
Desventajas:
Evolucin de los Requisitos .
Resultados al final.
Retrasos innecesarios.
til en proyectos:
Todas las especificaciones claras inicialmente.
Producto no novedoso.
Complejos que se entienden bien desde el principio.
31
Modelo de cascada
Suponga:
Peter y David consultan a un arquitecto
para disear una casa. El arquitecto les
presenta un documento tcnico de 100
pginas. Como no entienden y para no leer
el documento, ellos aceptan el diseo.
Un ama de casa compra cortinas por
correo. Ella recibe una descripcin escrita
del corte y la tela.
32
Modelo Evolutivo
1. Entregar algo al usuario
2. Recibir retroalimentacin del usuario
3. Ajustar el diseo y objetivos basado a las
realidades observadas
Enfoques:
Incremental
Espiral
Basado en reutilizacin
35
Modelo Incremental
Desarrollo paso a paso donde las partes de
algunas etapas se posponen.
Cada etapa consiste en expandir incrementos
de un producto de software operacional
Incrementos pueden ser entregados al cliente
Cada incremento es diseado, codificado,
probado, integrado y entregado por separado
Los incrementos se desarrollan uno despus
de otro, basados en retroalimentacin
recibida del cliente.
36
Modelo Incremental
Ventajas:
Existe una disponibilidad limitada de recursos de
desarrollo.
Cuando es difcil establecer todos los
requerimientos por anticipado
Desventajas:
Si los requerimientos crecen, la arquitectura y el
diseo puede cambiar drsticamente
37
Modelo en espiral
Propuesto por Barry Boehm en 1988
Desarrollo en ciclos.
En cada ciclo:
se define el objetivo,
se analizan los riesgos,
desarrollo y verificacin de la solucin
obtenida,
revisin de resultados y planificacin del
siguiente ciclo
38
Modelo en espiral
Se centra en algunas mejores
prcticas:
Manejo de Riesgos
Orientacin al Cliente
Desarrollo Iterativo
39
Modelo en espiral
Ventajas:
Resolucin temprana de riesgos.
Definicin de arquitectura en sus fases
iniciales.
Basado en un proceso continuo de
verificacin de la calidad.
Ideal para productos con un nivel alto de
inestabilidad de los requerimientos.
40
Modelo en espiral
Desventajas:
No aplicable a proyectos bajo contrato.
No recomendable en proyectos simples.
41
Modelo Basado en
reutilizacin
Se basa en el ensamblaje de componentes
Bosquejar los
requerimientos
del sistema
Diseo
Arquitectnico
Bsqueda de
componentes
reutilizables
Bsqueda de
componentes reutilizables
Modificar requerimientos
acordes a los componentes
encontrados
Disear el sistema
utilizando los
componentes
reutilizables
42
Modelo Basado en
reutilizacin
Ventajas:
Incremento en la fiabilidad
Reduccin en el riesgo
Utilizacin efectiva de especialistas
Conformidad con los estndares
Desarrollo acelerado, quizs 70% como
indican algunos estudios
43
Modelo Basado en
reutilizacin
Desventajas:
Falta de apoyo de las herramientas
Sndrome de aqu no se ha inventado
Costo de encontrar, entender y adaptar
componentes reutilizables
44
Modelo Basado en
transformaciones
Conjunto de tcnicas y herramientas
basadas en modelos matemticos y lgica
formal que son utilizadas para especificar y
verificar los requerimientos y el diseo de
sistemas computarizados.
Se basa en especificaciones formales
Las especificaciones son refinadas hasta
alcanzar el programa
El mtodo formal se puede usar para
verificar el sistema de una manera rigurosa
usando tcnicas matemticas.
45
Modelo Basado en
transformaciones
Una especificacin formal es una
descripcin concisa del comportamiento y
propiedades de un sistema escrito en un
lenguaje basado en la matemtica.
Una prueba formal es un argumento
completo y convincente para la validez de
una tesis sobre la descripcin de un
sistema. Las pruebas formales se pueden
realizar manualmente o con la asistencia de
una herramienta automtica.
46
Modelo Basado en
transformaciones
Lenguajes de especificacin formal: PCS
(Procesos de Comunicacin Secuencial),
MDV (Mtodo de Desarrollo Vienna) y la
notacin Z.
47
Modelo Basado en
transformaciones
Aplicar Mtodos Formales en las fases de
levantamiento de requerimientos y de
diseo de alto nivel.
Las pruebas formales eliminan ambigedad
y subjetividad del anlisis de los
requerimientos.
El uso de especificaciones formales y
pruebas formales proveen un anlisis
sistemtico y repetible.
Pueden ser soportadas por herramientas de
computacin.
48
Modelo Basado en
transformaciones
Pero:
Es costoso
Consume demasiado tiempo
Requiere de programadores expertos en
el rea.
49
Cul modelo?
50
Ciclo de Negocio
Release
Ciclo de Desarrollo
Iteration
Story
51
XP - Elementos Principales
El Proceso de planificacin
Pequeos lanzamientos
Metforas: nombres y descripciones
comunes
Diseo simple
Pruebas unitarias continuas
Refactorizacin: reescriben ciertas partes
del cdigo para aumentar su legibilidad y
mantenibilidad pero sin modificar su
comportamiento
52
XP - Elementos Principales
Programacin por parejas
Propiedad colectiva: el cdigo es
modificado cuando se necesita sin retraso
Integracin continua
Semanas de 40 horas
Cliente altamente disponible
Codificacin estndar
53
XP - Ventajas
Cambios en los objetivos y prioridades son
naturales.
Sin sobrecarga al equipo de desarrollo
El cliente desde las primeras etapas tiene
software que puede usar y probar. En
cualquier momento puede parar el desarrollo,
quedndose con un producto que representa
lo invertido hasta esa fecha.
54
XP - Desventajas
Es necesario un representante del cliente en
todo momento del desarrollo
Todo el proceso de desarrollo se basa en la
comunicacin, si la misma es costosa o lenta
perjudica enormemente el tiempo y costo del
desarrollo
No sirve para proyectos grandes debido a sus
requerimientos de comunicacin
55