SlideShare una empresa de Scribd logo
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
requerida y
en el dominio en
cualquier
usuarios
potenciales
modelo

Documentos
orientados al
usuario y útiles
para el analista:

Comprensibles Precisos
Completos

Consistentes

No ambiguos
Fácil de modificar

11
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
el sistema
del análisis de a
desarrollar
requerimientos y
consideraciones
técnicas

Descripción
orientada al
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
del análisis

Especificación y
consideraciones
técnicas

Descripción
detallada
orientada al
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
consideraciones
técnicas

Componentes de
programas Código en un LP

17
Integración y gestión de
configuraciones
Obtener el
sistema
ejecutable
Componentes de
programa

Ensamblaje de
versiones
coherentes de
los componentes

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

Documentos
validados/
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
análisis

Prototipo (esbozo
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

Construcción
de Programas

Integración

Validación
de componentes

23
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
recibida del cliente.

36
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
requerimientos
del sistema

Diseño
Arquitectónico

Búsqueda de
componentes
reutilizables

Búsqueda de
componentes reutilizables

Modificar requerimientos
acordes a los componentes
encontrados

Diseñar el sistema
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

Modelos de desarrollo del software
Modelos de desarrollo del softwareModelos de desarrollo del software
Modelos de desarrollo del software
Renny Batista
 
05 masmodelosdeprocesodesoftware isi
05 masmodelosdeprocesodesoftware isi05 masmodelosdeprocesodesoftware isi
05 masmodelosdeprocesodesoftware isi
Christian Bueno
 
Ads1 2014 apu2008-ss_jujuy-clase2
Ads1 2014 apu2008-ss_jujuy-clase2Ads1 2014 apu2008-ss_jujuy-clase2
Ads1 2014 apu2008-ss_jujuy-clase2
Diego Rios
 
Modelos de desarrollo de software
Modelos de desarrollo de softwareModelos de desarrollo de software
Modelos de desarrollo de software
Radel Fuentes
 
Presentacion de inf 162 grupo 6
Presentacion de inf 162 grupo 6Presentacion de inf 162 grupo 6
Presentacion de inf 162 grupo 6
Samuel Qc
 
Metodologias de desarrollo del software
Metodologias de desarrollo del softwareMetodologias de desarrollo del software
Metodologias de desarrollo del software
geurquizo
 
METODOLOGIAS AGILES
METODOLOGIAS AGILESMETODOLOGIAS AGILES
METODOLOGIAS AGILES
mikyWatt
 
16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincremental16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincrementalzaggy88
 
Modelos de procesos de software
Modelos de procesos de softwareModelos de procesos de software
Modelos de procesos de software
Wilder W Mamani
 
Sesión 03-métodos-ágiles-del-desarrollo-de-software
Sesión 03-métodos-ágiles-del-desarrollo-de-softwareSesión 03-métodos-ágiles-del-desarrollo-de-software
Sesión 03-métodos-ágiles-del-desarrollo-de-software
R̶a̶m̶s̶é̶s̶ M̶a̶r̶t̶í̶n̶e̶z̶ ̶O̶r̶t̶i̶z̶
 
Sesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de procesoSesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de proceso
Coesi Consultoria
 
El proceso
El procesoEl proceso
El proceso
Ely Condori
 
Métodos del proceso de software
Métodos del proceso de softwareMétodos del proceso de software
Procesos De Ingenieria Del Software
Procesos De Ingenieria Del SoftwareProcesos De Ingenieria Del Software
Procesos De Ingenieria Del Software
Raquel Solano
 
Los modelos de desarrollo de software (hendrick rodriguez )
Los modelos de desarrollo de software (hendrick rodriguez )Los modelos de desarrollo de software (hendrick rodriguez )
Los modelos de desarrollo de software (hendrick rodriguez )
Hendrick Rodriguez
 
Ingeniería de software modelo incremental
Ingeniería de software  modelo incrementalIngeniería de software  modelo incremental
Ingeniería de software modelo incremental
María Inés Cahuana Lázaro
 

La actualidad más candente (20)

Modelos de desarrollo del software
Modelos de desarrollo del softwareModelos de desarrollo del software
Modelos de desarrollo del software
 
Exposicion RUP
Exposicion RUPExposicion RUP
Exposicion RUP
 
05 masmodelosdeprocesodesoftware isi
05 masmodelosdeprocesodesoftware isi05 masmodelosdeprocesodesoftware isi
05 masmodelosdeprocesodesoftware isi
 
Ads1 2014 apu2008-ss_jujuy-clase2
Ads1 2014 apu2008-ss_jujuy-clase2Ads1 2014 apu2008-ss_jujuy-clase2
Ads1 2014 apu2008-ss_jujuy-clase2
 
Modelos de desarrollo de software
Modelos de desarrollo de softwareModelos de desarrollo de software
Modelos de desarrollo de software
 
Fases del rup
Fases del rupFases del rup
Fases del rup
 
Presentacion de inf 162 grupo 6
Presentacion de inf 162 grupo 6Presentacion de inf 162 grupo 6
Presentacion de inf 162 grupo 6
 
Metodologias de desarrollo del software
Metodologias de desarrollo del softwareMetodologias de desarrollo del software
Metodologias de desarrollo del software
 
METODOLOGIAS AGILES
METODOLOGIAS AGILESMETODOLOGIAS AGILES
METODOLOGIAS AGILES
 
16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincremental16416960 modelo-cascada-espiralincremental
16416960 modelo-cascada-espiralincremental
 
Modelos de procesos de software
Modelos de procesos de softwareModelos de procesos de software
Modelos de procesos de software
 
Sesión 03-métodos-ágiles-del-desarrollo-de-software
Sesión 03-métodos-ágiles-del-desarrollo-de-softwareSesión 03-métodos-ágiles-del-desarrollo-de-software
Sesión 03-métodos-ágiles-del-desarrollo-de-software
 
Sesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de procesoSesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de proceso
 
El proceso
El procesoEl proceso
El proceso
 
Métodos del proceso de software
Métodos del proceso de softwareMétodos del proceso de software
Métodos del proceso de software
 
Rup
RupRup
Rup
 
Programación Extrema
Programación ExtremaProgramación Extrema
Programación Extrema
 
Procesos De Ingenieria Del Software
Procesos De Ingenieria Del SoftwareProcesos De Ingenieria Del Software
Procesos De Ingenieria Del Software
 
Los modelos de desarrollo de software (hendrick rodriguez )
Los modelos de desarrollo de software (hendrick rodriguez )Los modelos de desarrollo de software (hendrick rodriguez )
Los modelos de desarrollo de software (hendrick rodriguez )
 
Ingeniería de software modelo incremental
Ingeniería de software  modelo incrementalIngeniería de software  modelo incremental
Ingeniería de software modelo incremental
 

Similar a Clase1

Procesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECProcesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITEC
mrojas_unitec
 
Prototipos
PrototiposPrototipos
Prototipos
Tensor
 
METODOLOGIA RUP.pptx
METODOLOGIA RUP.pptxMETODOLOGIA RUP.pptx
METODOLOGIA RUP.pptx
juan gonzalez
 
Modelo de desarrollo de software
Modelo de desarrollo de softwareModelo de desarrollo de software
Modelo de desarrollo de software
Yaskelly Yedra
 
Metodologia del rup
Metodologia del rupMetodologia del rup
Metodologia del ruportizrichard
 
Modelo de desarrollo del software
Modelo de desarrollo del softwareModelo de desarrollo del software
Modelo de desarrollo del software
RazielLira
 
Proceso de software
Proceso de softwareProceso de software
Proceso de software
Sergio Silvester
 
T2 infoiii-s
T2 infoiii-sT2 infoiii-s
T2 infoiii-s
home
 
T2 infoiii-s
T2 infoiii-sT2 infoiii-s
T2 infoiii-s
Nelson Ortiz Gonzales
 
RUP.pdf
RUP.pdfRUP.pdf
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
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaresamantha
 
Ingen de software
Ingen de softwareIngen de software
Ingen de softwareerikapoh
 

Similar a Clase1 (20)

Clase1
Clase1Clase1
Clase1
 
Procesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECProcesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITEC
 
Prototipos
PrototiposPrototipos
Prototipos
 
METODOLOGIA RUP.pptx
METODOLOGIA RUP.pptxMETODOLOGIA RUP.pptx
METODOLOGIA RUP.pptx
 
Modelo de desarrollo de software
Modelo de desarrollo de softwareModelo de desarrollo de software
Modelo de desarrollo de software
 
Metodologia del rup
Metodologia del rupMetodologia del rup
Metodologia del rup
 
Metodología RUP
Metodología RUPMetodología RUP
Metodología RUP
 
Modelo de desarrollo del software
Modelo de desarrollo del softwareModelo de desarrollo del software
Modelo de desarrollo del software
 
Proceso de software
Proceso de softwareProceso de software
Proceso de software
 
T2 infoiii-s
T2 infoiii-sT2 infoiii-s
T2 infoiii-s
 
T2 infoiii-s
T2 infoiii-sT2 infoiii-s
T2 infoiii-s
 
RUP.pdf
RUP.pdfRUP.pdf
RUP.pdf
 
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
 
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
 

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 requerida y en el dominio en cualquier usuarios potenciales modelo Documentos orientados al usuario y útiles para el analista: Comprensibles Precisos Completos Consistentes No ambiguos Fácil de modificar 11
  • 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 el sistema del análisis de a desarrollar requerimientos y consideraciones técnicas Descripción orientada al 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 del análisis Especificación y consideraciones técnicas Descripción detallada orientada al 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 consideraciones técnicas Componentes de programas Código en un LP 17
  • 18. Integración y gestión de configuraciones Obtener el sistema ejecutable Componentes de programa Ensamblaje de versiones coherentes de los componentes 18
  • 19. Validación y verificación Permite determinar la confiabilidad o correctitud del Documentos producto (textos, programas, etc) Documentos validados/ 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 análisis Prototipo (esbozo 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 Construcción de Programas Integración Validación de componentes 23
  • 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 recibida del cliente. 36
  • 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 requerimientos del sistema Diseño Arquitectónico Búsqueda de componentes reutilizables Búsqueda de componentes reutilizables Modificar requerimientos acordes a los componentes encontrados Diseñar el sistema 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