modelo de ingenieria de softwares.docx

27
2 MODELOS DE LA INGENIERIA DE SOFTWARE 2.3 MODELO CASCADA, MODELO DE PROTOTIPO, MODELOS ESPIRAL Y MODELO DE PROCESO UNIFICADO RACIONAL (RUP). MODELO DE CASCADA Es un modelo sencillo para explicar al cliente. También llamado ciclo de vida clásico sugiere un enfoque sistemático, secuencial en el desarrollo del software. Requiere que los requerimientos estén bien definidos y estables en forma razonable. Es el paradigma más antiguo para la Ingeniería del Software.

Transcript of modelo de ingenieria de softwares.docx

Page 1: modelo de ingenieria de softwares.docx

2 MODELOS DE LA INGENIERIA DE SOFTWARE

2.3 MODELO CASCADA, MODELO DE PROTOTIPO, MODELOS ESPIRAL Y MODELO DE PROCESO UNIFICADO RACIONAL (RUP).

MODELO DE CASCADA • Es un modelo sencillo para explicar al cliente.

• También llamado ciclo de vida clásico sugiere un enfoque sistemático,

secuencial en el desarrollo del software.

• Requiere que los requerimientos estén bien definidos y estables en forma

razonable.

• Es el paradigma más antiguo para la Ingeniería del Software.

Page 2: modelo de ingenieria de softwares.docx

• Análisis de los requerimientos del software: El proceso de recopilación

de los requerimientos se centra e intensifica especialmente en el software.

El ingeniero del software debe comprender el ámbito de la

información del software así como la función del rendimiento y las

interfaces requeridas.

• Diseño: Se enfoca en cuatro atributos distintos del programa, la estructura

de los datos, la arquitectura del software, el detalle procedimental y la

caracterización de la interfaz.

• Codificación: Debe traducirse en una forma legible para la máquina.

• Prueba: Se centra en la lógica interna del software y en las funciones

externas, realizando pruebas que aseguren que la entrada definida produce

los resultados que realmente se requiere.

• Mantenimiento: El software sufriría cambios después de que se entrega al

cliente ocurren debido a que hayan encontrado errores que el software

deba adaptarse a cambios del entorno externo o que el cliente requiera

aplicaciones funcionales o del rendimiento.

CARACTERISTICAS

• Es el más utilizado.

• Es una visión del proceso de desarrollo de software como una sucesión de

etapas que producen productos intermedios.

• Para que el proyecto tenga éxito deben desarrollarse todas las fases.

• Las fases continúan hasta que los objetivos se han cumplido.

• Si se cambia el orden de las fases, el producto final será de inferior calidad.

Page 3: modelo de ingenieria de softwares.docx

VENTAJAS

• El modelo de cascada es el modelo más antiguo y más ampliamente

utilizado en el campo de desarrollo de software. Hay ciertas ventajas

del modelo de cascada, que hace que sea el modelo más ampliamente

utilizado hasta el momento. Algunos de ellos son:

• Es un modelo lineal y, por supuesto, los modelos lineales son las más

simples a ser implementadas.

• La cantidad de recursos necesarios para implementar este modelo es

mínima.

• Una gran ventaja del modelo de cascada es que la documentación se

produce en cada etapa del desarrollo del modelo de cascada. Esto hace

que la comprensión del producto diseñar procedimiento más sencillo.

• Después de cada etapa importante de la codificación de software, las

pruebas.

DESVENTAJAS

• Irónicamente, la mayor desventaja del modelo de cascada es uno de sus

mayores ventajas. No se puede volver atrás, si la fase de diseño ha ido mal,

las cosas pueden ser muy complicado en la fase de ejecución.

• Muchas veces, sucede que el cliente no es muy claro de lo que

exactamente quiere del software. Cualquier cambio que se menciona en el

medio puede causar mucha confusión.

• Los pequeños cambios o errores que surgen en el software completo puede

causar mucho problema.

• La mayor desventaja del modelo de cascada es que hasta la etapa final del

ciclo de desarrollo se ha completado, un modelo de trabajo del software no

está en las manos del cliente. Por lo tanto, es difícil en condiciones de

mencionar si lo que se ha diseñado es exactamente lo que había pedido.

Page 4: modelo de ingenieria de softwares.docx

MODELO DE PROTOTIPOS

El Modelo de prototipos, en Ingeniería de software, pertenece a los modelos de

desarrollo evolutivo. El prototipo debe ser construido en poco tiempo, usando los

programas adecuados y no se debe utilizar muchos recursos.

El diseño rápido se centra en una de aquellos aspectos del software

que serán visibles para el cliente o el usuario final. Este diseño conduce a la

construcción de un prototipo, el cual es evaluado por el cliente para una

retroalimentación; gracias a ésta se refinan los requisitos del software que se

desarrollará. La interacción ocurre cuando el prototipo se ajusta para satisfacer las

necesidades del cliente. Esto permite que al mismo tiempo el desarrollador

entienda mejor lo que se debe hacer y el cliente vea resultados a corto plazo.

La interacción ocurre cuando el prototipo se ajusta para satisfacer las

necesidades del cliente. Esto permite que al mismo tiempo el desarrollador

entienda mejor lo que se debe hacer y el cliente vea resultados a corto plazo.

Page 5: modelo de ingenieria de softwares.docx

TIPOS DE MODELO DE PROTOTIPOS

• Modelo de Prototipos rápido: Metodología de diseño que desarrolla

rápidamente nuevos diseños, los evalúa y prescinde del prototipo cuando el

próximo diseño es desarrollado mediante un nuevo prototipo.

• Modelo de Prototipos reutilizable: También conocido como "Evolutionary

Prototyping"; no se pierde el esfuerzo efectuado en la construcción del

prototipo pues sus partes o el conjunto pueden ser utilizados para construir

el producto real. Mayormente es utilizado en el desarrollo de software, si

bien determinados productos de hardware pueden hacer uso del prototipo

como la base del diseño de moldes en la fabricación con plásticos o en el

diseño de carrocerías de automóviles.

• Modelo de Prototipos Modular: También conocido como Prototipado

Incremental (Incremental prototyping); se añaden nuevos elementos sobre

el prototipo a medida que el ciclo de diseño progresa.

• Modelo de Prototipos de Baja-fidelidad: El prototipo se implementa con

papel y lápiz, emulando la función del producto real sin mostrar el aspecto

real del mismo. Resulta muy útil para realizar test baratos.

• Modelo de Prototipos Horizontal: El prototipo cubre un amplio número de

aspectos y funciones pero la mayoría no son operativas. Resulta muy útil

para evaluar el alcance del producto, pero no su uso real.

• Modelo de Prototipos Vertical: El prototipo cubre sólo un pequeño

número de funciones operativas. Resulta muy útil para evaluar el uso real

sobre una pequeña parte del producto.

• Modelo de Prototipos de Alta-fidelidad: El prototipo se implementa de la

forma más cercana posible al diseño real en términos de aspecto,

impresiones, interacción y tiempo.

Page 6: modelo de ingenieria de softwares.docx

TIPOS DE PROTOTIPOS

Hay dos clases de prototipos el desechable y el evolucionario:

• El desechable: nos sirve para eliminar dudas sobre lo que realmente quiere

el cliente además para desarrollar la interfaz que más le convenga al

cliente.

• El evolucionario: es un modelo parcialmente construido que puede pasar de

ser prototipo a ser software pero no tiene una buena documentación y

calidad.

Cómo se lleva a cabo:

Se comienza elaborando un prototipo del producto final: qué aspecto

tendrá, cómo funcionará. Para muchas interfaces de usuario, este modelo puede

resultar tan simple como unos dibujos con lápiz y papel o tan complejo como el

propio código operativo final.

Para interfaces de hardware o estaciones de trabajo, el modelo puede

consistir en maquetas de espuma, caucho, cartón o cartulina. Cuanto más próximo

se encuentre el prototipo al producto real, mejor será la evaluación, si bien se

pueden obtener magníficos resultados con prototipos de baja fidelidad.

Etapas:

1. Recolección y refinamiento de requisitos.

2. Modelado, diseño rápido.

3. Construcción del Prototipo.

4. Desarrollo, evaluación del prototipo por el cliente.

5. Refinamiento del prototipo.

6. Producto de Ingeniería.

Page 7: modelo de ingenieria de softwares.docx

VENTAJAS

• Este modelo es útil cuando el cliente conoce los objetivos generales para el

software, pero no identifica los requisitos detallados de entrada,

procesamiento o salida.

• También ofrece un mejor enfoque cuando el responsable del desarrollo del

software está inseguro de la eficacia de un algoritmo, de la adaptabilidad de

un sistema operativo o de la forma que debería tomar la interacción

humano- máquina.

• No modifica el flujo del ciclo de vida

• Reduce el riesgo de construir productos que no satisfagan las

necesidades de los usuarios.

• Reduce costo y aumenta la probabilidad de éxito

• Exige disponer de las herramientas adecuadas

• Este modelo es útil cuando el cliente conoce los objetivos generales para

el software, pero no identifica los requisitos detallados de entrada,

procesamiento o salida.

Page 8: modelo de ingenieria de softwares.docx

DESVENTAJAS

• El usuario tiende a crearse unas expectativas cuando ve el prototipo de

cara al sistema final. A causa de la intención de crear un prototipo de forma

rápida, se suelen desatender aspectos importantes, tales como la calidad y

el mantenimiento a largo plazo, lo que obliga en la mayor parte de los casos

a reconstruirlo una vez que el prototipo ha cumplido su función.

• El desarrollador puede caer en la tentación de ampliar el prototipo para

construir el sistema final sin tener en cuenta los compromisos de calidad y

mantenimiento que tiene con el cliente

• En aras de desarrollar rápidamente el prototipo, el desarrollador suele

tomar algunas decisiones de implementación poco convenientes (por

ejemplo, elegir un lenguaje de programación incorrecto porque

proporcione un desarrollo más rápido). Con el paso del tiempo, el

desarrollador puede olvidarse de la razón que le llevó a tomar tales

decisiones, con lo que se corre el riesgo de que dichas elecciones pasen a

formar parte del sistema final.

• Debido a que el usuario ve que el prototipo funciona piensa que este es el

producto terminado y no entienden que recién se va a desarrollar el

software.

• A pesar de que tal vez surjan problemas, la construcción de prototipos

puede ser un paradigma efectivo para la ingeniería del software. La clave

es definir las reglas del juego desde el principio; es decir, el cliente y el

desarrollador se deben poner de acuerdo en:

• Que el prototipo se construya y sirva como un mecanismo para la

definición de requisitos.

• Que el prototipo se descarte, al menos en parte.

• Que después se desarrolle el software real con un enfoque hacia

la calidad.

Page 9: modelo de ingenieria de softwares.docx

MODELO DE ESPIRAL

El desarrollo en espiral es un modelo de ciclo de vida del software definido

por primera vez por Barry Boehm en 1986, utilizado generalmente en la Ingeniería

de software. Las actividades de este modelo se conforman en una espiral, en la

que cada bucle o iteración representa un conjunto de actividades. Las actividades

no están fijadas a ninguna prioridad, sino que las siguientes se eligen en función

del análisis de riesgo, comenzando por el bucle interior.

Su Modelo de Ciclo de Vida en Espiral tiene en cuenta fuertemente el riesgo

que aparece a la hora de desarrollar software. Para ello, se comienza mirando las

posibles alternativas de desarrollo, se opta por la de riesgo más asumible y se

hace un ciclo de la espiral. Si el cliente quiere seguir haciendo mejoras en el

software, se vuelve a evaluar las distintas nuevas alternativas y riesgos y se

realiza otra vuelta de la espiral, así hasta que llegue un momento en el que el

producto software desarrollado sea aceptado y no necesite seguir mejorándose

con otro nuevo ciclo.

Page 10: modelo de ingenieria de softwares.docx

CICLOS O ITERACIONES

En cada vuelta o iteración hay que tener en cuenta:

• Los Objetivos: qué necesidad debe cubrir el producto.

• Alternativas: las diferentes formas de conseguir los objetivos de forma

exitosa, desde diferentes puntos de vista como pueden ser:

1. Características: experiencia del personal, requisitos a cumplir, etc.

2. Formas de gestión del sistema.

3. Riesgo asumido con cada alternativa.

• Desarrollar y Verificar: Programar y probar el software.

Si el resultado no es el adecuado o se necesita implementar mejoras o

funcionalidades:

• Se planificaran los siguientes pasos y se comienza un nuevo ciclo de la

espiral. La espiral tiene una forma de caracola y se dice que mantiene dos

dimensiones, la radial y la angular:

1. Angular: Indica el avance del proyecto del software dentro de un

ciclo.

2. Radial: Indica el aumento del coste del proyecto, ya que con cada

nueva iteración se pasa más tiempo desarrollando.

Este sistema es muy utilizado en proyectos grandes y complejos como

puede ser, por ejemplo, la creación de un Sistema Operativo.

Al ser un modelo de Ciclo de Vida orientado a la gestión de riesgo se dice

que uno de los aspectos fundamentales de su éxito radica en que el equipo que lo

aplique tenga la necesaria experiencia y habilidad para detectar y catalogar

correctamente los riesgos.

Page 11: modelo de ingenieria de softwares.docx

TAREAS

Para cada ciclo habrá cuatro actividades:

1. Determinar Objetivos.

2. Análisis del riesgo.

3. Desarrollar y probar.

4. 'Planificación.'

Determinar o fijar objetivos.

• Fijar también los productos definidos a obtener: requerimientos,

especificación, manual de usuario.

• Fijar las restricciones.

• Identificación de riesgos del proyecto y estrategias alternativas para

evitarlos.

• Hay una cosa que solo se hace una vez: planificación inicial.

DESARROLLAR, VERIFICAR Y VALIDAR (PROBAR)

• Tareas de la actividad propia y de prueba.

• Análisis de alternativas e identificación resolución de riesgos.

Page 12: modelo de ingenieria de softwares.docx

• Dependiendo del resultado de la evaluación de los riesgos, se elige un

modelo para el desarrollo, el que puede ser cualquiera de los otros

existentes, como formal, evolutivo, cascada, etc. Así si por ejemplo si los

riesgos en la interfaz de usuario son dominantes, un modelo de desarrollo

apropiado podría ser la construcción de prototipos evolutivos. Si lo riesgos

de protección son la principal consideración, un desarrollo basado en

transformaciones formales podría ser el más apropiado.

ANÁLISIS DEL RIESGO

• Se lleva a cabo el estudio de las causas de las posibles amenazas y

probables eventos no deseados y los daños y consecuencias que éstas

puedan producir. Se evalúan alternativas. Se debe tener un prototipo antes

de comenzar a desarrollar y probar.

MECANISMOS DE CONTROL

• La dimensión radial mide el coste.

• La dimensión angular mide el grado de avance del proyecto.

VENTAJAS

• El análisis de riesgo se hace de forma explícita y clara.

• Une los mejores elementos de los restantes modelos.

• Reduce riesgos del proyecto.

• Incorpora objetivos de calidad.

• Integra el desarrollo con el mantenimiento, etc.

• Además es posible tener en cuenta mejora y nuevos requerimientos sin

romper con la metodología, ya que este siclo de vida no es rígido ni

estático.

DESVENTAJAS

• Genera mucho tiempo en el desarrollo en el sistema.

Page 13: modelo de ingenieria de softwares.docx

• Es un modelo costoso.

• Requiere experiencia en la identificación de riesgos.

PROCESO UNIFICADO DE RACIONAL (RUP)

¿QUE ES UN PROCESO?

Un proceso define quien está haciendo que, cuando lo hace, y como

hacerle para alcanzar un objetivo.

El Proceso Unificado de Racional es un proceso de desarrollo de software

desarrollado por la empresa Racional Software, actualmente propiedad de IBM.

Junto con el Lenguaje Unificado de Modelado UML, constituye la metodología

estándar más utilizada para el análisis, diseño, implementación y documentación

de sistemas orientados a objetos.

El RUP no es un sistema con pasos firmemente establecidos, sino un

conjunto de metodologías adaptables al contexto y necesidades de cada

organización.

PRINCIPALES CARACTERÍSTICAS

• Forma disciplinada de asignar tareas y responsabilidades (quién hace qué,

cuándo y cómo).

• Pretende implementar las mejores prácticas en Ingeniería de Software.

• Desarrollo iterativo.

• Administración de requisitos.

• Uso de arquitectura basada en componentes.

• Control de cambios.

• Modelado visual del software.

• Verificación de la calidad del software.

El RUP es un producto de Rational (IBM). Se caracteriza por ser iterativo e

incremental, estar centrado en la arquitectura y guiado por los casos de uso.

Incluye artefactos (que son los productos tangibles del proceso como por ejemplo,

Page 14: modelo de ingenieria de softwares.docx

el modelo de casos de uso, el código fuente, etc.) y roles (papel que desempeña

una persona en un determinado momento, una persona puede desempeñar

distintos roles a lo largo del proceso).

ARTEFACTOS

RUP en cada una de sus fases (pertenecientes a la estructura dinámica)

realiza una serie de artefactos que sirven para comprender mejor tanto el análisis

como el diseño del sistema (entre otros). Estos artefactos (entre otros) son los

siguientes:

INICIO:

• Documento Visión.

• Diagramas de caso de uso.

• Especificación de Requisitos.

• Diagrama de Requisitos.

ELABORACIÓN:

Documento Arquitectura que trabaja con las siguientes vistas:

Vista Lógica:

• Diagrama de clases.

• Modelo E-R (Si el sistema así lo requiere).

Vista de Implementación:

• Diagrama de Secuencia.

• Diagrama de estados.

• Diagrama de Colaboración.

Vista Conceptual:

• Modelo de dominio.

Page 15: modelo de ingenieria de softwares.docx

Vista física:

• Mapa de comportamiento a nivel de hardware.

• Diseño y desarrollo de casos de uso, o flujos de casos de uso

arquitectónicos.

• Pruebas de los casos de uso desarrollados, que demuestran que la

arquitectura documentada responde adecuadamente a requerimientos

funcionales y no funcionales.

Construcción:

• Especificación de requisitos faltantes.

• Diseño y desarrollo de casos de uso y/o flujos de acuerdo con la planeación

iterativa.

• Pruebas de los casos de uso desarrollados, y pruebas de regresión según

sea el caso.

Transición:

• Pruebas finales de aceptación.

• Puesta en producción.

• .Estabilización.

MODELOS DEL PROCESO UNIFICADO

MODELOS DE CASOS DE USO

Consiste de actores, casos se uso y relaciones entre ellos. Los actores

representan todo aquello que intercambia información con el sistema. Cuando

un actor usa el sistema, el sistema ejecuta un caso de uso. El modelo del caso

de uso es usado como entrada esencial para las actividades del análisis, diseño y

prueba.

MODELOS DE ANALISIS

Page 16: modelo de ingenieria de softwares.docx

Tiene el propósito de refinar el caos de uso más detalladamente, y

realizar una asignación del comportamiento del sistema; a un conjunto de

objetos que proporcionen el funcionamiento esperado.

Es un modelo de objetos que describe la realización de casos de uso, y

sirve como abstracción para el modelo del diseño.

MODELO DE DISEÑO

Define la estructura estática del sistema, tales como: subsistemas, clases e

interfaces, y la realización de los casos de uso como colaboraciones entre los

subsistemas, clases e interfaces.

Es un modelo de objetos que describe la realización de caso de uso, y sirve

como una abstracción del modelo de implementación y sus códigos fuentes.

MODELO DE IMPLEMENTACION

El modelo de implementación es una colección de componentes y

subsistemas que los contienen. Los componentes incluyen archivos ejecutables,

códigos fuentes y librerías.

MODELO DE DEPLOYMENT

Muestra la configuración de los procesos (nodos) en el tiempo de ejecución,

la liga de comunicación entre ellos y los componentes y objetos que residen en

ellos. Realizan el mapeo de los componentes a los nodos. Definen los nodos

físicos de las computadoras.

MODELO DE PRUEBAS

Es una representación de lo que será probado y como será probado. En

una vista de los modelos de diseño e implementación, describiendo las pruebas

de ellos mismos. Esto incluye la colección de casos de pruebas, procedimiento

de prueba, escritos de pruebas y los resultados de prueba esperados junto con

una descripción de sus relaciones.

Page 17: modelo de ingenieria de softwares.docx
Page 18: modelo de ingenieria de softwares.docx

ESTRUCTURA DELPROCESO UNIFICADO

El proceso iterativo es organizado en cuatro fases:

Page 19: modelo de ingenieria de softwares.docx

Las cuatro fases constituyen un desarrollo cíclico y produces una generación de software y muestran la duración y esfuerzo por cada fase.

VENTAJAS

• Proceso visible en las etapas tempranas.

• El uso de iteraciones (actividades).

• Permite evaluar tempranamente los tiesos en lugar de describir problemas

en integración final del sistema.

• Facilita la reutilización del código teniendo en cuenta que realzan revisiones

en las primeras iteraciones lo cual permite que se aprecien oportunidades

de mejoras en el diseño.

DESVENTAJAS

• Requiere conocimientos del proceso y de UML (esto puede depender de la

persona para que este punto pueda ser una ventaja o desventaja).

• Por el grado de complejidad puede no resultar muy adecuado.

• RUP es generalmente mal aplicada en el estilo cascada.