SlideShare ist ein Scribd-Unternehmen logo
1 von 72
Downloaden Sie, um offline zu lesen
Presentación de IS
Proyecto de IS
Introducción a la IS
Proceso y Ciclo de Vida




                              Proceso Software y
                                Ciclo de Vida

                                            Curso 2008-2009

                                             Gonzalo Méndez
                          Dpto. de Ingeniería de Software e Inteligencia Artificial
                                         Facultad de Informática
                                   Universidad Complutense de Madrid
Conceptos importantes
Personas
• los que trabajan
Producto
• lo que se obtiene
Proyecto
• la pauta a seguir para desarrollar un producto
Proceso
• la pauta a seguir para desarrollar un proyecto
Un traje
Personas
• El sastre
Producto
• El traje
Proyecto:
• el sastre, el traje, el presupuesto del traje, el traje en sí, los
  pasos a dar para hacer el traje...
Proceso
• La secuencia de acciones para hacer un traje concreto
Una cena
Personas
• Empleados de una empresa de catering
Producto
• La cena que se sirve
Proyecto
• El menú, el presupuesto, lo que hay que hacer para
  conseguir el menú, ...
Proceso
• La secuencia de acciones de servir una cena
Una gama de automóviles
Personas
• Empleados de la marca
Producto
• Los automóviles
Proyecto
• Desarrollo de un modelo nuevo
Proceso
• Las instrucciones de la empresa sobre cómo
  desarrollar un modelo nuevo
Para vosotros
Personas
• vuestro grupo
Producto
• la aplicación elegida
Proyecto
• parte práctica IS
Proceso
• entregas mensuales + cómo vosotros decidáis
  organizaros
Capas de la IS
Capa de enfoque de calidad
Capa de proceso
Capa de métodos
Capa de herramientas
Capas de la IS
Capa de calidad
• Base de cualquier proceso de ingeniería
• La IS se basa en calidad
   • Mejores técnicas de construcción de software
Capa de proceso
• Capa que une calidad y métodos
   • Desarrollo racional de la IS
• Conjunto de actividades y resultados asociados que
  sirven para construir un producto software
Capas de la IS
Capa de métodos
• Un método incluye:
   •   Análisis de requisitos
   •   Diseño
   •   Construcción de programas
   •   Prueba
   •   Mantenimiento
• Suelen estar bastante ligados al proceso
Capa de herramientas
• Soporte automático o semiautomático para el proceso y los
  métodos
• Herramientas CASE
Visión general de la IS
Con independencia del modelo de proceso hay
tres fases genéricas:
•   Fase de definición
•   Fase de desarrollo
•   Fase de mantenimiento
Cada una de estas fases se descompone en un
conjunto de tareas
Fase de definición/especificación
Se identifican requisitos de sistema y software:
•   Información a procesar
•   Función y rendimiento deseados
•   Comportamiento del sistema
•   Interfaces establecidas
•   Restricciones de diseño
•   Tareas principales:
     • Planificación del proyecto software
     • Ingeniería de sistemas o de información
     • Análisis de requisitos
Fase de desarrollo
Se define:
•   Cómo diseñar las estructuras de datos
•   Cómo implementar las funciones
•   Cómo caracterizar las interfaces
•   Cómo traducir el diseño a programación
•   Cómo validar el producto (pruebas, verificación)
•   Tareas principales:
     • Diseño del software
     • Generación del código
     • Pruebas del software
Fase de mantenimiento
Centrada en cambios que se pueda necesitar realizar
sobre un producto
Se vuelven a aplicar las fases de definición y
desarrollo, pero sobre software ya existente
Pueden producirse cuatro tipos de cambio:
• Corrección: Corregir los defectos
• Adaptación: Modificaciones por cambio externo
• Mejora: Ampliar los requisitos funcionales originales, a
  petición del cliente
• Prevención: Cambio para facilitar el cambio
Visión general de la IS
Estas fases se complementan con las
actividades de soporte
• No crean software
• Mejoran su calidad
• Facilitan su desarrollo
Se aplican a lo largo de todo el proceso del
software
Visión general de la IS
Ejemplos de actividades de soporte
•   Documentación
•   Gestión de configuración
•   Seguimiento y control del proyecto de software
•   Revisiones técnicas formales
•   Garantía de la calidad del software
•   Gestión de reutilización
•   Mediciones
•   Gestión de riesgos
Proceso software
Conjunto estructurado de actividades y resultados
asociados requeridos para desarrollar un sistema de
software
• Especificación: establecer requisitos y restricciones
• Diseño: Producir un modelo en papel del sistema
• Implementación: construcción del sistema de software
• Validación: verificar (por ejemplo mediante pruebas) que el
  sistema cumple con las especificaciones requeridas
• Instalación: entregar el sistema al usuario
• Evolución y mantenimiento: cambiar/adaptar el software
  según las demandas; reparar fallos en el sistema
Modelos de proceso
Un modelo de proceso, o paradigma de IS, es
una plantilla, patrón o marco que define el
proceso a través del cual se crea software
Dicho de otra forma, los procesos son
instancias de un modelo de proceso
En esta asignatura los términos proceso y
modelo de proceso se utilizan indistintamente
Modelos de proceso
Una organización podría variar su modelo de
proceso para cada proyecto, según:
•   La naturaleza del proyecto
•   La naturaleza de la aplicación
•   Los métodos y herramientas a utilizar
•   Los controles y entregas requeridas
Características del proceso
Entendible
Visibilidad: Grado en que las actividades del proceso
proporcionan resultados
Soportable por herramientas CASE
Aceptabilidad: Grado en que los desarrolladores aceptan y
usan el proceso
Fiabilidad: Capacidad de evitar o detectar errores antes de que
sean defectos
Robustez: Continuidad del proceso a pesar de los problemas
Mantenible: Capacidad de evolución para adaptarse
Rapidez: Velocidad en que el proceso puede proporcionar un
sistema a partir de una especificación
Modelos Genéricos de Desarrollo de
           Software
Modelo de Cascada
Prototipado
Desarrollo Evolutivo
En espiral
Desarrollo basado en componentes
Métodos Formales
Modelo en cascada (waterfall)
Modelo de proceso clásico (desde los 70)
Basado en la mentalidad de línea de
ensamblaje (cartesiano)
Es sencillo y fácil de entender
El proyecto pasa a través de una serie de fases
• Al final de cada fase se revisan las tareas de
  trabajo y productos
   • Para poder pasar a la siguiente fase se tiene que haber
     conseguido todos los objetivos de la fase anterior
• No hay apenas comunicación entre las fases
Modelo en cascada (waterfall)
Definición de
 Requisitos



                Diseño del Software
                   y del Sistema



                                  Implementación y
                                  Pruebas Unitarias



                                                  Integración y Prueba
                                                       del Sistema



                                                                          Operación y
                                                                         Mantenimiento
Modelo en cascada (waterfall)
Fases:
• Conceptualización: Se determina la arquitectura de la
  solución (división del sistema en subsistemas)
• Análisis de requisitos: Básicamente se definen los
  requisitos funcionales y de rendimiento
• Diseño: Representación de la aplicación que sirve de guía a
  la implementación
• Implementación: Transforma el diseño en código
• Prueba: Validación e integración de software y sistemas
• Instalación y comprobación: Se instala el software al
  cliente, el cual comprueba la corrección de la aplicación
Se supone que sólo se baja en la cascada... pero
también se puede subir (aunque difícilmente)
Modelo en cascada (waterfall)
Posibles ventajas:
• Sencillo: Sirve cuando el personal está poco cualificado
• Aplicable cuando el problema es estable y cuando se
  trabaja con técnicas conocidas
Críticas:
• No se ve un producto hasta muy tarde en el proceso
    • Un error grave detectado en las últimas fases puede ser letal
• Especificación de requisitos estable
• Impone una estructura de gestión de proyectos
    • Fases muy rígidas
• Las revisiones de proyectos de gran complejidad son muy
  difíciles
Prototipado
Se usa un prototipo para dar al usuario una idea
concreta de lo que va a hacer el sistema
Se aplica cada vez más cuando la rapidez de
desarrollo es esencial
Prototipado evolutivo: el prototipo inicial se refina
progresivamente hasta convertirse en versión final
Prototipado desechable: de cada prototipo se extraen
ideas buenas que se usan para hacer el siguiente, pero
cada prototipo se tira entero
Prototipado

Escuchar
al cliente
                      Construir/
                       revisar
                      prototipo
         El cliente
         evalúa el
         prototipo
Prototipado
Comienza con la recolección de requisitos
• Cliente y desarrolladores definen los objetivos globales del
  software.
• Además, identifican los requisitos conocidos y aquellos que
  deben ser más definidos.
Aparece un diseño rápido centrado en los aspectos
visibles para el cliente (e.g. información de E/S)
• El diseño rápido lleva a la construcción de un prototipo
El prototipo lo evalúa el cliente y lo utiliza para
refinar los requisitos
El proceso se itera... ¿desechando el prototipo?
Prototipado
Ventajas
•   Permite identificar los requisitos incrementalmente
•   Permite probar alternativas a los desarrolladores
•   Tiene una alta visibilidad tanto clientes como
    desarrolladores ven resultados rápidamente
Inconvenientes
• El cliente no entiende por qué hay que desechar el prototipo
     • Si simplemente ha pedido unos ajustes...(¿?)
• Riesgo de software de baja calidad
     • Compromisos de implementación para que el prototipo funcione
       rápidamente y que al final son parte integral del sistema
         – Utilizar un SO o lenguaje de programación inadecuado pero conocido
Modelos evolutivos
Características:
• Gestionan bien la naturaleza evolutiva del software
• Son iterativos: construyen versiones de software
  cada vez más completas
Se adaptan bien:
• Los cambios de requisitos del producto
• Fechas de entrega estrictas poco realistas
• Especificaciones parciales del producto
Modelos evolutivos
                    Actividades
                   Concurrentes



                                      Versión
                   Especificación     Inicial




Descripción                          Versiones
del sistema
                    Desarrollo        Versiones
                                    Intermedias
                                     Intermedias




                    Validación        Versión
                                       Final
Modelos evolutivos. Incremental
Fusiona el modelo lineal secuencial con el de
construcción de prototipos

 A   D   C       P   1er incremento


             A       D      C     P   2º incremento




                         ..................... N-ésimo incremento
Modelos evolutivos. Incremental
Cada secuencia lineal secuencial produce un
incremento del software
• Incremento: producto operacional de una parte del sistema
El primer incremento suele ser el núcleo
• Requisitos básicos
• Muchas funciones suplementarias se dejan para después
Se evalúa (p.ej., por el cliente) el producto entregado
• Como resultado se desarrolla un plan para el siguiente
Se itera
• Hasta elaborar el producto completo
Modelos evolutivos. Incremental
Ventajas
• Es interactivo
   • Con cada incremento se entrega al cliente un producto operacional
     al cliente, que puede evaluarlo
• Personal
   • Permite variar el personal asignado a cada iteración
• Gestión riesgos técnicos
   • Por ejemplo, disponibilidad de hardware específico
Inconvenientes
• La primera iteración puede plantear los mismos problemas
  que en un modelo lineal secuencial
Modelo de Proceso en Espiral
Original: Boehm, 1988
IEEE Std. 1490-1998
Tratar primero las áreas de mayor riesgo
Múltiples iteraciones sobre varias regiones de tareas
• Vuelta a la espiral: ciclo
• Número de iteraciones predeterminadas o calculadas
  dinámicamente
Se pueden variar las actividades de desarrollo: familia
de modelos de procesos
Modelo de Proceso de Espiral
                                                                          Evalúe alternativas,
Determine objetivos                                                      identifique y resuelva
   alternativas y                                                                riesgos
   restricciones                                         Análisis de
                                                            Riesgos
                                                   Análisis de
                                                    Riesgos
                                            Análisis de
                                             Riesgos                               Prototipo
                                                                       Prototipo   Operacional
                                             Análisis        Prototipo     3
                                                de Proto         2
                              REVISIÓN       Riesgos tipo1
                                                               Simulaciones, modelos y benchmarks
                      Plan de requerimientos
                                             Concepto de
                      Plan del ciclo de vida  Operación   Requeri
                                                        mientos de    Diseño      Diseño
                                                            SW        del         Detallado
                           Plan de          Validación de         Producto Codificación
                          Desarrollo        Requerimientos
                                                                         Prueba de
                         Plan de Integración Diseño                      Unidades
                                                                Prueba de
                              y Prueba        V &V
       Planea la                                    Prueba de Integración
                                                    Aceptación              Desarrolla y verifica
     siguiente fase
                                             Servicio                        el siguiente nivel
                                                                                del producto
Modelo de Proceso en Espiral
El modelo en espiral es bastante adecuado para
la gestión de riesgos
Se puede añadir una actividad de gestión de
riesgos
De hecho, el modelo original de Boehm:
•   Fijar objetivos
•   Gestionar y reducir riesgos
•   Desarrollo y validación
•   Planificar siguiente ciclo
Modelos Evolutivos. Espiral Boehm
Fijar objetivos
•   Definir objetivos del ciclo
•   Identificar restricciones del proceso y producto
•   Desarrollar plan de gestión
•   Identificar riesgos
•   Identificar estrategias alternativas
Gestionar y reducir el riesgo
• RSGR para cada riesgo identificado
Modelos Evolutivos. Espiral Boehm
Desarrollo y validación
•   Elegir modelo de desarrollo
•   Algunos autores lo denominan metamodelo
•   Yo prefiero llamarlo modelo paramétrico
Planificación
• Revisión del proyecto
• Decisión de una nueva vuelta
Modelos de Proceso en Espiral
Ventajas
• Enfoque realista
• Gestión explícita de riesgos
• Centra su atención en la reutilización de
  componentes y eliminación de errores en
  información descubierta en fases iniciales
• Los objetivos de calidad son el primer objetivo
• Integra desarrollo con mantenimiento
Modelos de Proceso en Espiral
Inconvenientes
• Convencer cliente enfoque controlable
• Requiere de experiencia en la identificación de
  riesgos
• Requiere refinamiento para uso generalizado
Desarrollo Basado en Componentes
 Desarrollo de sistemas en poco tiempo
 Adaptación a “alta velocidad” de la cascada
 •   Equipos trabajando en paralelo
 •   Aplicando tecnología de componentes
       Equipo 1          Equipo 2                Equipo n
         A                 A                          A
             D                 D       ............       D
                 C                 C                          C
                     P                 P                          P


                               60-90 días
Desarrollo Basado en Componentes
 Ventajas
 • Rapidez
 • Válido para aplicaciones modularizables
 Inconvenientes
 • Exige conocer bien los requisitos y delimitar el ámbito del
   proyecto
 • Número de personas
 • Clientes y desarrolladores comprometidos
 • Gestión riesgos técnicos altos
    • Uso de nueva tecnología
    • Alto grado de interoperabilidad con sistemas existentes
Desarrollo Basado en Componentes

                        Identificar
                       componentes
                        candidatos


         Construir                      Buscar
        iteración N                   componentes
        del sistema                   en biblioteca


          Añadir                         Extraer
       componentes                    componentes
        a biblioteca                   disponibles


                         Construir
                       componentes
                        que falten
Desarrollo con métodos formales
Se basa en la transformación de una
especificación formal a lo largo de varias
representaciones hasta llegar a un programa
ejecutable
Las transformaciones preservan la corrección
• Permiten comprobar fácilmente que el programa es
  conforme a la especificación
Desarrollo con métodos formales



Requirements     Formal            Formal       Integration and
 definition    specification   transformation    system testing
Transformaciones formales

                               Formal transformations
                T1             T2             T3                 T4



   Formal            R1                                               Executable
                                      R2              R3
specification                                                          program


                P1            P2              P3                 P4


                          Proofs of transformation correctness
Desarrollo formal de sistemas
Problemas
• Hace falta una formación especializada para aplicar la
  técnica
• Muchos aspectos de los sistemas reales son difíciles de
  especificar formalmente
   • Interfaz de usuario
   • Requisitos no funcionales
Aplicabilidad
• Sistemas críticos en los que la seguridad y fiabilidad debe
  poder asegurarse antes de poner el sistema en operación
Visibilidad de Procesos
Los sistemas de software son intangibles por lo que
los administradores necesitan documentación para
identificar el progreso en el desarrollo
Esto puede causar problemas
• El tiempo planeado para entregar resultados puede no
  coincidir con el necesario para completar una actividad
• La necesidad de producir documentos restringe la iteración
  entre procesos
• Tiempo para revisar y aprobar documentos significativo
El modelo de cascada es aún el modelo basado en
resultados mas utilizado
Visibilidad de Procesos
Modelo de Proceso           Visibilidad del Proceso


Modelo de Cascada           Buena visibilidad, cada actividad
                            produce un documento o
                            resultado
Desarrollo Evolutivo        Visibilidad pobre, muy caro al
                            producir documentos en cada
                            iteración
Modelos Formales            Buena visibilidad, en cada fase
                            deben producirse documentos

Desarrollo orientado a la   Visibilidad moderada. Importante
reutilización               contar con documentación de
                            componentes reutilizables

Modelo de Espiral           Buena visibilidad, cada segmento
                            y cada anillo del espiral debe
                            producir un documento
¿Qué modelo utilizar?
Para sistemas bien conocidos se puede utilizar el
Modelo de Cascada. La fase de análisis de riesgos es
relativamente fácil
Con requisitos estables y sistemas de seguridad
críticos, se recomienda utilizar modelos formales
Con especificaciones incompletas, el modelo de
prototipado ayuda a identificarlos y va produciendo
un sistema funcional
Pueden utilizarse modelos híbridos en distintas partes
del desarrollo
Ejemplos
Dos modelos de proceso concretos:
• Proceso Unificado de Rational (pesado)
• Extreme Programming           (ágil)
Proceso Unificado
Los autores de UML
• Booch: método Booch
• Rumbaugh: OMT
• Jacobson: proceso Objectory
También conocido como RUP: Rational
Unified Process
Proceso Unificado
Es un proceso de desarrollo de software
•   Dirigido por casos de uso
•   Centrado en la arquitectura
•   Iterativo e incremental
Utiliza UML para definir los modelos del sistema software
El sistema software en construcción está formado por
• componentes software
• interconectados a través de interfaces

                               Proceso de
       Requisitos             desarrollo de         Sistema
       de usuario               software            software


                             Los requisitos cambian
                             y el sistema software evoluciona
Proceso Unificado
                                                 Organization along time

                                                                         Phases
                Process Components        Inception Elaboration             Construction         Transition

                   Requirements Capture

                   Analysis & Design

                   Implementation
Organization       Test
along content
                Supporting Components
                   Management
                   Environment
                   Deployment
                                          preliminary    iter.   iter.    iter.    iter. iter.   iter.    iter.
                                          iteration(s)    #1       #2      #n     #n+1 #n+2       #m     #m+1

                                                                     Iterations
Extreme Programming (XP)
Modelo de proceso de Kent Beck
  Un modo ligero, eficiente, de bajo riesgo, flexible,
  predecible, científico y divertido de producir software
Características
• Alta visibilidad debido a ciclos muy cortos
• Planificación incremental
• Se adapta a cambios de negocio
Extreme Programming (XP)
Basado en pruebas automatizadas escritas por
desarrolladores y clientes (test-driven)
Alta comunicación
Diseño evolutivo
Colaboración entre programadores
Busca equilibrio entre las necesidades a corto
plazo de los programadores y las de largo
plazo del proyecto
Extreme Programming (XP)
   La estructura del proceso, si la hay, es un poco
   atípica


Codificación   Prueba        Evaluación    Diseño




                  Actividades en XP
Extreme Programming (XP)
Las cuatro actividades están soportadas por doce prácticas:
•   El juego de planificación
•   Pequeñas entregas
•   Metáfora
•   Diseño simple
•   Prueba
•   Refactoring
•   Programación en pareja
•   Propiedad colectiva
•   Integración continua
•   Semana de cuarenta horas
•   Cliente en el lugar de desarrollo
•   Codificación estándar
Extreme Programming (XP)
Ventajas:
• Bueno para especificaciones cambiantes
• Fundamentación práctica
Inconvenientes:
• Poco probado
• Poco compatible con especificaciones/diseños
  totales
• Sólo funciona con equipos pequeños (hasta diez
  personas)
Extreme Programming (XP)

Diferencias fundamentales (hay más que ya se
verán)
• No hay requisitos explícitos sino que el cliente
  participa en el desarrollo
• Se empieza por automatizar las pruebas
• Se desarrolla siempre la versión más simple posible
  que resuelva el problema
• Se ejecutan todas las pruebas todos los días
• Se cambia el diseño (aunque sea radicalmente)
  siempre que haga falta
Calidad del proceso de software


 ¿ Cómo medir la calidad del
  proceso de software de una
          empresa ?
La empresa ideal
El Dpto. de la Defensa de los US fundó el Software
Engineering Institute (SEI) asociado con la
Universidad de Carnegie Mellon (CMU).
Desarrollan el Software Capability Maturity Model
(SW CMM) a mediados de 1980s, refinado en los
inicios de l990s.
Este modelo define una serie de áreas clave de
proceso (ACP)
• Un área clave de proceso es, básicamente, una actividad de
  IS
Software Capability Maturity Model

                                             Level 5
                                            Optimizing


                                  Level 4
                                  Managed


                        Level 3
                        Defined


            Level 2
           Repeatable


Level 1
 Initial
Áreas clave del proceso
                                                                                             O p t i m i zi n g
                                                                                       P r o ce s s c h a n g e m a n a g em e n t
                                                                                       T e c h n o l o g y c h a n g e m a n a g em e n t
                                                                                       D e f e c t p r e v e n t io n

                                                                          M a n a g ed
                                                                   S o f tw a re q u a l it y m a n a g e m e n t
                                                                   Q u a nt it a t iv e p r o c e s s m a n a g e m e n t

                                                      D e fin e d
                                               P e e r r e v ie w s
                                               I n t e r g ro u p c o o r d in a t io n
                                               S o f tw a r e p r o d u c t e n g i n e e r i n g
                                               I n t e g r a t e d s o f tw a r e m a n a g e m e n t
                                               T ra ining p rog ra m m e
                                               O r g a n i z a ti o n p r oc e s s d e f in it io n
                                               O r g a n i z a ti o n p r oc e s s f o c u s

                     R e p e atab le
               S o f tw a r e   c o n f i g u ra t io n m a n a g e m e n t
               S o f tw a r e   q u a l it y a s s u r a n c e
               S o f tw a r e   s u b c o n tr a c t m a n a g e m e n t
               S o f tw a r e   p ro je c t tr a c k i n g a n d o v e r s ig h t
               S o f tw a r e   p ro je c t p l a n n in g
               R e q u ir e m   e n ts m a n a g e m e n t


I n it i a l


     ©Ian Sommerville 1995                                  Software Engineering, 5th edition. Chapter 31.
CMM
Los niveles son acumulativos
Nivel 1: Inicial
•   El proceso de software se caracteriza según el caso
•   Se definen poco procesos
•   El éxito depende del esfuerzo individual
CMM
Nivel 2: Repetible
• Se incluye seguimiento del coste, la planificación y la
  funcionalidad
• Se repiten técnicas de proyectos anteriores con buenos
  resultados
• Las ACP son:
   •   Planificación del proyecto de software
   •   Seguimiento y supervisión del proyecto de software
   •   Gestión de requisitos
   •   Gestión de la configuración software (GCS)
   •   Garantía de calidad del software (SQA)
   •   Gestión de la subcontratación
CMM
Nivel 3: Definido
• Nivel 2
• Las actividades se documentan, estandarizan e integran en
  un proceso a nivel organización
• Existe un proceso documentado
• Las ACP son:
   •   Definición y enfoque del proceso de la organización
   •   Programa de formación
   •   Revisiones periódicas
   •   Coordinación entre grupos
   •   Ingeniería de productos software
   •   Gestión de integración del software
CMM
Nivel 4: Gestionado
• Nivel 3
• Se recopilan medidas del proceso del software y de
  la calidad del producto
• Estas medidas sirven para gestionar el proceso
• Las ACP son:
   • Gestión de la calidad del software
   • Gestión cuantitativa del software
CMM
Nivel 5: Optimización
• Nivel 4
• En base a la experiencia y métricas se optimiza el
  proceso
• Las ACP son:
   • Gestión de cambios del proceso
   • Gestión de cambios de tecnología
   • Prevención de defectos
CMM
Un nivel razonable es el definido (nivel 3)
Un nivel deseable es optimización (nivel 5)
Con independencia del CMM, ACPs mínimas:
•   Planificación del proyecto
•   Seguimiento y supervisión del proyecto
•   Gestión de requisitos
•   GCS
•   SQA
•   Definición del proceso
•   Revisiones periódicas
•   Coordinación entre grupos
Datos Agosto 2000
Inicial           34,9%
Repetible         38,2%
Definido          18,5%
Gestionado         5,5%
Optimizado         2,9%

Resultados de 901 empresas desde 1996.
Referencias
• Modelos de proceso
   • Pressman 17-46, Sommerville 42-67
• Proceso Unificado
   • Jacobson, Krutchen
• SW CMM
   • Pressman Cap. 2, Sommerville Cap. 25
   • http://www.sei.cmu.edu/cmm/obtain.cmm.html
• Material
   • Pablo Gervás
   • Juan Pavón y Jorge Gómez
   • Natalia Juristo

Weitere ähnliche Inhalte

Was ist angesagt?

Procesos De Ingenieria Del Software
Procesos De Ingenieria Del SoftwareProcesos De Ingenieria Del Software
Procesos De Ingenieria Del SoftwareRaquel Solano
 
Modelo en cascada
Modelo en cascadaModelo en cascada
Modelo en cascadahome
 
PROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWAREPROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWAREAlejandro Leon
 
Proceso del software
Proceso del softwareProceso del software
Proceso del softwareTensor
 
Sesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del softwareSesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del softwareCoesi Consultoria
 
Modelos de Procesos del Software
Modelos de Procesos del SoftwareModelos de Procesos del Software
Modelos de Procesos del SoftwareJaneth Jimenez
 
Desarrollo agil, Producto Proceso, Scrum
Desarrollo agil, Producto Proceso, ScrumDesarrollo agil, Producto Proceso, Scrum
Desarrollo agil, Producto Proceso, Scrumrgomezm
 
INF-162 GRUPO 6 MODELOS DE PROCESO DE SOFTWARE
INF-162 GRUPO 6 MODELOS DE PROCESO DE SOFTWAREINF-162 GRUPO 6 MODELOS DE PROCESO DE SOFTWARE
INF-162 GRUPO 6 MODELOS DE PROCESO DE SOFTWAREFely Villalba
 
Proceso de Software Una Visión General
Proceso de Software Una Visión GeneralProceso de Software Una Visión General
Proceso de Software Una Visión GeneralRuth Hidalgo Tene
 
Presentacion de inf 162 grupo 6
Presentacion de inf 162 grupo 6Presentacion de inf 162 grupo 6
Presentacion de inf 162 grupo 6Samuel Qc
 
Proceso Del Software
Proceso Del SoftwareProceso Del Software
Proceso Del Softwareleo_ruth
 
Modelos de Procesos de Software
Modelos de Procesos de SoftwareModelos de Procesos de Software
Modelos de Procesos de SoftwareJiuseppe Flores
 
Rational unified process rup
Rational unified process rupRational unified process rup
Rational unified process rupJonathan Arana
 

Was ist angesagt? (16)

Procesos De Ingenieria Del Software
Procesos De Ingenieria Del SoftwareProcesos De Ingenieria Del Software
Procesos De Ingenieria Del Software
 
Patrones de Proceso BPM
Patrones de Proceso BPMPatrones de Proceso BPM
Patrones de Proceso BPM
 
Modelo en cascada
Modelo en cascadaModelo en cascada
Modelo en cascada
 
Fases del rup
Fases del rupFases del rup
Fases del rup
 
PROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWAREPROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWARE
 
Proceso del software
Proceso del softwareProceso del software
Proceso del software
 
Sesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del softwareSesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del software
 
Modelos de Procesos del Software
Modelos de Procesos del SoftwareModelos de Procesos del Software
Modelos de Procesos del Software
 
Desarrollo agil, Producto Proceso, Scrum
Desarrollo agil, Producto Proceso, ScrumDesarrollo agil, Producto Proceso, Scrum
Desarrollo agil, Producto Proceso, Scrum
 
INF-162 GRUPO 6 MODELOS DE PROCESO DE SOFTWARE
INF-162 GRUPO 6 MODELOS DE PROCESO DE SOFTWAREINF-162 GRUPO 6 MODELOS DE PROCESO DE SOFTWARE
INF-162 GRUPO 6 MODELOS DE PROCESO DE SOFTWARE
 
Proceso de Software Una Visión General
Proceso de Software Una Visión GeneralProceso de Software Una Visión General
Proceso de Software Una Visión General
 
Presentacion de inf 162 grupo 6
Presentacion de inf 162 grupo 6Presentacion de inf 162 grupo 6
Presentacion de inf 162 grupo 6
 
Proceso Del Software
Proceso Del SoftwareProceso Del Software
Proceso Del Software
 
Metodologia clasica en cascada
Metodologia clasica en cascadaMetodologia clasica en cascada
Metodologia clasica en cascada
 
Modelos de Procesos de Software
Modelos de Procesos de SoftwareModelos de Procesos de Software
Modelos de Procesos de Software
 
Rational unified process rup
Rational unified process rupRational unified process rup
Rational unified process rup
 

Ähnlich wie CicloVidaSW

Procesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECProcesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECmrojas_unitec
 
PROCESOS DE DESARROLLO DE SOFTWARE_G.pptx
PROCESOS DE DESARROLLO DE SOFTWARE_G.pptxPROCESOS DE DESARROLLO DE SOFTWARE_G.pptx
PROCESOS DE DESARROLLO DE SOFTWARE_G.pptxAlexChavezAlaniz
 
Ingeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidadIngeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidadXKWDX
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaremat3matik
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryynelly
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16Ramon
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de softwareMarilupe
 
Ingen de software
Ingen de softwareIngen de software
Ingen de softwareerikapoh
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaresamantha
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software142918
 
Curso de Ingeniería de Software - Capitulo4
Curso de Ingeniería de Software - Capitulo4Curso de Ingeniería de Software - Capitulo4
Curso de Ingeniería de Software - Capitulo4Eddie Malca
 
16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincremental16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincrementalzaggy88
 

Ähnlich wie CicloVidaSW (20)

Procesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECProcesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITEC
 
Espoch
EspochEspoch
Espoch
 
PROCESOS DE DESARROLLO DE SOFTWARE_G.pptx
PROCESOS DE DESARROLLO DE SOFTWARE_G.pptxPROCESOS DE DESARROLLO DE SOFTWARE_G.pptx
PROCESOS DE DESARROLLO DE SOFTWARE_G.pptx
 
Ingeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidadIngeniería de software Definicion,inicion,importancia y utilidad
Ingeniería de software Definicion,inicion,importancia y utilidad
 
Ingenieria de softwrae vol1 v4 2
Ingenieria de softwrae vol1 v4 2Ingenieria de softwrae vol1 v4 2
Ingenieria de softwrae vol1 v4 2
 
Ingenieria de softwrae vol1 v4 2
Ingenieria de softwrae vol1 v4 2Ingenieria de softwrae vol1 v4 2
Ingenieria de softwrae vol1 v4 2
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryy
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de software
 
Ingen de software
Ingen de softwareIngen de software
Ingen de software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Clase 11
Clase 11Clase 11
Clase 11
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Mod 6.2 introducción al análisis
Mod 6.2 introducción al análisisMod 6.2 introducción al análisis
Mod 6.2 introducción al análisis
 
Curso de Ingeniería de Software - Capitulo4
Curso de Ingeniería de Software - Capitulo4Curso de Ingeniería de Software - Capitulo4
Curso de Ingeniería de Software - Capitulo4
 
Rup
RupRup
Rup
 
Clase1
Clase1Clase1
Clase1
 
16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincremental16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincremental
 
El proceso
El procesoEl proceso
El proceso
 

Mehr von claudiappaez

Software dispositivos móviles
Software dispositivos móvilesSoftware dispositivos móviles
Software dispositivos móvilesclaudiappaez
 
Dispositivos móviles
Dispositivos móvilesDispositivos móviles
Dispositivos móvilesclaudiappaez
 
Tecnicas de 4th generacion
Tecnicas de 4th generacionTecnicas de 4th generacion
Tecnicas de 4th generacionclaudiappaez
 
Modelo de ciclo de vida basado en problemas
Modelo de ciclo de vida basado en problemasModelo de ciclo de vida basado en problemas
Modelo de ciclo de vida basado en problemasclaudiappaez
 
El modelo basado en problemas
El modelo basado en problemasEl modelo basado en problemas
El modelo basado en problemasclaudiappaez
 
Origenes de web 2.0
Origenes de web 2.0Origenes de web 2.0
Origenes de web 2.0claudiappaez
 
La tecnología como herramienta educativa
La tecnología como herramienta educativaLa tecnología como herramienta educativa
La tecnología como herramienta educativaclaudiappaez
 
Paginas de consulta práctica
Paginas de consulta prácticaPaginas de consulta práctica
Paginas de consulta prácticaclaudiappaez
 
Descripción del teclado
Descripción del tecladoDescripción del teclado
Descripción del tecladoclaudiappaez
 
Crimpado de cables
Crimpado de cablesCrimpado de cables
Crimpado de cablesclaudiappaez
 
Manual de virtual box
Manual de virtual boxManual de virtual box
Manual de virtual boxclaudiappaez
 
Cableado estructurado
Cableado estructuradoCableado estructurado
Cableado estructuradoclaudiappaez
 
Introducción a los computadores
Introducción a los computadoresIntroducción a los computadores
Introducción a los computadoresclaudiappaez
 

Mehr von claudiappaez (17)

Software dispositivos móviles
Software dispositivos móvilesSoftware dispositivos móviles
Software dispositivos móviles
 
Dispositivos móviles
Dispositivos móvilesDispositivos móviles
Dispositivos móviles
 
Tecnicas de 4th generacion
Tecnicas de 4th generacionTecnicas de 4th generacion
Tecnicas de 4th generacion
 
Modelo de ciclo de vida basado en problemas
Modelo de ciclo de vida basado en problemasModelo de ciclo de vida basado en problemas
Modelo de ciclo de vida basado en problemas
 
El modelo basado en problemas
El modelo basado en problemasEl modelo basado en problemas
El modelo basado en problemas
 
Taller de Word
Taller de WordTaller de Word
Taller de Word
 
Web 20
Web 20Web 20
Web 20
 
Origenes de web 2.0
Origenes de web 2.0Origenes de web 2.0
Origenes de web 2.0
 
La tecnología como herramienta educativa
La tecnología como herramienta educativaLa tecnología como herramienta educativa
La tecnología como herramienta educativa
 
Manual windows xp
Manual windows xpManual windows xp
Manual windows xp
 
Paginas de consulta práctica
Paginas de consulta prácticaPaginas de consulta práctica
Paginas de consulta práctica
 
Descripción del teclado
Descripción del tecladoDescripción del teclado
Descripción del teclado
 
Crimpado de cables
Crimpado de cablesCrimpado de cables
Crimpado de cables
 
Manual de virtual box
Manual de virtual boxManual de virtual box
Manual de virtual box
 
Cableado estructurado
Cableado estructuradoCableado estructurado
Cableado estructurado
 
Introducción a los computadores
Introducción a los computadoresIntroducción a los computadores
Introducción a los computadores
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 

CicloVidaSW

  • 1. Presentación de IS Proyecto de IS Introducción a la IS Proceso y Ciclo de Vida Proceso Software y Ciclo de Vida Curso 2008-2009 Gonzalo Méndez Dpto. de Ingeniería de Software e Inteligencia Artificial Facultad de Informática Universidad Complutense de Madrid
  • 2. Conceptos importantes Personas • los que trabajan Producto • lo que se obtiene Proyecto • la pauta a seguir para desarrollar un producto Proceso • la pauta a seguir para desarrollar un proyecto
  • 3. Un traje Personas • El sastre Producto • El traje Proyecto: • el sastre, el traje, el presupuesto del traje, el traje en sí, los pasos a dar para hacer el traje... Proceso • La secuencia de acciones para hacer un traje concreto
  • 4. Una cena Personas • Empleados de una empresa de catering Producto • La cena que se sirve Proyecto • El menú, el presupuesto, lo que hay que hacer para conseguir el menú, ... Proceso • La secuencia de acciones de servir una cena
  • 5. Una gama de automóviles Personas • Empleados de la marca Producto • Los automóviles Proyecto • Desarrollo de un modelo nuevo Proceso • Las instrucciones de la empresa sobre cómo desarrollar un modelo nuevo
  • 6. Para vosotros Personas • vuestro grupo Producto • la aplicación elegida Proyecto • parte práctica IS Proceso • entregas mensuales + cómo vosotros decidáis organizaros
  • 7. Capas de la IS Capa de enfoque de calidad Capa de proceso Capa de métodos Capa de herramientas
  • 8. Capas de la IS Capa de calidad • Base de cualquier proceso de ingeniería • La IS se basa en calidad • Mejores técnicas de construcción de software Capa de proceso • Capa que une calidad y métodos • Desarrollo racional de la IS • Conjunto de actividades y resultados asociados que sirven para construir un producto software
  • 9. Capas de la IS Capa de métodos • Un método incluye: • Análisis de requisitos • Diseño • Construcción de programas • Prueba • Mantenimiento • Suelen estar bastante ligados al proceso Capa de herramientas • Soporte automático o semiautomático para el proceso y los métodos • Herramientas CASE
  • 10. Visión general de la IS Con independencia del modelo de proceso hay tres fases genéricas: • Fase de definición • Fase de desarrollo • Fase de mantenimiento Cada una de estas fases se descompone en un conjunto de tareas
  • 11. Fase de definición/especificación Se identifican requisitos de sistema y software: • Información a procesar • Función y rendimiento deseados • Comportamiento del sistema • Interfaces establecidas • Restricciones de diseño • Tareas principales: • Planificación del proyecto software • Ingeniería de sistemas o de información • Análisis de requisitos
  • 12. Fase de desarrollo Se define: • Cómo diseñar las estructuras de datos • Cómo implementar las funciones • Cómo caracterizar las interfaces • Cómo traducir el diseño a programación • Cómo validar el producto (pruebas, verificación) • Tareas principales: • Diseño del software • Generación del código • Pruebas del software
  • 13. Fase de mantenimiento Centrada en cambios que se pueda necesitar realizar sobre un producto Se vuelven a aplicar las fases de definición y desarrollo, pero sobre software ya existente Pueden producirse cuatro tipos de cambio: • Corrección: Corregir los defectos • Adaptación: Modificaciones por cambio externo • Mejora: Ampliar los requisitos funcionales originales, a petición del cliente • Prevención: Cambio para facilitar el cambio
  • 14. Visión general de la IS Estas fases se complementan con las actividades de soporte • No crean software • Mejoran su calidad • Facilitan su desarrollo Se aplican a lo largo de todo el proceso del software
  • 15. Visión general de la IS Ejemplos de actividades de soporte • Documentación • Gestión de configuración • Seguimiento y control del proyecto de software • Revisiones técnicas formales • Garantía de la calidad del software • Gestión de reutilización • Mediciones • Gestión de riesgos
  • 16. Proceso software Conjunto estructurado de actividades y resultados asociados requeridos para desarrollar un sistema de software • Especificación: establecer requisitos y restricciones • Diseño: Producir un modelo en papel del sistema • Implementación: construcción del sistema de software • Validación: verificar (por ejemplo mediante pruebas) que el sistema cumple con las especificaciones requeridas • Instalación: entregar el sistema al usuario • Evolución y mantenimiento: cambiar/adaptar el software según las demandas; reparar fallos en el sistema
  • 17. Modelos de proceso Un modelo de proceso, o paradigma de IS, es una plantilla, patrón o marco que define el proceso a través del cual se crea software Dicho de otra forma, los procesos son instancias de un modelo de proceso En esta asignatura los términos proceso y modelo de proceso se utilizan indistintamente
  • 18. Modelos de proceso Una organización podría variar su modelo de proceso para cada proyecto, según: • La naturaleza del proyecto • La naturaleza de la aplicación • Los métodos y herramientas a utilizar • Los controles y entregas requeridas
  • 19. Características del proceso Entendible Visibilidad: Grado en que las actividades del proceso proporcionan resultados Soportable por herramientas CASE Aceptabilidad: Grado en que los desarrolladores aceptan y usan el proceso Fiabilidad: Capacidad de evitar o detectar errores antes de que sean defectos Robustez: Continuidad del proceso a pesar de los problemas Mantenible: Capacidad de evolución para adaptarse Rapidez: Velocidad en que el proceso puede proporcionar un sistema a partir de una especificación
  • 20. Modelos Genéricos de Desarrollo de Software Modelo de Cascada Prototipado Desarrollo Evolutivo En espiral Desarrollo basado en componentes Métodos Formales
  • 21. Modelo en cascada (waterfall) Modelo de proceso clásico (desde los 70) Basado en la mentalidad de línea de ensamblaje (cartesiano) Es sencillo y fácil de entender El proyecto pasa a través de una serie de fases • Al final de cada fase se revisan las tareas de trabajo y productos • Para poder pasar a la siguiente fase se tiene que haber conseguido todos los objetivos de la fase anterior • No hay apenas comunicación entre las fases
  • 22. Modelo en cascada (waterfall) Definición de Requisitos Diseño del Software y del Sistema Implementación y Pruebas Unitarias Integración y Prueba del Sistema Operación y Mantenimiento
  • 23. Modelo en cascada (waterfall) Fases: • Conceptualización: Se determina la arquitectura de la solución (división del sistema en subsistemas) • Análisis de requisitos: Básicamente se definen los requisitos funcionales y de rendimiento • Diseño: Representación de la aplicación que sirve de guía a la implementación • Implementación: Transforma el diseño en código • Prueba: Validación e integración de software y sistemas • Instalación y comprobación: Se instala el software al cliente, el cual comprueba la corrección de la aplicación Se supone que sólo se baja en la cascada... pero también se puede subir (aunque difícilmente)
  • 24. Modelo en cascada (waterfall) Posibles ventajas: • Sencillo: Sirve cuando el personal está poco cualificado • Aplicable cuando el problema es estable y cuando se trabaja con técnicas conocidas Críticas: • No se ve un producto hasta muy tarde en el proceso • Un error grave detectado en las últimas fases puede ser letal • Especificación de requisitos estable • Impone una estructura de gestión de proyectos • Fases muy rígidas • Las revisiones de proyectos de gran complejidad son muy difíciles
  • 25. Prototipado Se usa un prototipo para dar al usuario una idea concreta de lo que va a hacer el sistema Se aplica cada vez más cuando la rapidez de desarrollo es esencial Prototipado evolutivo: el prototipo inicial se refina progresivamente hasta convertirse en versión final Prototipado desechable: de cada prototipo se extraen ideas buenas que se usan para hacer el siguiente, pero cada prototipo se tira entero
  • 26. Prototipado Escuchar al cliente Construir/ revisar prototipo El cliente evalúa el prototipo
  • 27. Prototipado Comienza con la recolección de requisitos • Cliente y desarrolladores definen los objetivos globales del software. • Además, identifican los requisitos conocidos y aquellos que deben ser más definidos. Aparece un diseño rápido centrado en los aspectos visibles para el cliente (e.g. información de E/S) • El diseño rápido lleva a la construcción de un prototipo El prototipo lo evalúa el cliente y lo utiliza para refinar los requisitos El proceso se itera... ¿desechando el prototipo?
  • 28. Prototipado Ventajas • Permite identificar los requisitos incrementalmente • Permite probar alternativas a los desarrolladores • Tiene una alta visibilidad tanto clientes como desarrolladores ven resultados rápidamente Inconvenientes • El cliente no entiende por qué hay que desechar el prototipo • Si simplemente ha pedido unos ajustes...(¿?) • Riesgo de software de baja calidad • Compromisos de implementación para que el prototipo funcione rápidamente y que al final son parte integral del sistema – Utilizar un SO o lenguaje de programación inadecuado pero conocido
  • 29. Modelos evolutivos Características: • Gestionan bien la naturaleza evolutiva del software • Son iterativos: construyen versiones de software cada vez más completas Se adaptan bien: • Los cambios de requisitos del producto • Fechas de entrega estrictas poco realistas • Especificaciones parciales del producto
  • 30. Modelos evolutivos Actividades Concurrentes Versión Especificación Inicial Descripción Versiones del sistema Desarrollo Versiones Intermedias Intermedias Validación Versión Final
  • 31. Modelos evolutivos. Incremental Fusiona el modelo lineal secuencial con el de construcción de prototipos A D C P 1er incremento A D C P 2º incremento ..................... N-ésimo incremento
  • 32. Modelos evolutivos. Incremental Cada secuencia lineal secuencial produce un incremento del software • Incremento: producto operacional de una parte del sistema El primer incremento suele ser el núcleo • Requisitos básicos • Muchas funciones suplementarias se dejan para después Se evalúa (p.ej., por el cliente) el producto entregado • Como resultado se desarrolla un plan para el siguiente Se itera • Hasta elaborar el producto completo
  • 33. Modelos evolutivos. Incremental Ventajas • Es interactivo • Con cada incremento se entrega al cliente un producto operacional al cliente, que puede evaluarlo • Personal • Permite variar el personal asignado a cada iteración • Gestión riesgos técnicos • Por ejemplo, disponibilidad de hardware específico Inconvenientes • La primera iteración puede plantear los mismos problemas que en un modelo lineal secuencial
  • 34. Modelo de Proceso en Espiral Original: Boehm, 1988 IEEE Std. 1490-1998 Tratar primero las áreas de mayor riesgo Múltiples iteraciones sobre varias regiones de tareas • Vuelta a la espiral: ciclo • Número de iteraciones predeterminadas o calculadas dinámicamente Se pueden variar las actividades de desarrollo: familia de modelos de procesos
  • 35. Modelo de Proceso de Espiral Evalúe alternativas, Determine objetivos identifique y resuelva alternativas y riesgos restricciones Análisis de Riesgos Análisis de Riesgos Análisis de Riesgos Prototipo Prototipo Operacional Análisis Prototipo 3 de Proto 2 REVISIÓN Riesgos tipo1 Simulaciones, modelos y benchmarks Plan de requerimientos Concepto de Plan del ciclo de vida Operación Requeri mientos de Diseño Diseño SW del Detallado Plan de Validación de Producto Codificación Desarrollo Requerimientos Prueba de Plan de Integración Diseño Unidades Prueba de y Prueba V &V Planea la Prueba de Integración Aceptación Desarrolla y verifica siguiente fase Servicio el siguiente nivel del producto
  • 36. Modelo de Proceso en Espiral El modelo en espiral es bastante adecuado para la gestión de riesgos Se puede añadir una actividad de gestión de riesgos De hecho, el modelo original de Boehm: • Fijar objetivos • Gestionar y reducir riesgos • Desarrollo y validación • Planificar siguiente ciclo
  • 37. Modelos Evolutivos. Espiral Boehm Fijar objetivos • Definir objetivos del ciclo • Identificar restricciones del proceso y producto • Desarrollar plan de gestión • Identificar riesgos • Identificar estrategias alternativas Gestionar y reducir el riesgo • RSGR para cada riesgo identificado
  • 38. Modelos Evolutivos. Espiral Boehm Desarrollo y validación • Elegir modelo de desarrollo • Algunos autores lo denominan metamodelo • Yo prefiero llamarlo modelo paramétrico Planificación • Revisión del proyecto • Decisión de una nueva vuelta
  • 39. Modelos de Proceso en Espiral Ventajas • Enfoque realista • Gestión explícita de riesgos • Centra su atención en la reutilización de componentes y eliminación de errores en información descubierta en fases iniciales • Los objetivos de calidad son el primer objetivo • Integra desarrollo con mantenimiento
  • 40. Modelos de Proceso en Espiral Inconvenientes • Convencer cliente enfoque controlable • Requiere de experiencia en la identificación de riesgos • Requiere refinamiento para uso generalizado
  • 41. Desarrollo Basado en Componentes Desarrollo de sistemas en poco tiempo Adaptación a “alta velocidad” de la cascada • Equipos trabajando en paralelo • Aplicando tecnología de componentes Equipo 1 Equipo 2 Equipo n A A A D D ............ D C C C P P P 60-90 días
  • 42. Desarrollo Basado en Componentes Ventajas • Rapidez • Válido para aplicaciones modularizables Inconvenientes • Exige conocer bien los requisitos y delimitar el ámbito del proyecto • Número de personas • Clientes y desarrolladores comprometidos • Gestión riesgos técnicos altos • Uso de nueva tecnología • Alto grado de interoperabilidad con sistemas existentes
  • 43. Desarrollo Basado en Componentes Identificar componentes candidatos Construir Buscar iteración N componentes del sistema en biblioteca Añadir Extraer componentes componentes a biblioteca disponibles Construir componentes que falten
  • 44. Desarrollo con métodos formales Se basa en la transformación de una especificación formal a lo largo de varias representaciones hasta llegar a un programa ejecutable Las transformaciones preservan la corrección • Permiten comprobar fácilmente que el programa es conforme a la especificación
  • 45. Desarrollo con métodos formales Requirements Formal Formal Integration and definition specification transformation system testing
  • 46. Transformaciones formales Formal transformations T1 T2 T3 T4 Formal R1 Executable R2 R3 specification program P1 P2 P3 P4 Proofs of transformation correctness
  • 47. Desarrollo formal de sistemas Problemas • Hace falta una formación especializada para aplicar la técnica • Muchos aspectos de los sistemas reales son difíciles de especificar formalmente • Interfaz de usuario • Requisitos no funcionales Aplicabilidad • Sistemas críticos en los que la seguridad y fiabilidad debe poder asegurarse antes de poner el sistema en operación
  • 48. Visibilidad de Procesos Los sistemas de software son intangibles por lo que los administradores necesitan documentación para identificar el progreso en el desarrollo Esto puede causar problemas • El tiempo planeado para entregar resultados puede no coincidir con el necesario para completar una actividad • La necesidad de producir documentos restringe la iteración entre procesos • Tiempo para revisar y aprobar documentos significativo El modelo de cascada es aún el modelo basado en resultados mas utilizado
  • 49. Visibilidad de Procesos Modelo de Proceso Visibilidad del Proceso Modelo de Cascada Buena visibilidad, cada actividad produce un documento o resultado Desarrollo Evolutivo Visibilidad pobre, muy caro al producir documentos en cada iteración Modelos Formales Buena visibilidad, en cada fase deben producirse documentos Desarrollo orientado a la Visibilidad moderada. Importante reutilización contar con documentación de componentes reutilizables Modelo de Espiral Buena visibilidad, cada segmento y cada anillo del espiral debe producir un documento
  • 50. ¿Qué modelo utilizar? Para sistemas bien conocidos se puede utilizar el Modelo de Cascada. La fase de análisis de riesgos es relativamente fácil Con requisitos estables y sistemas de seguridad críticos, se recomienda utilizar modelos formales Con especificaciones incompletas, el modelo de prototipado ayuda a identificarlos y va produciendo un sistema funcional Pueden utilizarse modelos híbridos en distintas partes del desarrollo
  • 51. Ejemplos Dos modelos de proceso concretos: • Proceso Unificado de Rational (pesado) • Extreme Programming (ágil)
  • 52. Proceso Unificado Los autores de UML • Booch: método Booch • Rumbaugh: OMT • Jacobson: proceso Objectory También conocido como RUP: Rational Unified Process
  • 53. Proceso Unificado Es un proceso de desarrollo de software • Dirigido por casos de uso • Centrado en la arquitectura • Iterativo e incremental Utiliza UML para definir los modelos del sistema software El sistema software en construcción está formado por • componentes software • interconectados a través de interfaces Proceso de Requisitos desarrollo de Sistema de usuario software software Los requisitos cambian y el sistema software evoluciona
  • 54. Proceso Unificado Organization along time Phases Process Components Inception Elaboration Construction Transition Requirements Capture Analysis & Design Implementation Organization Test along content Supporting Components Management Environment Deployment preliminary iter. iter. iter. iter. iter. iter. iter. iteration(s) #1 #2 #n #n+1 #n+2 #m #m+1 Iterations
  • 55. Extreme Programming (XP) Modelo de proceso de Kent Beck Un modo ligero, eficiente, de bajo riesgo, flexible, predecible, científico y divertido de producir software Características • Alta visibilidad debido a ciclos muy cortos • Planificación incremental • Se adapta a cambios de negocio
  • 56. Extreme Programming (XP) Basado en pruebas automatizadas escritas por desarrolladores y clientes (test-driven) Alta comunicación Diseño evolutivo Colaboración entre programadores Busca equilibrio entre las necesidades a corto plazo de los programadores y las de largo plazo del proyecto
  • 57. Extreme Programming (XP) La estructura del proceso, si la hay, es un poco atípica Codificación Prueba Evaluación Diseño Actividades en XP
  • 58. Extreme Programming (XP) Las cuatro actividades están soportadas por doce prácticas: • El juego de planificación • Pequeñas entregas • Metáfora • Diseño simple • Prueba • Refactoring • Programación en pareja • Propiedad colectiva • Integración continua • Semana de cuarenta horas • Cliente en el lugar de desarrollo • Codificación estándar
  • 59. Extreme Programming (XP) Ventajas: • Bueno para especificaciones cambiantes • Fundamentación práctica Inconvenientes: • Poco probado • Poco compatible con especificaciones/diseños totales • Sólo funciona con equipos pequeños (hasta diez personas)
  • 60. Extreme Programming (XP) Diferencias fundamentales (hay más que ya se verán) • No hay requisitos explícitos sino que el cliente participa en el desarrollo • Se empieza por automatizar las pruebas • Se desarrolla siempre la versión más simple posible que resuelva el problema • Se ejecutan todas las pruebas todos los días • Se cambia el diseño (aunque sea radicalmente) siempre que haga falta
  • 61. Calidad del proceso de software ¿ Cómo medir la calidad del proceso de software de una empresa ?
  • 62. La empresa ideal El Dpto. de la Defensa de los US fundó el Software Engineering Institute (SEI) asociado con la Universidad de Carnegie Mellon (CMU). Desarrollan el Software Capability Maturity Model (SW CMM) a mediados de 1980s, refinado en los inicios de l990s. Este modelo define una serie de áreas clave de proceso (ACP) • Un área clave de proceso es, básicamente, una actividad de IS
  • 63. Software Capability Maturity Model Level 5 Optimizing Level 4 Managed Level 3 Defined Level 2 Repeatable Level 1 Initial
  • 64. Áreas clave del proceso O p t i m i zi n g P r o ce s s c h a n g e m a n a g em e n t T e c h n o l o g y c h a n g e m a n a g em e n t D e f e c t p r e v e n t io n M a n a g ed S o f tw a re q u a l it y m a n a g e m e n t Q u a nt it a t iv e p r o c e s s m a n a g e m e n t D e fin e d P e e r r e v ie w s I n t e r g ro u p c o o r d in a t io n S o f tw a r e p r o d u c t e n g i n e e r i n g I n t e g r a t e d s o f tw a r e m a n a g e m e n t T ra ining p rog ra m m e O r g a n i z a ti o n p r oc e s s d e f in it io n O r g a n i z a ti o n p r oc e s s f o c u s R e p e atab le S o f tw a r e c o n f i g u ra t io n m a n a g e m e n t S o f tw a r e q u a l it y a s s u r a n c e S o f tw a r e s u b c o n tr a c t m a n a g e m e n t S o f tw a r e p ro je c t tr a c k i n g a n d o v e r s ig h t S o f tw a r e p ro je c t p l a n n in g R e q u ir e m e n ts m a n a g e m e n t I n it i a l ©Ian Sommerville 1995 Software Engineering, 5th edition. Chapter 31.
  • 65. CMM Los niveles son acumulativos Nivel 1: Inicial • El proceso de software se caracteriza según el caso • Se definen poco procesos • El éxito depende del esfuerzo individual
  • 66. CMM Nivel 2: Repetible • Se incluye seguimiento del coste, la planificación y la funcionalidad • Se repiten técnicas de proyectos anteriores con buenos resultados • Las ACP son: • Planificación del proyecto de software • Seguimiento y supervisión del proyecto de software • Gestión de requisitos • Gestión de la configuración software (GCS) • Garantía de calidad del software (SQA) • Gestión de la subcontratación
  • 67. CMM Nivel 3: Definido • Nivel 2 • Las actividades se documentan, estandarizan e integran en un proceso a nivel organización • Existe un proceso documentado • Las ACP son: • Definición y enfoque del proceso de la organización • Programa de formación • Revisiones periódicas • Coordinación entre grupos • Ingeniería de productos software • Gestión de integración del software
  • 68. CMM Nivel 4: Gestionado • Nivel 3 • Se recopilan medidas del proceso del software y de la calidad del producto • Estas medidas sirven para gestionar el proceso • Las ACP son: • Gestión de la calidad del software • Gestión cuantitativa del software
  • 69. CMM Nivel 5: Optimización • Nivel 4 • En base a la experiencia y métricas se optimiza el proceso • Las ACP son: • Gestión de cambios del proceso • Gestión de cambios de tecnología • Prevención de defectos
  • 70. CMM Un nivel razonable es el definido (nivel 3) Un nivel deseable es optimización (nivel 5) Con independencia del CMM, ACPs mínimas: • Planificación del proyecto • Seguimiento y supervisión del proyecto • Gestión de requisitos • GCS • SQA • Definición del proceso • Revisiones periódicas • Coordinación entre grupos
  • 71. Datos Agosto 2000 Inicial 34,9% Repetible 38,2% Definido 18,5% Gestionado 5,5% Optimizado 2,9% Resultados de 901 empresas desde 1996.
  • 72. Referencias • Modelos de proceso • Pressman 17-46, Sommerville 42-67 • Proceso Unificado • Jacobson, Krutchen • SW CMM • Pressman Cap. 2, Sommerville Cap. 25 • http://www.sei.cmu.edu/cmm/obtain.cmm.html • Material • Pablo Gervás • Juan Pavón y Jorge Gómez • Natalia Juristo