1 of 47

Proceso Unificado de Desarrollo de Software

Metodologías de Desarrollo Software

Javier Sánchez Pérez

Facultad de Informática

Universidad de Las Palmas de Gran Canaria

2 of 47

Contenido

  • Parte I: Introducción
  • Parte II: Los flujos de trabajo fundamentales
  • Parte III: El desarrollo iterativo e incremental

3 of 47

Parte I: Introducción

  • El Proceso Unificado
  • Personas, Proyecto, Producto y Proceso
  • Un proceso dirigido por casos de uso
  • Un proceso centrado en la arquitectura
  • Un proceso iterativo e incremental

4 of 47

El Proceso Unificado

  • Está basado en componentes e interfaces bien definidas
  • Utiliza el Lenguaje Unificado de Modelado (UML)
  • Aspectos característicos:
    • Dirigido por casos de uso
    • Centrado en la arquitectura
    • Iterativo e incremental

5 of 47

El Proceso Unificado�Dirigido por casos de uso

  • Caso de uso: Fragmento de funcionalidad que proporciona al usuario un resultado importante
  • Modelo de casos de uso: Funcionalidad total del sistema
  • ¿Qué debe hacer el sistema … para cada usuario?
  • Guían el proceso de desarrollo

6 of 47

El Proceso Unificado�Centrado en la arquitectura

  • Describe diferentes vistas del sistema
  • Incluye los aspectos estáticos y dinámicos más significativos
  • Es la forma del software
  • La arquitectura y los casos de uso evolucionan en paralelo
  • Responsable: el arquitecto:
    • Empieza por la parte que no es específica de los casos de uso
    • Trabaja con casos de uso claves
    • Progresa con la especificación de más casos de uso

7 of 47

El Proceso Unificado�Iterativo e incremental

  • Se divide el trabajo en mini-proyectos
  • Cada mini-proyecto es una iteración que resulta en un incremento
  • La iteración
    • Trata un conjunto de casos de uso
    • Trata los riesgos más importantes
  • En cada iteración se persiguen unos objetivos concretos

8 of 47

El Proceso Unificado�Iterativo e incremental

  • Beneficios de un proceso iterativo controlado:
    • Coste del riesgo a un solo incremento
    • Reduce el riesgo de no sacar el producto en el calendario previsto
    • Acelera el ritmo de desarrollo
    • Se adapta mejor a las necesidades del cliente

9 of 47

El Proceso Unificado�Iterativo e incremental

Iter

#n

---

---

---

---

Iter #2

Test

Iter #n-1

---

---

Iter #1

Implementac.

Diseño

Análisis

Requisitos

Transición

Construcción

Elaboración

Gestación

Flujos de trabajo / Fases

10 of 47

Personas, Proyecto, Producto y Proceso

  • Personas
    • Arquitectos, desarrolladores, ingenieros de prueba, personal de gestión, usuarios, clientes
    • El proceso de desarrollo afecta a las personas (viabilidad, gestión del riesgo, estructura de los equipos, planificación, comprensión, cumplimiento)
    • Formación, entrenamiento y experiencia
    • De recurso a trabajador (puestos que asumen las personas)
    • Cada trabajador tiene un conjunto de responsabilidades y lleva a cabo un conjunto de actividades

11 of 47

Personas, Proyecto, Producto y Proceso

  • Proyecto
    • Elemento organizativo de gestión
    • El proyecto construye el producto
    • Secuencia de cambio. El sistema evoluciona
    • Serie de iteraciones. Cada iteración implementa un conjunto de casos de uso o atenúa algunos riesgos. Mini-proyecto
    • Patrón organizativo. Tipos de trabajadores y artefactos a conseguir

12 of 47

Personas, Proyecto, Producto y Proceso

  • Producto
    • Artefactos que se crean durante la vida del proyecto
    • Artefactos: Modelos, código, ejecutables, documentación, diagramas UML, bocetos de la interfaz de usuario, prototipos, componentes, planes de prueba
    • Artefactos de ingeniería y de gestión
    • Colección de modelos

Modelo de casos de uso

Modelo de implementación

Modelo de diseño

Modelo de análisis

Modelo de despliegue

Modelo de prueba

traza

traza

traza

13 of 47

Personas, Proyecto, Producto y Proceso

  • Proceso
    • Conjunto de actividades para crear el producto
    • Es una plantilla para crear proyectos (Instancia del proceso)
    • Se define en términos de flujos de trabajo (conjunto de actividades)
    • Se identifican trabajadores y artefactos
    • Adaptación o especialización del proceso
    • Se utilizan diagramas de actividad de UML para describir los flujos de trabajo

14 of 47

Ejemplo: Captura de requisitos

Analista

Arquitecto

Especificador

Diseñador

Priorizar los casos de uso

Detallar un caso de uso

Estructurar el modelo de casos de uso

Prototipar la interfaz de usuario

Encontrar actores y casos de uso

15 of 47

Personas, Proyecto, Producto y Proceso

  • Herramientas
    • Automatizan las actividades definidas en el proceso
    • Mantienen las cosas estructuradas, gestionan gran cantidad de información y nos guían
    • Gracias a ellas se obtiene un proceso más formal y preciso
    • El proceso dirige las herramientas
    • Deben ser fáciles de utilizar y permitir reutilizar

16 of 47

Un proceso dirigido por casos de uso

  • Se capturan requisitos de usuario a través de casos de uso
  • Son fundamentales para:
    • Identificar y especificar clases, subsistemas e interfaces
    • Identificar y especificar casos de prueba
    • Planificar las iteraciones e integración del sistema
  • Nos guían a través de los flujos de trabajo

17 of 47

Un proceso dirigido por casos de uso

  • En cada iteración se identifican e implementan unos cuantos casos de uso
  • Los casos de uso sirven para idear la arquitectura
  • Se seleccionan los casos de uso más representativos
  • Se utiliza como partida para escribir el manual de usuario

18 of 47

Un proceso dirigido por casos de uso

  • Requisitos funcionales a través de casos de uso
  • Requisitos no funcionales:
    • Se “adjuntan” a los casos de uso
    • Se guardan en una lista

Cliente del banco

Sacar dinero

Ingresar dinero

Transferencia

19 of 47

Un proceso dirigido por casos de uso

  • Actores: usuarios, otros sitemas, hardware, software, etc.
  • Un usuario puede actuar como varios actores
  • Varios usuarios pueden actuar como un mismo tipo de actor
  • La comunicación con el sistema se realiza mediante el paso de mensajes

20 of 47

Un proceso dirigido por casos de uso

  • Modelo de análisis a partir de casos de uso
    • Crece incrementalmente
    • Se especifican a través de diagramas de clases y de colaboración
    • Al principio se examinan unos pocos casos de uso y se crean sus realizaciones
    • Cada clasificador puede participar en varias realizaciones distintas con distintos roles
    • Clases estereotipadas de análisis (entorno, control y entidad)

21 of 47

Un proceso dirigido por casos de uso

Sacar dinero

Modelo de casos de uso

Modelo de análisis

«trace»

Sacar dinero

Cuenta

Retirada efectivo

Interfaz cajero

Salida

Realización de un caso de uso (análisis):

22 of 47

Un proceso dirigido por casos de uso

Cliente del banco

Sacar dinero

Ingresar dinero

Transferencia

Modelo de casos de uso

Modelo de análisis

Retirada efectivo

Salida

Cliente del banco

Transferencia

Ingreso

Receptor dinero

Interfaz cajero

Cuenta

23 of 47

Un proceso dirigido por casos de uso

:Retirada efectivo

:Salida

:Cliente del banco

:Interfaz cajero

:Cuenta

1:Identificación

5: entrega dinero

2: solicitar retirada

4: autorizar entrega

3: validar y retirar

Diagrama de colaboración para describir una realización:

24 of 47

Un proceso dirigido por casos de uso

  • Modelo de diseño a partir del modelo de análisis
    • Se adapta al entorno de implementación
    • Se define con los mismos diagramas
    • El modelo de diseño es más “físico” y el modelo de análisis más “conceptual”

Sacar dinero

Modelo de casos de uso

Modelo de análisis

«trace»

Sacar dinero

«trace»

Sacar dinero

Modelo de diseño

25 of 47

Un proceso dirigido por casos de uso

Cuenta

Retirada efectivo

Interfaz cajero

Salida

Dispositivo de visualización

Sensor de salida

Teclado

Alimentador de la salida

Lector de tarjetas

Contador de efectivo

Retirada de efectivo

Gestor de Cliente

Gestor de Transacciones

Cuenta

Gestor de Cuentas

Clase Persistente

«trace»

«trace»

«trace»

«trace»

Modelo de análisis

Modelo de diseño

26 of 47

Un proceso dirigido por casos de uso

Cliente del banco

Dispositivo de visualización

Sensor de salida

Teclado

Alimentador de la salida

Lector de tarjetas

Contador de efectivo

Retirada de efectivo

Gestor de Cliente

Gestor de Transacciones

Cuenta

Gestor de Cuentas

Clase Persistente

27 of 47

Un proceso dirigido por casos de uso

:Cliente del banco

:Dispositivo de visualización

:Teclado

:Lector de tarjetas

:Contador de efectivo

:Gestor de Cliente

:Gestor de Transacciones

Introducir tarjeta

Tarjeta introducida(ID)

Solicitar PIN

Mostrar petición

Especificar código PIN

Código PIN

Validar código PIN

Solicitar cantidad a retirar

Mostrar petición

Especificar cantidad

Cantidad(C)

Solicitar retirada cantidad(C)

Disponib. Saldo(C)

28 of 47

Un proceso dirigido por casos de uso

  • Las clases se agrupan en subsistemas

Cliente del banco

Dispositivo de visualización

Sensor de salida

Teclado

Alimentador de la salida

Lector de tarjetas

Contador de efectivo

Gestor de Cliente

«subsystem»

Interfaz del CA

Cuenta

Gestor de Cuentas

Clase Persistente

«subsystem»

Gestión de Cuentas

Gestor de Transacciones

«subsystem»

Transacciones

Retirada de efectivo

«subsystem»

Efectivo

IRetirada

IEntrega

ITransferen

29 of 47

Un proceso dirigido por casos de uso

  • Modelo de implementación a partir del modelo de diseño

Sensor de salida

Alimentador de la salida

Contador de efectivo

Gestor de Cliente

Modelo de diseño

Cliente.cpp

«file»

Cliente.exe

«exe»

Salida.cpp

«file»

Modelo de implementación

«compilation»

«trace»

«trace»

30 of 47

Un proceso dirigido por casos de uso

  • Pruebas
    • Modelo de pruebas compuesto por:
      • Casos de prueba
      • Procedimientos de prueba

Modelo de casos de uso

Modelo de pruebas

Sacar dinero

Sacar dinero

X

«trace»

31 of 47

Un proceso centrado en la arquitectura

  • La arquitectura se representa mediante vistas del modelo del sistema
  • Representa elementos significativos de cada modelo
  • Es una descripción “pequeña” del sistema
  • Sirve como visión común para los desarrolladores
  • Responsable: el arquitecto del software

32 of 47

Un proceso centrado en la arquitectura

  • Casos de uso y arquitectura

  • Software del sistema
  • Capa intermedia
  • Sistemas heredados
  • Estándares y políticas
  • Requisitos no funcionales
  • Necesidades de distribución

Casos de uso

Arquitectura

Experiencia

33 of 47

Un proceso centrado en la arquitectura

  • La arquitectura es necesaria para:
    • Comprender el sistema: Los desarrolladores, directivos, clientes y usuarios deben estar capacitados
    • Organizar el desarrollo: Subsistemas, interfaces bien definidas y responsables por subsistemas
    • Fomentar la reutilización: Desarrollo de componentes reutilizables
    • Hacer evolucionar el sistema

34 of 47

Un proceso centrado en la arquitectura

  • Negociar con el cliente para ajustar los casos de uso

Casos de uso

Arquitectura

conduce

guía

35 of 47

Un proceso centrado en la arquitectura

  • La arquitectura se desarrolla principalmente en la fase de elaboración
  • ¿Qué casos de uso tener en cuenta?
    • Los que representen riesgos más importantes
    • Los más importantes para el usuario
    • Funcionalidades significativas
  • Línea base de la arquitectura
    • Esqueleto con pocos músculos

36 of 47

Un proceso centrado en la arquitectura

  • Línea base de la arquitectura:
    • Sistema pequeño y flaco
    • Versión de todos los modelos del sistema
    • Arquitectura estable
    • Descripción de la arquitectura
    • Constituye los pilares del sistema
    • Utilización de patrones de diseño

37 of 47

Un proceso centrado en la arquitectura

  • Descripción de la arquitectura
    • Conjunto de vistas de los modelos de la línea base de la arquitectura
    • Incluye elementos arquitectónicamente significativos
    • Debe mantenerse actualizada
    • Incluye requisitos adicionales (seguridad, distribución, concurrencia, etc.)
    • Destaca los temas de diseño más importantes

38 of 47

Un proceso centrado en la arquitectura

  • Descripción de la arquitectura
    • Elementos privados de los subsistemas no suelen ser significativos
    • Se obtiene a partir de una fracción de los casos de uso
    • Menos del 10% de las clases son relevantes
    • La mayoría de la funcionalidad es fácil de implementar a partir de la arquitectura
    • El arquitecto crea la arquitectura

39 of 47

Un proceso centrado en la arquitectura

  • La vista de la arquitectura del modelo de casos de uso
    • Se representan los actores y casos de uso más importantes

Cliente del banco

Sacar dinero

40 of 47

Un proceso centrado en la arquitectura

  • La vista de la arquitectura del modelo de diseño
    • Subsistemas e interfaces más importantes
    • Clases muy importantes (activas)

Gestor de Cliente

Gestor de Cuentas

Gestor de Transacciones

ITransferen

«subsystem»

Gestión de Cuentas

«subsystem»

Transacciones

IRetirada

IEntrega

«subsystem»

Interfaz del CA

41 of 47

Un proceso centrado en la arquitectura

  • La vista de la arquitectura del modelo de despliegue
    • Arquitectura física del sistema
    • Los objetos activos se asignan a los nodos

:Cliente CA

:Gestor de Cliente

:Servidor apl

:Gestor de Transacciones

:Servidor datos

:Gestor de Cuentas

42 of 47

Un proceso centrado en la arquitectura

  • La vista de la arquitectura del modelo de implementación
    • Correspondencia entre modelos de diseño y despliegue
    • Subsistema de servicio →componente

Cliente.exe

«exe»

43 of 47

Un proceso iterativo e incremental

  • Objetivos:
    • Atenuación de riesgos
    • Obtención de una arquitectura robusta
    • Gestión de requisitos cambiantes
    • Permitir cambios tácticos
    • Conseguir una integración continua
    • Conseguir un aprendizaje temprano

44 of 47

Un proceso iterativo e incremental

  • Iteración genérica:
    • Planificación
    • Requisitos
    • Análisis
    • Diseño
    • Implementación
    • Prueba
    • Evaluación de la iteración

45 of 47

Un proceso iterativo e incremental

  • Fases del proceso:
    • Inicio: Objetivos del ciclo de vida
      • Establecer ámbito del sistema
      • Reducir peores riesgos
      • Preparar el análisis del negocio
    • Elaboración: Arquitectura del ciclo de vida
      • Obtener línea base de la arquitectura
      • Capturar mayoría de requisitos
      • Reducir siguientes riesgos

46 of 47

Un proceso iterativo e incremental

  • Fases del proceso
    • Construcción: Funcionalidad operativa inicial
      • Desarrollo del sistema entero
    • Transición: Versión del producto
      • Producto preparado para su entrega al usuario
      • Se enseña a los usuarios a utilizarlo

47 of 47

Referencias

  • Ivar Jacobson, Grady Booch, James Rumbaugh, “El Proceso Unificado de Desarrollo Software”, Addison Wesley, 1999