Ingeniería de Software: Metodologías
Agustín J. González
      ElO329: Diseño y Programación
           Orientados a Objeto
   Adaptado de: http://www.dsic.upv.es/~uml
   http://inst.eecs.berkeley.edu/~cs169/ entre
                  otras fuentes.
Manifiesto por el Desarrollo Ágil de Software
 “Estamos descubriendo formas mejores de desarrollar
software tanto por nuestra propia experiencia como
ayudando a terceros. A través de este trabajo hemos
aprendido a valorar:
 Individuos e interacciones sobre procesos y herramientas
   Software funcionando sobre documentación extensiva
 Colaboración con el cliente sobre negociación contractual
      Respuesta ante el cambio sobre seguir un plan
Esto es, aunque valoramos los elementos de la derecha,
valoramos más los de la izquierda.”
http://agilemanifesto.org/iso/es/manifesto.html 2
      Algunas Metodologías ...
   Personal Software Process y Team software
    Process
   XP (Programación Extrema)
   SCRUM
   Rational Unified Process (RUP)
Proceso de Desarrollo
Iterativo e Incremental
                      4
Recordar el ciclo de vida de un proyecto
de software
 Sueño   Investigación   Desarrollo    Lanzamiento Soporte
                                                         Tiempo
                         Parte a ser considerada en adelante
                                                  5
Desarrollo Iterativo e Incremental
   Esta idea es la base de varios métodos de
    desarrollo de software como RUP (Rational
    Unified Proecess), Extreme Programming y otros
    métodos de desarrollo ágiles.
   La idea básica es desarrollar el sistema siguiendo
    etapas incrementales caracterizadas por
    generación de sucesivas versiones que van
    abarcando requerimientos hasta completar el
    sistema.
   Cada versión tiene sentido para el cliente.
                                             6
Desarrollo Iterativo e Incremental
   Iterativo: cada vez re-visitamos las etapas del
    modelo en cascada, rehacemos, refinamos y
    extendemos lo hecho.
   Incremental: regularmente integramos los
    avances para generar una versión con sentido
    para el cliente.
                                              7
Desarrollo Iterativo e incremental: RUP
es uno de ellos, sus Características
       Guiado y Manejado por Casos de Uso
           Centrado en la Arquitectura
            Iterativo e Incremental
     Desarrollo Basado en Componentes
           Utilización de UML
           Proceso Integrado
                                            8
           RUP Define Fases de Desarrollo ...
Áreas de trabajo                        Concepción                     Elaboración                Construcción       Transición
(Workflow)
    Requerimientos   Esfuerzo Necesario por Actividad         R                   R                       R                     R
      Análisis &
        Diseño                                              A& D                A& D                    A& D                  A& D
    Construcción
                                                              C                   C                       C                     C
      Pruebas
                                                              P                   P                       P                     P
     Distribución
                                                              D                   D                       D                     D
                                                         Iteración   Iteración Iteración   ....          ....    Iteración   Iteración
                                                        Preliminar       1         2                                 n          n+1
                                                                                                                                         Tiempo
Fases del Proceso del Desarrollo
   También llamado ciclo de vida, consiste en una serie de
    fases que en su conjunto conducen al sistema final.
   Cada fase está compuesta por un número de iteraciones que
    generan versiones del sistema.
   Las fases son 4:
      Concepción, Inicio o Estudio de oportunidad
               •     Definición de objetivos y funcionalidades del sistema
       Elaboración
               •     Definición de arquitectura y recursos disponibles
       Construcción
               •     Desarrollo del producto (programación, pruebas y
                     documentación) y refinamiento de etapas anteriores
                     iterativamente
       Transición
               •     Entrega del producto, manuales y tareas de marketing
                     también iterativamente
                                                                10
Proceso Iterativo e Incremental
   En el proceso de desarrollo iterativo, en cada iteración se
    reproduce el ciclo de vida en cascada a menor escala
   Los objetivos de una iteración se establecen en función de la
    evaluación de las iteraciones precedentes
   Las actividades se encadenan en una mini cascada con un
    alcance limitado por los objetivos de la iteración
         Requerimientos
                    Análisis
                         Diseño
                              Codific.
                                           Pruebas e
             n veces
                                          Integración
                                                        11
... Proceso Iterativo e Incremental
   Cada iteración comprende:
       Planificar la iteración (estudio de riesgos)
       Análisis de los Casos de Uso (ya viene) y
        escenarios
       Diseño de opciones arquitectónicas
       Codificación y pruebas. La integración del código
        nuevo código con el de iteraciones previas se hace
        gradualmente durante la construcción
       Evaluación de la entrega de ejecutable (evaluación
        del prototipo en función de las pruebas y de los
        criterios definidos)
       Preparación de la entrega (documentación e
        instalación del prototipo)
                                                12
         Importancia de los Hitos en RUP ...
          Compromiso de
                                                                 Aceptación
         recursos para fase
                                                                 del cliente
            elaboración
  Concepción           Elaboración      Construcción       Transición
Tiempo
                 Hito              Hito             Hito            Liberación
               Objetivos,       Arquitectura     Capacidad           Producto
                visión                           Operacional
                                                               13
... Elementos en RUP
   Artefactos
   Son los Resultados Parciales o Finales generados o
    usados durante el proyecto. Son las entradas y salidas de
    las actividades
   Un artefacto puede ser un documento, un modelo o un
    elemento de modelo
   Arquitectura
   La arquitectura de un sistema es la organización o
    estructura de sus partes más relevantes
                                                    14
Características Esenciales de RUP
        Proceso Iterativo e Incremental
Proceso Dirigido por los Casos de Uso
   Proceso Centrado en la Arquitectura
                                           15
¿Cómo levantar los requerimientos de
           un sistema?
          ==> Casos de usos
                                       16
     Casos de uso: Idea general
   Un caso de uso es una colección de escenarios de éxito
    y fallas relacionadas que describen actores usando el
    sistema para alcanzar algún objetivo.
   Un escenario es una secuencia específica de
    acciones e interacciones entre actores y el sistema
    bajo discusión.
   Un actor es algo externo al sistema en discusión que
    interactúa con éste. Por ejemplo: Una persona, otro
    sistema computacional, un sensor, etc.
   Los casos de uso muestran el comportamiento
    observable del sistema.
                                                17
Proceso dirigido por los Casos de Uso
 Requisitos                        Capturar, definir y validar
                                       los casos de uso
   Análisis & DiseñoCasos de Uso
                                           Realizar los
                    integran el
                                           casos de uso
 Implementación       trabajo
 Pruebas                             Verificar satisfacción de
                                         los casos de uso
                                                18
 ... Proceso dirigido por los Casos de Uso
                           Realización de Análisis
 Caso de Uso                                                       Realización de Diseño
                                                                                         Pruebas
                                                                                         Unitarias
                                             Pruebas Funcionales                  X
                                                                       Caso de Prueba
[The Unified Software Development Process. I. Jacobson, G. Booch and J. Rumbaugh. Addison-Wesley, 1999]
                                                                                    19
   Esfuerzo respecto de las Áreas de
   Trabajo (Workflows)
                 Concepción Elaboración                   Construcción               Transición
                                                                                                         15%
 Requisitos
                                                               Una iteración en la
                                                               fase de elaboración
 Análisis
                                                                                                         10%
 Diseño                                                                                                  15%
Implementación
                                                                                                         30%
   Pruebas
                                                                                                         15%
                 P re lim in a ry   ite r.   ite r.   ite r.      ite r.    ite r.    ite r.    ite r.   15%
   Gestión       Ite ra tion (s)     #1       #2       #n        # n+ 1    #n+2       #m       #m + 1
                                                                                       20
      ...Esfuerzo respecto de las Fases
                  Concepción Elaboración                   Construcción               Transición
 Requisitos
                                                                Una iteración en la
                                                                fase de elaboración
 Análisis
 Diseño
Implementación
   Pruebas
                  P re lim in a ry   ite r.   ite r.   ite r.      ite r.    ite r.    ite r.     ite r.
                  Ite ra tion (s)     #1       #2       #n        # n+ 1    #n+2       #m        #m + 1
          Esfuerzo:      5%               20%                      65%                          10%
          Duración:     10%               30%                      50%                  21      10%
    Lección importante
   El tiempo es independiente del contexto. Ahorrar
    una semana la comienzo de un proyecto es tan
    bueno como ahorrarla al final. Una semana es
    una semana.
   Es mucho más fácil ahorrar tiempo al inicio del
    proyecto (cuando los “entregables” son menos
    claros).
   Conclusión: ¿Cómo usted aplica esto al proyecto
    del ramo?
                                         22