1
Un ciclo de vida iterativo para desarrollar software
José Vargas Mery
Parte 1: Temas
Procesos de software.
Desarrollo iterativo.
Proceso Unificado.
Documento de Visión.
Casos de Uso.
Identificación de riesgo y criticidad.
Requisitos.
Proceso de software
Cómo desarrollar, instalar y mantener software.
Cumplen 3 roles:
Qué, cuándo.
• Especificarqué artefactos deben desarrollarse y
cuándo.
Cómo.
• Guía para ordenar las actividades de un equipo.
• Dirigir las tareas de los desarrolladores
individuales y del equipo.
Medidas.
• Ofrecer criterios para supervisar y medir los
productos y actividades.
Porque?
Procesos no sustentables:
El equipo desarrolla de manera ad hoc.
• … terminaremos el proyecto a tiempo? … con qué calidad?
Eléxito depende del esfuerzo heroico de unos pocos.
• … y si se van los “expertos”?
Procesos bien definidos:
Proceso repetible, predecible y mejorable (estable).
Aumenta la eficiencia y productividad de la organización,
negocio sustentable.
Desarrollo de sistemas complejos.
Facilitan y promueven las mejores prácticas de la ingeniería de
software.
Organizaciones maduras.
¿Cómo? …secuencialmente
1.
2.
3.
4.
5.
Entender completamente el problema, sus
requisitos y restricciones, escribirlo, y hacer que
todos los interesados estén de acuerdo.
Diseñar una solución que cumple con todos los
requisitos y restricciones, y asegurarse que
todos los interesados estén de acuerdo.
Implementar la solución.
Verificar que la implementación cumple con los
requisitos establecidos.
Entregar:Problema resuelto!
… Pero no siempre sirve
Funciona bien en ciertos tipos de proyectos de software:
Proyectos cortos, podemos anticipar lo que va a pasar, todos
los aspectos difíciles los entendemos bien.
Proyectos poco novedosos, que hemos hecho antes, usando
la misma gente, las mismas herramientas y el mismo diseño.
Pero en otros fracasa:
Hicimos suposiciones erradas.
No hemosincorporado algunos factores humanos (la realidad!).
El contexto del desarrollo de software es diferente del de
otras disciplinas de la ingeniería.
Estamos en una fase exploratoria de la ingeniería de software
aún no tenemos cientos de años de experiencia.
Receta para fracasar
“Congelar requisitos”:
Los usuarios, el problema, la tecnología y el mercado
cambian!.
No podemos capturarrequisitos con suficiente detalle y precisión.
“Haremos un diseño correcto, eficiente y factible
en papel antes de proseguir”:
Tal vez … si aplicamos seguimiento de requisitos, métodos de
derivación formales, demostraciones automáticas, técnicas
generadoras, simulaciones de diseños, etc.
Las teorías fundamentales en ingeniería de software son débiles y
no las entendemos bien.
“Lo perfecto esenemigo de lo bueno”, Voltaire.
Desarrollo iterativo …
Enfoque astuto para desarrollar software.
Desarrollo organizado en una serie de mini
proyectos, cortos y de duración fija iteraciones:
Cada iteración (p.ej., de 2 semanas) incluye sus
propias actividades de análisis de requisitos, diseño,
implementación y pruebas.
El resultado de cada iteración es un sistema probado,
integrado yejecutable.
… + Desarrollo incremental
El sistema crece y es refinado
incrementalmente de una iteración a otra.
La retroalimentación cíclica y la
adaptación son actividades centrales para
converger hacia un sistema apropiado.
Las primeras ideas de procesos iterativos
se conocieron bajo otros nombres:
Desarrollo en espiral.
Desarrollo evolutivo.
De un proceso secuencial …
a unoiterativo + incremental
R
C
D
I
una iteración
R
R
R
D
D
D
I
D
C
C
C
R
I
C
I
tiempo
R: requisitos
D: diseño
C: codificación y pruebas
I : integración y pruebas
I
Ejemplo: Proyecto de 2 iteraciones
y 15 semanas
Semanas
Increm. 1
1
2
3
Requisitos
4
5
6
7
Diseño
8
9
10 11
Codif.
12
13
14
15
Integrac.
Increm. 2
Requisitos
Diseño
Codif.
Recopilación de Información...
Regístrate para leer el documento completo.