SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
Modelos de desarrollo
                  de software



septiembre de 2007                    1
Referencias básicas

• Ingeniería de software. Un enfoque
práctico. Pressman, R. Quinta edición. Mc.
Graw Hill 2002

• Ingeniería de software. Sommerville, I.
Séptima edición. Addison Wesley 2005


                                             2
Ingenieria de Software

• Un ingeniero civil supervisando la construcción
  de un edificio para asegurar que sea estable y
  de acuerdo a los requerimientos de los clientes.
• Un ingeniero o varios ingenieros escribiendo
  procedimientos de diversa complejidad para
  desarrollar sistemas de software (sw)
• El software de gran envergadura requiere de
  métodos, procedimientos y herramientas
• Metodologías inapropiadas incrementan costos y
  el consumo extra de tiempo.
                                                 3
Software

• Características deseables
  – Confiable
  – Robusto
  – Reutilizable
  – Eficiente
  – Mantenible
  – Evolutivo
  – Portable
  – Utilizable
                              4
Proceso de Software

• Proceso: Serie de operaciones usadas en la
  creación de un producto.
• Proceso de Software: Conjunto de tareas que
  tienen que ser realizadas para producir un
  producto de software de alta calidad (Desarrollo
  de software)
• Proceso de Software: Proceso que se sigue para
  construir un producto de software desde la
  concepción de una idea, hasta la entrega y el
  retiro final del sistema.                        5
Modelos de Desarrollo de
Software
• Actividades en el proceso de desarrollo
  de software
  – Análisis de Requerimientos
  – Especificación
  – Diseño
  – Programación
  – Integración y Gestión de Configuraciones
  – Validación y Verificación
  – Prototipaje
                                               6
Modelos de Desarrollo de
Software
• Relaciones entre las actividades: Modelo
  de Desarrollo
• Ciclo de vida del software
• Modelos de desarrollo: cascada, espiral,
  incremental, basado en transformaciones,
  basado en reutilización, etc.



                                             7
Las actividades en el proceso
 de desarrollo de software
• se relacionan según determinados:
                                modelos

• se desarrollan aplicando un:
                                 método

• El método se fundamenta en:
                                 principios

• El método puede ser soportado por:
                                herramientas   8
Actividades usuales




                      9
Acerca de las actividades

• Se describen en forma independiente, indicando datos,
  rol y resultados

• Utiliza y produce documentos

• Se relacionan e interactúan de diferentes maneras
  conformando distintos procesos de desarrollo de
  software (modelos)

• De acuerdo al modelo una actividad puede jugar un rol
  preponderante o incluso pudiera no existir

                                                          10
Análisis de requerimientos
 Datos provistos
Es una actividad
 por los expertos
 en el dominio en
  requerida y
                      Documentos
     cualquier
 usuarios             orientados al
 potenciales
      modelo          usuario y útiles
                      para el analista:



                    Comprensibles Precisos
                    Completos     Consistentes
                         No ambiguos
                                             11
                        Fácil de modificar
Análisis de requerimientos

• Identificar el problema
• Documentar los requerimientos
• Involucrar a los usuarios y expertos en el
  dominio de aplicación (requiere diálogo y
  comunicación)
• Esta actividad puede mantenerse a lo largo
  del proceso
• Pueden crearse prototipos.

                                               12
Especificación
     Describe en
    forma precisa
  Datos resultantes
   del análisis de a
     el sistema
      desarrollar
  requerimientos y     Descripción
  consideraciones      orientada al
     técnicas          desarrollador




                                       13
Especificación

• Puede ser informal, semiformal o formal
• La especificación formal permite
  verificación
• En algunos modelos sustituye al diseño
• Describe el “qué” y no el “cómo”



                                            14
Diseño

  Constituye un
  refinamiento
                    Descripción
   del análisis
 Especificación y   detallada
 consideraciones    orientada al
 técnicas           implementador




                                    15
Diseño

• Se enriquece la descripción del análisis
  incorporando aspectos de la plataforma de
  desarrollo
• Diseño arquitectónico: se desarrolla la
  arquitectura del sistema
• Diseño detallado: Se desarrollan los
  componentes (algoritmos, representación de
  datos, etc.)


                                               16
Programación

     Clases, módulos
        en el LP
      seleccionado
 Diseño y              Componentes de
 consideraciones       programas -
 técnicas              Código en un LP




                                         17
Integración y gestión de
configuraciones
     Obtener el
      sistema
                     Ensamblaje de
     ejecutable      versiones
 Componentes de      coherentes de
 programa            los componentes




                                       18
Validación y verificación
      Permite
  determinar la
 confiabilidad o
  correctitud del
Documentos            Documentos
     producto
(textos,              validados/
programas, etc)       verificados




                                    19
Validación y verificación

• Validación: el software responde a lo que espera
  el usuario
• Verificación: el software satisface la
  especificación
   – prueba: el programa satisface la
     especificación
   – testing: búsqueda de errores en los
     componentes, en la integración, en el sistema.

                                                 20
Prototipaje
 Desarrollo rápido
   de programas
  que constituyen
 partes del sistema
 Resultados
 parciales del        Prototipo (esbozo
 análisis             parcial del sistema)




                                             21
Prototipaje

• Esbozo parcial del futuro sistema
• Permite experimentar
• Permite validar y precisar la especificación de
  requerimientos y características del futuro
  sistema
• Indispensable para el desarrollo de la interfaz.

                                                     22
¿Cuál modelo han usado?
                        Análisis de
                       Requerimientos
     Mantenimiento                          Diseño del
                                             Sistema


   Liberación


                                               Diseño de
                                               Programas
Validación
del Sistema



         Integración                     Construcción
                                        de Programas


                         Validación                        23
                       de componentes
Modelos de desarrollo

• Define la estructura de un proceso de
  desarrollo racional y controlable
• No existe un modelo universal
• Los modelos no son rígidos
• Son una guía respecto al orden en que deben
  adelantarse las actividades
• Se basa en el reconocimiento que el software
  tiene un ciclo de vida.
                                                 24
Ciclo de vida del software
                  Análisis del
                   problema

                                                  Liberación del
                                                     producto



Comprensión del
   problema


                                 Desarrollo del
                                   software

                                                                   25
Ciclo de vida del software




 ...casi siempre...!!




                        Mantenimiento
                         del producto
                                        26
Obsolescencia del producto



               Fin del ciclo de vida




                                       27
Modelos de desarrollo

    • Secuencial Lineal
       – Cascada (clásico)
       – RAD (Desarrollo Rápido de Aplicación)
    • Evolutivo
       – Incremental
       – Espiral
       – Basado en reutilización
    • Basado en transformaciones
                                                 28
    • ......
Modelo de la cascada

• Propuesto por Winston Royce en 1970
• Conocido como modelo secuencial lineal
• Encadenamiento secuencial de las
  actividades
• Cada etapa produce documentos que son la
  entrada a la siguiente
• Para desarrollar una etapa debe concluirse la
  anterior
• Popular en la década 70
                                                  29
Modelo de cascada
Modificado
• Permite retroalimentación y solapamiento
  entre fases.
• Es un modelo iterativo y no lineal.
• Para facilitar la terminación de metas y
  tareas, es normal congelar partes del
  desarrollo después de cierto punto en la
  iteración.


                                             30
Modelo de cascada

• Ventajas:
   – Planificación sencilla.
   – Una plantilla estructurada para ingeniería de sw.
• Desventajas:
   – Evolución de los Requisitos .
   – Resultados al final.
   – Retrasos innecesarios.
• Útil en proyectos:
   – Todas las especificaciones claras inicialmente.
   – Producto no novedoso.
   – Complejos que se entienden bien desde el principio.


                                                           31
Modelo de cascada

• Suponga:
  – Peter y David consultan a un arquitecto
    para diseñar una casa. El arquitecto les
    presenta un documento técnico de 100
    páginas. Como no entienden y para no leer
    el documento, ellos aceptan el diseño.
  – Un ama de casa compra cortinas por
    correo. Ella recibe una descripción escrita
    del corte y la tela.

                                                  32
Modelo de Desarrollo Rápido de
Aplicación - RAD
• RAD: Rapid Application Development
• Modelo secuencial lineal con tiempos cortos
  de desarrollo
• Varios equipos participando en el desarrollo
• Cada equipo maneja una parte del sistema
• Uso de herramientas de pruebas
  automatizadas
• En cada etapa de liberación, los productos
  parciales son integrados, probados y
  liberados
                                                 33
Modelo de Desarrollo Rápido de
Aplicación - RAD
• Desventajas:
  – Para ciclos de desarrollo extremadamente cortos:
    Requerimientos bien entendidos y alcance de
    proyecto restringido
  – Se requiere múltiples desarrolladores
  – Compromiso de desarrolladores y clientes para un
    tiempo de entrega corto
  – No adecuado para sistemas que no puedan ser
    mantenidos adecuadamente
  – No se enfoca en detalles minuciosos

                                                       34
Modelo Evolutivo

1. Entregar algo al usuario
2. Recibir retroalimentación del usuario
3. Ajustar el diseño y objetivos basado a las
   realidades observadas
• Enfoques:
   – Incremental
   – Espiral
   – Basado en reutilización
                                                35
Modelo Incremental

• Desarrollo paso a paso donde las partes de
  algunas etapas se posponen.
• Cada etapa consiste en expandir incrementos
  de un producto de software operacional
• Incrementos pueden ser entregados al cliente
• Cada incremento es diseñado, codificado,
  probado, integrado y entregado por separado
• Los incrementos se desarrollan uno después
  de otro, basados en retroalimentación
                                                 36
  recibida del cliente.
Modelo Incremental

• Ventajas:
  – Existe una disponibilidad limitada de recursos de
    desarrollo.
  – Cuando es difícil establecer todos los
    requerimientos por anticipado
• Desventajas:
  – Si los requerimientos crecen, la arquitectura y el
    diseño puede cambiar drásticamente


                                                         37
Modelo en espiral

• Propuesto por Barry Boehm en 1988
• Desarrollo en ciclos.
• En cada ciclo:
  – se define el objetivo,
  – se analizan los riesgos,
  – desarrollo y verificación de la solución
    obtenida,
  – revisión de resultados y planificación del
    siguiente ciclo                              38
Modelo en espiral

• Se centra en algunas mejores
  prácticas:
 – Manejo de Riesgos
 – Orientación al Cliente
 – Desarrollo Iterativo



                                 39
Modelo en espiral

• Ventajas:
  – Resolución temprana de riesgos.
  – Definición de arquitectura en sus fases
    iniciales.
  – Basado en un proceso continuo de
    verificación de la calidad.
  – Ideal para productos con un nivel alto de
    inestabilidad de los requerimientos.

                                                40
Modelo en espiral

• Desventajas:
  – No aplicable a proyectos bajo contrato.
  – No recomendable en proyectos simples.




                                              41
Modelo Basado en
reutilización
• Se basa en el ensamblaje de componentes



Bosquejar los       Búsqueda de               Modificar requerimientos
requerimientos      componentes              acordes a los componentes
del sistema          reutilizables                  encontrados




   Diseño             Búsqueda de                Diseñar el sistema
Arquitectónico   componentes reutilizables         utilizando los
                                                   componentes
                                                    reutilizables
                                                                         42
Modelo Basado en
reutilización
• Ventajas:
  – Incremento en la fiabilidad
  – Reducción en el riesgo
  – Utilización efectiva de especialistas
  – Conformidad con los estándares
  – Desarrollo acelerado, quizás 70% como
    indican algunos estudios


                                            43
Modelo Basado en
reutilización
• Desventajas:
  – Falta de apoyo de las herramientas
  – Síndrome de aquí no se ha inventado
  – Costo de encontrar, entender y adaptar
    componentes reutilizables




                                             44
Modelo Basado en
transformaciones
• Conjunto de técnicas y herramientas
  basadas en modelos matemáticos y lógica
  formal que son utilizadas para especificar y
  verificar los requerimientos y el diseño de
  sistemas computarizados.
• Se basa en especificaciones formales
• Las especificaciones son refinadas hasta
  alcanzar el programa
• El método formal se puede usar para
  verificar el sistema de una manera rigurosa
  usando técnicas matemáticas.
                                                 45
Modelo Basado en
transformaciones
• Una especificación formal es una
  descripción concisa del comportamiento y
  propiedades de un sistema escrito en un
  lenguaje basado en la matemática.
• Una prueba formal es un argumento
  completo y convincente para la validez de
  una tesis sobre la descripción de un
  sistema. Las pruebas formales se pueden
  realizar manualmente o con la asistencia de
  una herramienta automática.

                                                46
Modelo Basado en
transformaciones
• Lenguajes de especificación formal: PCS
  (Procesos de Comunicación Secuencial),
  MDV (Método de Desarrollo Vienna) y la
  notación Z.




                                            47
Modelo Basado en
transformaciones
• Aplicar Métodos Formales en las fases de
  levantamiento de requerimientos y de
  diseño de alto nivel.
• Las pruebas formales eliminan ambigüedad
  y subjetividad del análisis de los
  requerimientos.
• El uso de especificaciones formales y
  pruebas formales proveen un análisis
  sistemático y repetible.
• Pueden ser soportadas por herramientas de
  computación.
                                              48
Modelo Basado en
transformaciones
• Pero:
  – Es costoso
  – Consume demasiado tiempo
  – Requiere de programadores expertos en
    el área.




                                            49
¿Cuál modelo?

•   Depende del tipo de aplicación
•   Pueden combinarse diferentes modelos
•   Influye el contexto de desarrollo
• no existe un modelo universal
                              ...un proceso
                       basado en funcionalidades,
                       soportado en arquitecturas,
                         iterativo e incremental
                                   UML
                                                50
XP- Xtreme Programming
Se basa en la idea de ciclos o Iteraciones de desarrollo incremental

•   Ciclo de Negocio
     – Release

•   Ciclo de Desarrollo
     – Iteration
     – Story




                                                                       51
XP - Elementos Principales

• El Proceso de planificación
• Pequeños lanzamientos
• Metáforas: nombres y descripciones
  comunes
• Diseño simple
• Pruebas unitarias continuas
• Refactorización: reescriben ciertas partes
  del código para aumentar su legibilidad y
  mantenibilidad pero sin modificar su
  comportamiento
                                               52
XP - Elementos Principales

• Programación por parejas
• Propiedad colectiva: el código es
  modificado cuando se necesita sin retraso
• Integración continua
• Semanas de 40 horas
• Cliente altamente disponible
• Codificación estándar


                                              53
XP - Ventajas

• Cambios en los objetivos y prioridades son
  naturales.
• Sin sobrecarga al equipo de desarrollo
• El cliente desde las primeras etapas tiene
  software que puede usar y probar. En
  cualquier momento puede parar el desarrollo,
  quedándose con un producto que representa
  lo invertido hasta esa fecha.



                                                 54
XP - Desventajas

• Es necesario un representante del cliente en
  todo momento del desarrollo
• Todo el proceso de desarrollo se basa en la
  comunicación, si la misma es costosa o lenta
  perjudica enormemente el tiempo y costo del
  desarrollo
• No sirve para proyectos grandes debido a sus
  requerimientos de comunicación


                                                 55

Más contenido relacionado

La actualidad más candente

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
 
13. ingeniería del software
13. ingeniería del software13. ingeniería del software
13. ingeniería del softwareDaniel Merchan
 
16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincremental16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincrementalzaggy88
 
Modelos de Procesos del Software
Modelos de Procesos del SoftwareModelos de Procesos del Software
Modelos de Procesos del SoftwareJaneth Jimenez
 
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
 
Tm01 el modelado en el desarrollo de software
Tm01 el modelado en el desarrollo de softwareTm01 el modelado en el desarrollo de software
Tm01 el modelado en el desarrollo de softwareJulio Pari
 
Modelos y capas de la ingenieria de software
Modelos y capas  de la ingenieria de softwareModelos y capas  de la ingenieria de software
Modelos y capas de la ingenieria de softwarejhonatanalex
 
Metodologias de desarrollo del software
Metodologias de desarrollo del softwareMetodologias de desarrollo del software
Metodologias de desarrollo del softwaregeurquizo
 
Modelos o Ciclos de vida de software
Modelos o Ciclos de vida de softwareModelos o Ciclos de vida de software
Modelos o Ciclos de vida de softwareWilliam Matamoros
 
Modelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónModelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónIsaias Toledo
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMicky Jerzy
 
Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3Marco Guerrero
 
Unidad 2. metodologias de desarrollo de software tema1
Unidad 2. metodologias de desarrollo de software tema1Unidad 2. metodologias de desarrollo de software tema1
Unidad 2. metodologias de desarrollo de software tema1ROSA IMELDA GARCIA CHI
 
PROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWAREPROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWAREAlejandro Leon
 

La actualidad más candente (20)

Paradigmas
ParadigmasParadigmas
Paradigmas
 
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
 
13. ingeniería del software
13. ingeniería del software13. ingeniería del software
13. ingeniería del software
 
16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincremental16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincremental
 
Modelos de Procesos del Software
Modelos de Procesos del SoftwareModelos de Procesos del Software
Modelos de Procesos del Software
 
Modelos Prescriptivos de Proceso
Modelos Prescriptivos de ProcesoModelos Prescriptivos de Proceso
Modelos Prescriptivos de Proceso
 
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
 
Tm01 el modelado en el desarrollo de software
Tm01 el modelado en el desarrollo de softwareTm01 el modelado en el desarrollo de software
Tm01 el modelado en el desarrollo de software
 
Modelos y capas de la ingenieria de software
Modelos y capas  de la ingenieria de softwareModelos y capas  de la ingenieria de software
Modelos y capas de la ingenieria de software
 
Metodologias de desarrollo del software
Metodologias de desarrollo del softwareMetodologias de desarrollo del software
Metodologias de desarrollo del software
 
Fases del rup
Fases del rupFases del rup
Fases del rup
 
Modelos o Ciclos de vida de software
Modelos o Ciclos de vida de softwareModelos o Ciclos de vida de software
Modelos o Ciclos de vida de software
 
Modelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónModelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de Información
 
MODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWAREMODELO DE PROCESOS DEL SOFTWARE
MODELO DE PROCESOS DEL SOFTWARE
 
Metodologia de desarrollo software
Metodologia  de desarrollo softwareMetodologia  de desarrollo software
Metodologia de desarrollo software
 
Cuestionario (primer parcial)
Cuestionario (primer parcial)Cuestionario (primer parcial)
Cuestionario (primer parcial)
 
Is.exp.3.323734
Is.exp.3.323734Is.exp.3.323734
Is.exp.3.323734
 
Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3Modelos para el desarrollo de software V3
Modelos para el desarrollo de software V3
 
Unidad 2. metodologias de desarrollo de software tema1
Unidad 2. metodologias de desarrollo de software tema1Unidad 2. metodologias de desarrollo de software tema1
Unidad 2. metodologias de desarrollo de software tema1
 
PROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWAREPROCESOS DE CALIDAD DE SOFTWARE
PROCESOS DE CALIDAD DE SOFTWARE
 

Similar a Clase1

METODOLOGIA RUP.pptx
METODOLOGIA RUP.pptxMETODOLOGIA RUP.pptx
METODOLOGIA RUP.pptxjuan gonzalez
 
Procesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECProcesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECmrojas_unitec
 
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
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software142918
 
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
 
Prototipos
PrototiposPrototipos
PrototiposTensor
 
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
 

Similar a Clase1 (20)

Clase1
Clase1Clase1
Clase1
 
METODOLOGIA RUP.pptx
METODOLOGIA RUP.pptxMETODOLOGIA RUP.pptx
METODOLOGIA RUP.pptx
 
Procesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECProcesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITEC
 
Rup
RupRup
Rup
 
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
 
Clase 11
Clase 11Clase 11
Clase 11
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería 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
 
Principios diseño del software
Principios diseño del software Principios diseño del software
Principios diseño del software
 
Prototipos
PrototiposPrototipos
Prototipos
 
Metodología RUP
Metodología RUPMetodología RUP
Metodología RUP
 
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
 
Ciclo de Vida y roles
Ciclo de Vida y roles Ciclo de Vida y roles
Ciclo de Vida y roles
 
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
 
Presentacion grupo9
Presentacion grupo9Presentacion grupo9
Presentacion grupo9
 

Clase1

  • 1. Modelos de desarrollo de software septiembre de 2007 1
  • 2. Referencias básicas • Ingeniería de software. Un enfoque práctico. Pressman, R. Quinta edición. Mc. Graw Hill 2002 • Ingeniería de software. Sommerville, I. Séptima edición. Addison Wesley 2005 2
  • 3. Ingenieria de Software • Un ingeniero civil supervisando la construcción de un edificio para asegurar que sea estable y de acuerdo a los requerimientos de los clientes. • Un ingeniero o varios ingenieros escribiendo procedimientos de diversa complejidad para desarrollar sistemas de software (sw) • El software de gran envergadura requiere de métodos, procedimientos y herramientas • Metodologías inapropiadas incrementan costos y el consumo extra de tiempo. 3
  • 4. Software • Características deseables – Confiable – Robusto – Reutilizable – Eficiente – Mantenible – Evolutivo – Portable – Utilizable 4
  • 5. Proceso de Software • Proceso: Serie de operaciones usadas en la creación de un producto. • Proceso de Software: Conjunto de tareas que tienen que ser realizadas para producir un producto de software de alta calidad (Desarrollo de software) • Proceso de Software: Proceso que se sigue para construir un producto de software desde la concepción de una idea, hasta la entrega y el retiro final del sistema. 5
  • 6. Modelos de Desarrollo de Software • Actividades en el proceso de desarrollo de software – Análisis de Requerimientos – Especificación – Diseño – Programación – Integración y Gestión de Configuraciones – Validación y Verificación – Prototipaje 6
  • 7. Modelos de Desarrollo de Software • Relaciones entre las actividades: Modelo de Desarrollo • Ciclo de vida del software • Modelos de desarrollo: cascada, espiral, incremental, basado en transformaciones, basado en reutilización, etc. 7
  • 8. Las actividades en el proceso de desarrollo de software • se relacionan según determinados: modelos • se desarrollan aplicando un: método • El método se fundamenta en: principios • El método puede ser soportado por: herramientas 8
  • 10. Acerca de las actividades • Se describen en forma independiente, indicando datos, rol y resultados • Utiliza y produce documentos • Se relacionan e interactúan de diferentes maneras conformando distintos procesos de desarrollo de software (modelos) • De acuerdo al modelo una actividad puede jugar un rol preponderante o incluso pudiera no existir 10
  • 11. Análisis de requerimientos Datos provistos Es una actividad por los expertos en el dominio en requerida y Documentos cualquier usuarios orientados al potenciales modelo usuario y útiles para el analista: Comprensibles Precisos Completos Consistentes No ambiguos 11 Fácil de modificar
  • 12. Análisis de requerimientos • Identificar el problema • Documentar los requerimientos • Involucrar a los usuarios y expertos en el dominio de aplicación (requiere diálogo y comunicación) • Esta actividad puede mantenerse a lo largo del proceso • Pueden crearse prototipos. 12
  • 13. Especificación Describe en forma precisa Datos resultantes del análisis de a el sistema desarrollar requerimientos y Descripción consideraciones orientada al técnicas desarrollador 13
  • 14. Especificación • Puede ser informal, semiformal o formal • La especificación formal permite verificación • En algunos modelos sustituye al diseño • Describe el “qué” y no el “cómo” 14
  • 15. Diseño Constituye un refinamiento Descripción del análisis Especificación y detallada consideraciones orientada al técnicas implementador 15
  • 16. Diseño • Se enriquece la descripción del análisis incorporando aspectos de la plataforma de desarrollo • Diseño arquitectónico: se desarrolla la arquitectura del sistema • Diseño detallado: Se desarrollan los componentes (algoritmos, representación de datos, etc.) 16
  • 17. Programación Clases, módulos en el LP seleccionado Diseño y Componentes de consideraciones programas - técnicas Código en un LP 17
  • 18. Integración y gestión de configuraciones Obtener el sistema Ensamblaje de ejecutable versiones Componentes de coherentes de programa los componentes 18
  • 19. Validación y verificación Permite determinar la confiabilidad o correctitud del Documentos Documentos producto (textos, validados/ programas, etc) verificados 19
  • 20. Validación y verificación • Validación: el software responde a lo que espera el usuario • Verificación: el software satisface la especificación – prueba: el programa satisface la especificación – testing: búsqueda de errores en los componentes, en la integración, en el sistema. 20
  • 21. Prototipaje Desarrollo rápido de programas que constituyen partes del sistema Resultados parciales del Prototipo (esbozo análisis parcial del sistema) 21
  • 22. Prototipaje • Esbozo parcial del futuro sistema • Permite experimentar • Permite validar y precisar la especificación de requerimientos y características del futuro sistema • Indispensable para el desarrollo de la interfaz. 22
  • 23. ¿Cuál modelo han usado? Análisis de Requerimientos Mantenimiento Diseño del Sistema Liberación Diseño de Programas Validación del Sistema Integración Construcción de Programas Validación 23 de componentes
  • 24. Modelos de desarrollo • Define la estructura de un proceso de desarrollo racional y controlable • No existe un modelo universal • Los modelos no son rígidos • Son una guía respecto al orden en que deben adelantarse las actividades • Se basa en el reconocimiento que el software tiene un ciclo de vida. 24
  • 25. Ciclo de vida del software Análisis del problema Liberación del producto Comprensión del problema Desarrollo del software 25
  • 26. Ciclo de vida del software ...casi siempre...!! Mantenimiento del producto 26
  • 27. Obsolescencia del producto Fin del ciclo de vida 27
  • 28. Modelos de desarrollo • Secuencial Lineal – Cascada (clásico) – RAD (Desarrollo Rápido de Aplicación) • Evolutivo – Incremental – Espiral – Basado en reutilización • Basado en transformaciones 28 • ......
  • 29. Modelo de la cascada • Propuesto por Winston Royce en 1970 • Conocido como modelo secuencial lineal • Encadenamiento secuencial de las actividades • Cada etapa produce documentos que son la entrada a la siguiente • Para desarrollar una etapa debe concluirse la anterior • Popular en la década 70 29
  • 30. Modelo de cascada Modificado • Permite retroalimentación y solapamiento entre fases. • Es un modelo iterativo y no lineal. • Para facilitar la terminación de metas y tareas, es normal congelar partes del desarrollo después de cierto punto en la iteración. 30
  • 31. Modelo de cascada • Ventajas: – Planificación sencilla. – Una plantilla estructurada para ingeniería de sw. • Desventajas: – Evolución de los Requisitos . – Resultados al final. – Retrasos innecesarios. • Útil en proyectos: – Todas las especificaciones claras inicialmente. – Producto no novedoso. – Complejos que se entienden bien desde el principio. 31
  • 32. Modelo de cascada • Suponga: – Peter y David consultan a un arquitecto para diseñar una casa. El arquitecto les presenta un documento técnico de 100 páginas. Como no entienden y para no leer el documento, ellos aceptan el diseño. – Un ama de casa compra cortinas por correo. Ella recibe una descripción escrita del corte y la tela. 32
  • 33. Modelo de Desarrollo Rápido de Aplicación - RAD • RAD: Rapid Application Development • Modelo secuencial lineal con tiempos cortos de desarrollo • Varios equipos participando en el desarrollo • Cada equipo maneja una parte del sistema • Uso de herramientas de pruebas automatizadas • En cada etapa de liberación, los productos parciales son integrados, probados y liberados 33
  • 34. Modelo de Desarrollo Rápido de Aplicación - RAD • Desventajas: – Para ciclos de desarrollo extremadamente cortos: Requerimientos bien entendidos y alcance de proyecto restringido – Se requiere múltiples desarrolladores – Compromiso de desarrolladores y clientes para un tiempo de entrega corto – No adecuado para sistemas que no puedan ser mantenidos adecuadamente – No se enfoca en detalles minuciosos 34
  • 35. Modelo Evolutivo 1. Entregar algo al usuario 2. Recibir retroalimentación del usuario 3. Ajustar el diseño y objetivos basado a las realidades observadas • Enfoques: – Incremental – Espiral – Basado en reutilización 35
  • 36. Modelo Incremental • Desarrollo paso a paso donde las partes de algunas etapas se posponen. • Cada etapa consiste en expandir incrementos de un producto de software operacional • Incrementos pueden ser entregados al cliente • Cada incremento es diseñado, codificado, probado, integrado y entregado por separado • Los incrementos se desarrollan uno después de otro, basados en retroalimentación 36 recibida del cliente.
  • 37. Modelo Incremental • Ventajas: – Existe una disponibilidad limitada de recursos de desarrollo. – Cuando es difícil establecer todos los requerimientos por anticipado • Desventajas: – Si los requerimientos crecen, la arquitectura y el diseño puede cambiar drásticamente 37
  • 38. Modelo en espiral • Propuesto por Barry Boehm en 1988 • Desarrollo en ciclos. • En cada ciclo: – se define el objetivo, – se analizan los riesgos, – desarrollo y verificación de la solución obtenida, – revisión de resultados y planificación del siguiente ciclo 38
  • 39. Modelo en espiral • Se centra en algunas mejores prácticas: – Manejo de Riesgos – Orientación al Cliente – Desarrollo Iterativo 39
  • 40. Modelo en espiral • Ventajas: – Resolución temprana de riesgos. – Definición de arquitectura en sus fases iniciales. – Basado en un proceso continuo de verificación de la calidad. – Ideal para productos con un nivel alto de inestabilidad de los requerimientos. 40
  • 41. Modelo en espiral • Desventajas: – No aplicable a proyectos bajo contrato. – No recomendable en proyectos simples. 41
  • 42. Modelo Basado en reutilización • Se basa en el ensamblaje de componentes Bosquejar los Búsqueda de Modificar requerimientos requerimientos componentes acordes a los componentes del sistema reutilizables encontrados Diseño Búsqueda de Diseñar el sistema Arquitectónico componentes reutilizables utilizando los componentes reutilizables 42
  • 43. Modelo Basado en reutilización • Ventajas: – Incremento en la fiabilidad – Reducción en el riesgo – Utilización efectiva de especialistas – Conformidad con los estándares – Desarrollo acelerado, quizás 70% como indican algunos estudios 43
  • 44. Modelo Basado en reutilización • Desventajas: – Falta de apoyo de las herramientas – Síndrome de aquí no se ha inventado – Costo de encontrar, entender y adaptar componentes reutilizables 44
  • 45. Modelo Basado en transformaciones • Conjunto de técnicas y herramientas basadas en modelos matemáticos y lógica formal que son utilizadas para especificar y verificar los requerimientos y el diseño de sistemas computarizados. • Se basa en especificaciones formales • Las especificaciones son refinadas hasta alcanzar el programa • El método formal se puede usar para verificar el sistema de una manera rigurosa usando técnicas matemáticas. 45
  • 46. Modelo Basado en transformaciones • Una especificación formal es una descripción concisa del comportamiento y propiedades de un sistema escrito en un lenguaje basado en la matemática. • Una prueba formal es un argumento completo y convincente para la validez de una tesis sobre la descripción de un sistema. Las pruebas formales se pueden realizar manualmente o con la asistencia de una herramienta automática. 46
  • 47. Modelo Basado en transformaciones • Lenguajes de especificación formal: PCS (Procesos de Comunicación Secuencial), MDV (Método de Desarrollo Vienna) y la notación Z. 47
  • 48. Modelo Basado en transformaciones • Aplicar Métodos Formales en las fases de levantamiento de requerimientos y de diseño de alto nivel. • Las pruebas formales eliminan ambigüedad y subjetividad del análisis de los requerimientos. • El uso de especificaciones formales y pruebas formales proveen un análisis sistemático y repetible. • Pueden ser soportadas por herramientas de computación. 48
  • 49. Modelo Basado en transformaciones • Pero: – Es costoso – Consume demasiado tiempo – Requiere de programadores expertos en el área. 49
  • 50. ¿Cuál modelo? • Depende del tipo de aplicación • Pueden combinarse diferentes modelos • Influye el contexto de desarrollo • no existe un modelo universal ...un proceso basado en funcionalidades, soportado en arquitecturas, iterativo e incremental UML 50
  • 51. XP- Xtreme Programming Se basa en la idea de ciclos o Iteraciones de desarrollo incremental • Ciclo de Negocio – Release • Ciclo de Desarrollo – Iteration – Story 51
  • 52. XP - Elementos Principales • El Proceso de planificación • Pequeños lanzamientos • Metáforas: nombres y descripciones comunes • Diseño simple • Pruebas unitarias continuas • Refactorización: reescriben ciertas partes del código para aumentar su legibilidad y mantenibilidad pero sin modificar su comportamiento 52
  • 53. XP - Elementos Principales • Programación por parejas • Propiedad colectiva: el código es modificado cuando se necesita sin retraso • Integración continua • Semanas de 40 horas • Cliente altamente disponible • Codificación estándar 53
  • 54. XP - Ventajas • Cambios en los objetivos y prioridades son naturales. • Sin sobrecarga al equipo de desarrollo • El cliente desde las primeras etapas tiene software que puede usar y probar. En cualquier momento puede parar el desarrollo, quedándose con un producto que representa lo invertido hasta esa fecha. 54
  • 55. XP - Desventajas • Es necesario un representante del cliente en todo momento del desarrollo • Todo el proceso de desarrollo se basa en la comunicación, si la misma es costosa o lenta perjudica enormemente el tiempo y costo del desarrollo • No sirve para proyectos grandes debido a sus requerimientos de comunicación 55