martes, 7 de mayo de 2013


Modelos Evolutivos

Los modelos evolutivos son iterativos. Se caracterizan por la forma en que permiten a los ingenieros del software desarrollar versiones cada vez mas completas del software.

El software evoluciona con el tiempo. Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo. Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo, por lo que se aconsejable introducir una versión funcional limitada de alguna forma para aliviar las presiones competitivas.



IMAGEN: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW5QuQ47O9VpJxYsMjBYSSttsiBIXCwoSchpJ9jiY8X5y0ertKAmQmVkvJp_x_LA8RXIe27HhE6M8ZE7XgHWf2U0_N6Ycc2-hmZwlrHlhac-NQEOeibwzu9ei-oA3Dw1VO1XYtHiEf5Reh/s1600/tncmdj.jpg
Modelo Espiral

Es un ciclo de vida de software definido por  Barry Boehm en 1988, utilizado mayormente en la ingeniería de software. Fue descrito por Boehm de la siguiente manera: ¨El modelo de desarrollo en espiral es un generador de modelo de proceso guiado por el riesgo que se emplea para conducir sistemas intensivos de ingeniería de software concurrente y a la vez con muchos usuarios¨. Las actividades que conforman este modelo forman una espiral, en la que cada bucle o interacciona representa un conjunto de actividades. Se tiene en cuenta fuertemente el riesgo que aparece a la hora de desarrollar software.

Gráfico modelo Espiral



IMAGEN: http://scruz334.blogspot.es/img/espiral.jpg


Planificación: determinación de objetivos, alternativas y restricciones.

Análisis de riesgo : análisis de alternativas e identificación/resolución de riesgos.

Ingeniería : desarrollo del producto del "siguiente nivel",

Evaluación del cliente : Valorización de los resultados de la ingeniería.


Durante la primera vuelta alrededor de la espiral se definen los objetivos, las alternativas y las restricciones, y se analizan e identifican los riesgos. Si el análisis de riesgo indica que hay una incertidumbre en los requisitos, se puede usar la creación de prototipos en el cuadrante de ingeniería para dar asistencia tanto al encargado de desarrollo como al cliente.

El cliente evalúa el trabajo de ingeniería (cuadrante de evaluación de cliente) y sugiere modificaciones. Sobre la base de los comentarios del cliente se produce la siguiente fase de planificación y de análisis de riesgo. En cada bucle alrededor de la espiral, la culminación del análisis de riesgo resulta en una decisión de "seguir o no seguir".

Con cada iteración alrededor de la espiral (comenzando en el centro y siguiendo hacia el exterior), se construyen sucesivas versiones del software, cada vez más completa y, al final, al propio sistema operacional.

El paradigma del modelo en espiral para la ingeniería de software es actualmente el enfoque más realista para el desarrollo de software y de sistemas a gran escala. Utiliza un enfoque evolutivo para la ingeniería de software, permitiendo al desarrollador y al cliente entender y reaccionar a los riesgos en cada nivel evolutivo. Utiliza la creación de prototipos como un mecanismo de reducción de riesgo, pero, lo que es más importante permite a quien lo desarrolla aplicar el enfoque de creación de prototipos en cualquier etapa de la evolución de prototipos.

Características:
  • Tiene y esta conformado en un enfoque cíclico para el crecimiento del grado de definición e implementación de un sistema, mientras que disminuye su grado de riesgo.
  • Utiliza un conjunto de puntos de fijación para asegurar el compromiso que asume el usuario con las soluciones de sistema que sean factibles y totalmente satisfactorias.

Ventajas:

El análisis del 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 mejoras y nuevos requerimientos sin romper con la metodología, ya que este ciclo de vida no es rígido ni estático.

Citado de http://es.wikipedia.org/wiki/Desarrollo_en_espiral#Ventajas

Desventajas:
  • Genera mucho tiempo en el desarrollo del sistema
  • Modelo costoso
  • Requiere experiencia en la identificación de riesgos
Citado de: http://es.wikipedia.org/wiki/Desarrollo_en_espiral#Desventajas

conclusiones

Básicamente consiste en una serie de ciclos que comienzan desde el centro  que se repiten en forma de espiral, El Espiral puede verse como un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemáticos del Modelo Cascada, con el agregado de gestión de riegos.

este modelo no es tan usado por lo que no se tiene clara la medida de eficiencia de este modelo en un sistema de información, pero este modelo podemos ver que apto para el desarollo de sistemas operativos complejos, este modelo evolutivo tiene aspectos buenos ya que todo lo que hace este modelo es controlar y sistematizar las actividades

Concurrente

La gran mayoría de los modelos de desarrollo de software están ligados al tiempo, cuanto más se dure sería mejor o peor para el modelo. Este modelo de de desarrollo de software concurrente está ligado y dirigido primordialmente por las necesidades del usuario, las decisiones que se tomen  acabo y las tareas que realicen dichos usuarios.
También define una serie de acontecimientos que se disparan a los estados de cada uno de las actividades realizadas.


IMAGEN: http://ekipo4.galeon.com/images/programando_3.gif

Fue creado por  Davis Sitaram, se puede representar en forma de esquema de una serie de actividades, técnicas tareas y estados asociados a ellas como ya lo habíamos mencionado. Tiene la capacidad de describir las múltiples actividades del software que están ocurriendo simultáneamente.

Características:
  •        Se expresa de manera esquematizada y organizada.
  •        Cada actividad lleva procesos concurrentes.
  •        Se aplica a la mayoría de tipos de desarrollo de software
  •        Es un modulo aplicable  para el cliente soñador.
  •        Esta dirigido básicamente y esencialmente a las necesidades del usuario.
  •        Es aplicable al cliente servidor.

Gráfico del modelo concurrente

IMAGEN:https://lh5.googleusercontent.com/5CYRpTGDtWq0SmgPjnUG07FxKyaso_iqzyWxKXr4wd36wEIkERyd7Ut3GjUSXtK-FH0cgU1yvfal3_SrzOxM-p76CkT28jiEs1TfAB1vmUQz8LDXiw

Ventajas:
  •        Es excelente para proyectos en los que se conforman grupos de trabajo.
  •        Proporciona una imagen exacta del estado actual de un proyecto
  •        No restringe el proyecto a una secuencia de sucesos.
Desventajas:
  •  Si no se dan las condiciones específicas no se puede aplicar.
  •  Si no existe grupo de trabajo  no se puede  trabajar  en este método.
  •  Todas las actividades de red  existen simultáneamente con otras.
  •     Los sucesos generados dentro de una actividad, o en algún otro lado de la red de         actividad, inician las transiciones entre los estados de otra actividad.
conclusiones
    El modelo de proceso concurrente se puede sentar en forma de esquema como una serie de actividades técnicas importantes, tareas y estados asociados a ellas. Por ejemplo, la actividad de ingeniería definida para el modelo en espiral, se lleva acabo invocando las tareas siguientes: modelado de construcción de prototipos y/o análisis, especificación de requisitos y diseño.
     
      Este modelo define una serie de acontecimientos que disparan transiciones de estado a estado para cada una de las actividades del proyecto, utilizando para ellos el paradigma de desarrollo de aplicaciones cliente/servidor.
Partes citadas de:
http://eclases.tripod.com/id12.html
http://modelosdrayevolutivos.blogspot.com/2008/10/modelo-de-desarrollo-concurrente.html


Incremental

Es un modelo basado en varios ciclos en Cascada retroalimentados aplicados consecutivamente. Combina los elementos del MLS con la filosofía con la filosofía interactiva de construcción de prototipos.
Fue propuesto por Mills en 1980. En una visión genérica, el proceso se divide en 4 partes: Análisis, Diseño, Código y Prueba. Se usa el principio de trabajo en cadena o “Pipeline”, utilizado en muchas otras formas de programación.


IMAGEN: http://1.bp.blogspot.com/-ANKYNFg4M_U/T4VXjnkrCcI/AAAAAAAADqA/XCBpraJjcgI/s1600/incremental%2Binnovation.jpg

Características:
  • Se evitan proyectos largos y se entrega “algo de valor” a los usuarios con cierta       frecuencia.
  •      El usuario se involucre más.
  •      Difícil de evaluar el costo total.
  •     Difícil de aplicar a los sistemas transaccionales que tienden a ser integrados y a operar como un todo.
  •      Requiere gestores experimentados.
  •      Los errores en los requisitos se detectan tarde.
  •      El resultado puede ser muy positivo.
Gráfico del modelo incremental



 IMAGEN: http://ldc.usb.ve/~vtheok/cursos/ci3711/apuntes/99-01-14/Info/esquema5.gif

Ventajas:
  • Con un paradigma incremental se reduce el tiempo de desarrollo inicial, ya que se implementa la funcionalidad parcial.
  • También provee un impacto ventajoso frente al cliente, que es la entrega temprana de partes operativas del Software.
  • El modelo proporciona todas las ventajas del modelo en cascada realimentado, reduciendo sus desventajas sólo al ámbito de cada incremento.
  • Permite entregar al cliente un producto más rápido en comparación del modelo de cascada.
  • Resulta más sencillo acomodar cambios al acotar el tamaño de los incrementos.
  • Por su versatilidad requiere de una planeación cuidadosa tanto a nivel administrativo como técnico.
Desventajas:
  • El modelo Incremental no es recomendable para casos de sistemas de tiempo real, de alto nivel de seguridad, de procesamiento distribuido, y/o de alto índice de riesgos.       Requiere de mucha planeación, tanto administrativa como técnica.
  • Requiere de metas claras para conocer el estado de los proyectos.
conclusiones

     El modelo incremental es una unión de las mejores funcionalidades del modelo de cascada y del modelo de prototipos. A medida que se presenta un prototipo se produce un “incremento”, que es una iteración del proceso anterior pero aplicando las experiencias aprendidas del proceso anterior. A diferencia del modelo de prototipos, los prototipos de este modelo están orientados a ser operacionales en cada incremento y no ser solo una “previa” de cómo sería el sistema en su versión final.

Citas e información sacada de:
http://gproyectos-s4b.blogspot.com/2010/09/modelo-incremental.html
http://desarrolloparadigmas9.blogspot.com/
http://www.slideshare.net/AvelinoFelipePolicarpio/modelo-incremental-12729581