El Proceso Software
Miguel A. Laguna
Contenidos
2.1 Modelos de Proceso
2.1.1 Modelos genéricos de desarrollo
2.1.2 Métodos de desarrollo orientados a objetos
2.2 El Proceso Unificado de Desarrollo o Unified
Process
2.3 Fases y disciplinas (o flujos de trabajo)
2.3.1 Fases y puntos de control
2.3.2 Disciplinas (flujos de trabajo)
2.3.3 Artefactos
2.4 Disciplinas de gestión
2.5 La fase de Inicio (Inception)
2.6 La fase de Elaboración
2.7 Las fases de Construcción y Transición
Objetivos del tema
HERRAMIENTAS
UML
TECNICAS
PROCESO
El proceso software
Un conjunto estructurado de actividades y resultados
asociados que conducen a la creación de un producto
de software
Especificación: Definir la funcionalidad y las restricciones en
sus operaciones
Diseño e implementación: Producir software que cumple la
especificación
Validación: Asegurar que hace lo que el cliente desea.
Evolución: Seguir cumpliendo los cambios en las
necesidades del usuario.
Un modelo de proceso es una representación
abstracta de un proceso. Presenta una descripción de
un proceso desde una perspectiva particular.
2.1.1
Modelos genéricos de desarrollo
Modelo en Cascada
Definición
Definicióndede
Requisitos
Requisitos
Diseño
Diseñodeldelsistema
sistemayy
del software
del software
Implementación
Implementaciónyyprueba
prueba
de unidades
de unidades
Integración
Integraciónyy
prueba
pruebadel
delsistema
sistema
Operación
Operaciónyy
mantenimiento
mantenimiento
Fases del modelo en cascada
Desarrollo evolutivo
Actividades
concurrentes
Especificación Versión
Versión
Especificación Inicial
Inicial
Bosquejo
Bosquejodedelala Desarrollo Versiones
descripción Desarrollo Versiones
Versiones
descripción Versiones
intermedias
intermedias
intermedias
intermedias
Validación Versión
Versión
Validación final
final
Desarrollo evolutivo
La ventaja es que la especificación se desarrolla de
forma creciente.
Problemas
Hay que documentar cada versión del sistema
Los sistemas tienen una estructura deficiente
Se requieren herramientas y técnicas especiales
(p.e. conocimientos en lenguajes para el
prototipado rápido)
Aplicabilidad
Para sistemas interactivos pequeños o de tamaño
mediano
Para partes de sistemas grandes (e.g. el interfaz
de usuario)
Para sistemas con vida corta
Proceso mixto
Desarrollar un prototipo desechable (con
enfoque evolutivo) para resolver
incertidumbres en la especificación inicial.
Reimplementar con un enfoque más
estructurado, con un proceso basado en el
modelo en cascada.
Desarrollo formal de sistemas
Integración
Integraciónyy
Definición
Definiciónde
de Especificación
Especificación Transformación
Transformación prueba
pruebadel
del
Requisitos
Requisitos formal
formal formal
formal sistema
sistema
Desmostración
de la corrección
Desarrollo formal de sistemas
Problemas
Se necesitan habilidades y el entrenamiento
especializados para aplicar la técnica
Es difícil especificar formalmente algunos aspectos
del sistema tales como la interfaz de usuario
Aplicabilidad
Sistemas críticos donde la seguridad o la fiabilidad
debe garantizarse antes de que el sistema se
ponga en explotación
Diseño
Diseñodede
Especificación
Especificación Análisis
Análisisde
de Modificación
Modificacióndede sistemas
sistemascon
con
de
deRequisitos
Requisitos componentes
componentes requisitos
requisitos reutilización
reutilización
Desarrollo
Desarrolloee Validación
Validacióndel
del
integración
integración sistema
sistema
Desarrollo incremental
Definir Diseñar
Diseñarlala
Definirrequisitos
requisitos Asignar
Asignarrequisitos
requisitosaa
iniciales cada incremento arquitectura
arquitectura
iniciales cada incremento
del
delsistema
sistema
Desarrollar
Desarrollar Validar
Validar Integrar
Integrar Validar
Validar
incremento
incremento incremento
incremento incrementos
incrementos sistema
sistema
Sistema
final
Sistema incompleto
Desarrollo incremental
incremento 2
analysis design code test Entrega del
incremento 2...
tiempo
Desarrollo en espiral
Planificación
Análisis de riesgos
Comunicación con
el usuario
Ingeniería
Evaluación del
Desarrollo y validación
usuario
Sectores del modelo en espiral
Definición de objetivos
Se identifican los objetivos de cada fase, las alternativas y
las restricciones.
Evaluación y reducción de riesgos
Se determinan los riesgos de cada fase y se ponen en
marcha las actividades que reduzcan estos riesgos.
Desarrollo y validación
Se elige el modelo de desarrollo más apropiado para el
sistema de entre todos los modelos genéricos.
Planificación
Se revisa el proyecto y, si se continúa, se planifica la
siguiente fase (nueva vuelta a la espiral).
Desarrollo en espiral
Generaciones de Métodos
Años 60 y 70:
COBOL, FORTRAN, C
Métodos de análisis y diseño estructurados
Años 80 y primeros 90:
C++, Smalltalk, Ada
Métodos OO de primera generación: OMT,
Jacobson
Finales de los 90:
Java
UML
Métodos OO avanzados, Proceso Unificado
Métodos estructurados y...
STD
DFD PROGRAMA
DATOS
RELACIONAL TABLAS
DER
Evolución de la OO
Interfaz de
usuario Texto GUI
Lenguaje de Procedimental OO
programación C, Cobol C++, Java
SGBD Relacional OO ?
Métodos OO (antes de UML)
• Métodos dirigidos por los datos (data-driven)
- OMT (Rumbaugh et al. 1991)
- FUSION (Coleman et al. 1994)
Diagramas de
clases
Diagramas de
estados
DFDs
Método de Booch
Modelo dinámico
Estructura
Modelo Estático
de objetos
Clase parametrizada
Argumentos Argumentos
formales actuales
Nombre de la Nombre de la
clase clase
parametrizada instanciada
OOSE (Jacobson)
Es un método que se basa en la idea de los casos de uso como
forma de analizar los requisitos del usuario
Proceso de análisis:
Modelo de Modelo de
requisitos análisis
<<extends>>
Cliente local
<<uses>> Giro
Identificación
Métrica Versión 3
Cubre desarrollo estructurado y orientado a objetos
Métrica 3. Análisis
Objetivo: obtención de una
especificación detallada del sistema
que satisfaga las necesidades de los
usuarios y sirva de base para el
posterior diseño del sistema
Métrica 3. Diseño
Objetivo: definir la arquitectura del sistema,
el entorno tecnológico y la especificación
detallada de los componentes del sistema
UML no es suficiente
Características del Proceso Unificado
Componentes de un Método
Elementos de modelado
Un conjunto fundamental de conceptos de modelado para
capturar el conocimiento semántico sobre un problema y su
solución
Los conceptos de modelado son independientes de cómo se
visualizan
Notación
Un conjunto de vistas y notaciones para presentar la
información de modelado subyacente que permite a las
personas examinarlos y modificarlos
Proceso
Tiene como cometido la formalización de las actividades
relacionadas con la elaboración de sistemas software
Experiencia
Una colección de reglas y heurísticas para llevar a cabo el
desarrollo
UML no es un método
Personas, Equipos,
Experiencia
Lenguaje
Proceso
de Modelado
?
¿Qué es un Proceso?
Describe un conjunto de actividades que deben
realizarse en un determinado orden
qué hacer, cómo hacerlo, cuando hacerlo y el motivo por el cual
debe ser hecho
Debe ser:
Reproducible
Definido
Medible en cuanto a rendimiento
Optimizable...
Nuevos Sistema
Proceso
software
Requisitos Nuevo
Dos elementos complementarios
UML Proceso
Unificado
• Estándar • Proceso
OMG marco
adaptable
• No es un
estándar en sí
Unified Process
SPEM
1999
(2002)
Estándares
OMG
Rational Objectory Process 4.1
1996-1997
UML
Objectory Process 1.0-3.8
Rational 1987-1995
Ericsson (Jacobson)
Software Process Engineering Metamodel
OMG
SPEM,
2002
UP es un Proceso “marco”
Se centra en la arquitectura:
La arquitectura es prioritaria desde el principio hasta el
final
Se facilita el refinamiento progresivo de la arquitectura
Iterativo e incremental:
El trabajo se divide en iteraciones pequeñas en función
de la importancia de los casos de uso y el análisis de
riesgos
Vista
Vista de
de
Vista
Vista Lógica
Lógica Realización
Realización
Vista de
Casos de Uso
Vista
Vista de
de Vista
Vista de
de
Procesos
Procesos Despliegue
Despliegue
(Philippe Kruchten)
Arquitectura y Modelos
Modelos
Vistas
Estructura y función
Tiempo
Implementación
Implementación
Implementación
Diseño
Diseño
Diseño
Diseño
Instalación
Instalación
Instalación
Instalación
Requisitos
Requisitos
Requisitos
Requisitos
Gestión Gestión Gestión Gestión
2.3
Fases y disciplinas
(o flujos de trabajo)
Artefactos:
Cualquier tipo de información producida por los desarrolladores de un
sistema (diagramas UML, código, ejecutables, casos de prueba...)
Se construyen de forma incremental
fases
Las fases se dividen en iteraciones
Ciclo de desarrollo
iteración fase
Elaboración
Transición
tiempo
Se pretende:
Sincronizar las expectativas y la realidad
Identificar los riesgos
Se evalua la situación global del proyecto
Se necesitan:
Resultados tangibles para comparar con las expectativas
Varios niveles:
Hitos principales al final de cada fase
Hitos secundarios final de cada iteración
tiempo
Release
Release Release Release Release Release Release Release
Una iteración es una secuencia de actividades con un plan establecido
y unos criterios de evaluación, cuyo resultado es una versión
ejecutable (hito secundario)
Disciplinas o flujos de trabajo
Organizan las actividades fundamentales de gestión y
desarrollo del proyecto
Análisis
Diseño
Implementación
Pruebas
Iteraciones
Fases y disciplinas: SPEM
La propuesta de proceso estándar admite distintas
combinaciones de disciplinas y fases
Disciplinas: Inicio Elaboración Construcción Transición
Requisitos
Diseño
Implementación
Prueba
Despliegue
Gestión de la
Configuración
Entorno
Iteraciones
Requisitos
Diseño
Implementación
Prueba
Despliegue
Gestión de la
Configuración
Entorno
Iteraciones
Artefactos
Definición de artefacto (o producto):
Cualquier tipo de información producida por los
desarrolladores de un sistema.
Tipos de artefactos
Diagramas UML
Código fuente
Ejecutables
Casos de prueba...
Análisis Modelo de
análisis
Implementación Modelo de
Implement.
Pruebas Modelo de
Pruebas
Cada disciplina se
asocia con modelos
Modelo de casos de uso
Diagramas
de casos de uso
Modelo de
casos de uso Diagramas Diagramas
de clases de objetos
Modelo de
análisis
Diagramas
de componentes
Modelo de Diagramas
diseño de despliegue
Diagramas
Modelo de de secuencia
despliegue
Diagramas
Modelo de de colaboración
Implement.
Diagramas
de estados
Modelo de
Pruebas
Diagramas
de actividades
Modelo de Diagramas
diseño de despliegue
Diagramas
Modelo de de secuencia
despliegue
Diagramas
Modelo de de colaboración
Implement.
Diagramas
de estados
Modelo de
Pruebas
Diagramas
de actividades
El “Caso de desarrollo”
El número de posibles diagramas, modelos, vistas,
ficheros fuente, casos de pruebas, etc. es muy grande
Puntos de función
weighting factor
measurement parameter count simple avg. complex
number of user inputs X 3 4 6 =
number of user outputs X 4 5 7 =
number of user inquiries X 3 4 6 =
number of files X 7 10 15 =
number of ext.interfaces X 5 7 10 =
count-total
complexity multiplier
function points
Calidad y productividad
Técnicas de estimación
No hay una forma simple de hacer una
estimación exacta del esfuerzo requerido para
desarrollar un sistema de software
Las estimaciones iniciales se basan en información
poco precisa que aportan los usuarios
El software puede tener que ejecutarse en
ordenadores no conocidos o utilizar tecnología nueva
El personal del proyecto es desconocido
Red de actividades
14/7/99 15 days
15 days
M1 T3
8 days T9
T1 5 days 4/8/99 25/8/99
25/7/99
T6 M4 M6
4/7/99 M3
start 20 days 7 days
15 days
T7 T11
T2
4/7 11/7 18/7 25/7 1/8 8/8 15/8 22/8 29/8 5/9 12/9 19/9
Start
T4
T1
T2
M1
T7
T3
M5
T8
M3
M2
T6
T5
M4
T9
M7
T10
M6
T11
M8
T12
Finish
Asignación de personal
4/7 11/7 18/7 25/ 1/8 8/8 15/8 22/8 29/8 5/9 12/9 19/9
Fred T4
T8 T11
T12
Jane T1
T3
T9
Anne T2
T6 T10
Jim T7
Mary T5
Gestión del riesgo
El análisis de riesgos consiste en evaluar el
proyecto, la tecnología y los recursos con el
fin determinar y comprender la naturaleza y
el origen de los riesgos
Posibles riesgos:
Comerciales (competencia, etc.)
Financieros (económicos, etc.)
Técnicos (¿base tecnológica sólida y
probada?)
De desarrollo (¿equipo experimentado?)
Tabla de riesgos
100 60.00-100.00
10 10.00
3.00
1.50
1.00
1 0.75
Conceptos de calidad
¿Cómo se aplica al software?
Control de calidad: inspecciones, revisiones,
pruebas
Aseguramiento de la calidad: análisis, auditoría e
informes
Proceso y
Revisiones
Estandares formales
Análisis
& Planifica-
Informes ción de las
pruebas
Métricas
Cambios en
Requisitos de negocio
Cambios en
Requisitos técnicos
Cambios en otros
Requisitos de usuario
modelos de software
Plan
datos
Pruebas
código
Gestión de la configuración del software
programas documentación
Hay cambios
en muchas datos
piezas
• identificación
• control de versiones
HERRAMIENTAS
• control de cambios
TECNICAS • auditoría
• informes
PROCESO
• construcción
Modelo del
Dominio
Conceptos, asociaciones
*
y atributos *
:System
foo( x )
Requisitos Glosario ...
bar( y )
Casos
de uso
diagramas diagramas
Modelo de diseño
Diseño
2.6
La fase de Elaboración
Objetivos de la fase de Elaboración
En cuanto a la arquitectura:
¿Satisface los requisitos? ¿Es robusta?
Los riesgos:
¿Se han eliminado los críticos? ¿Se ha completado la
lista?
Evaluar el proyecto:
¿Se puede fijar un precio y una fecha de entrega?
Disciplinas en la fase de elaboración
Requisitos
Encontrar los casos de uso y actores
Determinar la prioridad de los casos de uso
Detallar los casos de uso
Estructurar el modelo de casos de uso
Construir prototipos de las interfaces de usuario
Análisis
Análisis de la arquitectura
Análisis de los casos de uso
Análisis de clases y paquetes
Diseño
Diseño de la arquitectura (estilo, subsistemas)
Diseño de los casos de uso
Implementación
Implementación de la arquitectura base (para una fracción de
casos de uso)
Integración del sistema (con bibliotecas de servicios, frameworks)
Pruebas
Planificar y diseñar las pruebas
Realizar pruebas de integración y de sistema
Artefacto Descripción
Modelo de casos de uso La mayoría de los casos de uso
Modelo de dominio Conceptos del dominio
Modelo de análisis Diagramas de clases
Diagramas de interacción
Modelo de diseño Diagramas de paquetes y clases
Arquitectura del sistema Ideas fundamentales del diseño que se utilizará
en el sistema
Modelo de pruebas Qué debe ser probado y cuándo
Modelo de implementación Incluye diagramas de implementación y el código
fuente disponible
Prototipos de la interfaz Todo lo relacionado con la interfaz
de usuario
Modelo de datos Traducción a esquemas de bases de datos
2.7
Las fases de
Construcción y Transición
Fase de Construcción
El producto se desarrolla a través de iteraciones
Cada iteración involucra análisis, diseño e implementación
La arquitectura básica se refina de manera incremental
conforme se construye
Artefacto Descripción
Modelo de casos de uso Conjunto de artefactos producidos hasta ahora
Modelo de análisis
Modelo de diseño
Modelo de pruebas
Arquitectura del sistema Arquitectura definitiva
Modelo de implementación Incluye el código fuente
Modelo de pruebas
Fase de Transición
Se libera el producto y se entrega al usuario para un uso real
Se incluyen tareas de instalación, configuración, entrenamiento,
soporte, mantenimiento, etc.
Los manuales de usuario se completan y refinan con la
información anterior
Estas tareas se realizan también en iteraciones
Bibliografía Recomendada
Lecturas complementarias
Kruchten, Philippe. "A Software Development Process for a Team of
One", The Rational edge. Feb 2004. http://www.therationaledge.com/