Este documento compara diferentes modelos de desarrollo de software. Describe brevemente el modelo en cascada, el modelo basado en prototipos, el modelo incremental o evolutivo, el modelo espiral y el modelo basado en componentes. Explica que un modelo de desarrollo representa abstractamente el proceso de desarrollo de software y puede adaptarse a las necesidades del proyecto. En general, los modelos se clasifican en cascada, evolutivos o basados en componentes.
0 calificaciones0% encontró este documento útil (0 votos)
104 vistas6 páginas
Este documento compara diferentes modelos de desarrollo de software. Describe brevemente el modelo en cascada, el modelo basado en prototipos, el modelo incremental o evolutivo, el modelo espiral y el modelo basado en componentes. Explica que un modelo de desarrollo representa abstractamente el proceso de desarrollo de software y puede adaptarse a las necesidades del proyecto. En general, los modelos se clasifican en cascada, evolutivos o basados en componentes.
Este documento compara diferentes modelos de desarrollo de software. Describe brevemente el modelo en cascada, el modelo basado en prototipos, el modelo incremental o evolutivo, el modelo espiral y el modelo basado en componentes. Explica que un modelo de desarrollo representa abstractamente el proceso de desarrollo de software y puede adaptarse a las necesidades del proyecto. En general, los modelos se clasifican en cascada, evolutivos o basados en componentes.
Este documento compara diferentes modelos de desarrollo de software. Describe brevemente el modelo en cascada, el modelo basado en prototipos, el modelo incremental o evolutivo, el modelo espiral y el modelo basado en componentes. Explica que un modelo de desarrollo representa abstractamente el proceso de desarrollo de software y puede adaptarse a las necesidades del proyecto. En general, los modelos se clasifican en cascada, evolutivos o basados en componentes.
Descargue como DOCX, PDF, TXT o lea en línea desde Scribd
Descargar como docx, pdf o txt
Está en la página 1de 6
MODELOS DE DESARROLLO DE SOFTWARE
MODELO ENFOQUE VENTAJAS/DESVENTAJAS APLICABILIDAD
MODELO EN CASCADA El inicio de cada etapa debe esperar a la finalizacin de la inmediatamente anterior. Cualquier error de diseo detectado en la etapa de prueba conducen necesariamente al rediseo y programacin del cdigo afectado as aumenta costos del desarrollo Rara vez los proyectos siguen una evolucin secuencial. Es ampliamente criticado desde mbito educativo y empresarial Utilizado cuando existen especificaciones amplias de los requerimientos del cliente MODELO BASADO EN PROTOTIPOS No posee la funcionalidad total del sistema pero sui condensa la idea principal del mismo, paso a paso crece su funcionalidad, alto grado de participacin del usuario El cliente puede pensar que el prototipo es una versin acabada. Puede llegar a pasarse por alto la calidad del software global o el mantenimiento del largo plazo. Las herramientas elegidas pueden ser inadecuadas. La clave del xito de este modelo consiste en definir bien, desde el principio, las reglas del juego. Se utiliza si en el mercado no se encuentra el producto pero el cliente desea resultados inmediatos. Para sistemas interactivos pequeos o de tamao pequeo. Para sistemas con vida corta. MODELO INCREMENTAL O EVOLUTIVO Modelo Lineal-Secuencial con el modelo basado en Prototipos. El Sistema no se entrega de una vez, se divide y se entrega incrementos. Junto a cada incremento se entrega una parte de funcionalidad que se ha establecido. Los requisitos de un incremento son inamovibles; pero pueden modificarse en los incrementos posteriores Los clientes no tienen que esperar el producto completo. El primero incremento debe satisfacer o mejor dicho satisface los requisitos crticos. Los primeros incrementos sirven de prototipos y ayudan a la obtencin de los posteriores requisitos. Puede ser difcil ajustar los requisitos a los incrementos.
Reemplazar el antiguo desarrollo con uno nuevo que satisfaga las nuevas necesidades segn las redefiniciones del problema.
Manejo de Versiones MODELO ESPIRAL Es una mejora del Modelo Basado en prototipos Cada vuelta en la espiral representa una fase del proceso. No hay fases fijas, cada vuelta en la espiral determina las actividades a realizar. La dimensin radial representa el coste acumulado en la financiacin de las fases. La dimensin angular representa el progreso hecho en completar cada ciclo de la espiral. Un ciclo a travs de la espiral es simular un paso a travs de un modelo en cascada
Requiere comunicacin permanente con el cliente por lo tanto si se cambia el contacto con el cual se realiza desarrollo es necesario que est al tanto de lo realizado y lo pendiente, cliente debe ser gran conocedor del sistema.
Utilizado para el desarrollo de aplicaciones complejas y/o especficas. (Ej. Investigacin Gentica)
MODELO BASADO EN COMPONENTES (ORIENTADO A OBJETOS)
Es programacin orientada a Objetos. Se utilizan objetos, clases y se reutilizan en diferentes partes del sistema.
Optimiza los tiempos de respuesta a los requerimientos del cliente y facilita la labor del programador pues hay un alto aprovechamiento del cdigo. Facilita mantenimiento del software. Sistemas robustos y de alta proyeccin.
CODE AND FIX
No requiere planeacin y se trata de codificar y corregir. Se trabaja mediante prueba y error. Especial para desarrollos rpidos y sencillos
Desarrollo Rpido
No garantiza calidad
Desarrollo muy pequeos con claridad de objetivos, requerimientos pequeos o de mantenimientos con bajo impacto.
CASCADA CON SUBPROYECTOS
Requiere planeacin.
Plantea Organizacin y planeacin de un gran proyecto Se pueden realizar varias partes del proyecto al mismo tiempo por diferentes desarrolladores
Adecuada para el desarrollo de proyectos complejos que estiman de 1 a 3 aos de desarrollo.
ENTREGA POR ETAPAS
Cascada con entregas grandes en diferentes etapas del desarrollo. Cascada con Evolutivo.
Debe entregarse una etapa para continuar con la siguiente
Desarrollos robustos. Desarrollo depende del presupuesto directamente
3. MODELOS EVOLUTIVOS
Qu es un modelo de desarrollo?
Un modelo de desarrollo es una representacin abstracta de un proceso de software, cada modelo representa el proceso de desarrollo de software de una manera en particular. A pesar de estar definidos claramente, no representan necesariamente la realidad de cmo se debe desarrollar el software, sino que establece un enfoque comn. Un modelo puede ser modificado y adaptado de acuerdo a las necesidades del software en desarrollo. En forma general podemos clasificar los modelos de desarrollo en 3 grupos:
El modelo en cascada. Considera las actividades fundamentales del proceso de especificacin, desarrollo, validacin y evolucin, y los representa como fases separadas del proceso, tales como la especificacin de requerimientos, el diseo del software, la implementacin, las pruebas, etctera.
Desarrollo evolutivo. Este enfoque entrelaza las actividades de especificacin, desarrollo y validacin. Un sistema inicial se desarrolla rpidamente a partir de especificaciones abstractas. ste se refina basndose en las peticiones del cliente para producir un sistema que satisfaga sus necesidades.
Ingeniera del software basada en componentes. Este enfoque se basa en la existencia de un nmero significativo de componentes reutilizables. El proceso de desarrollo del sistema se enfoca en integrar estos componentes en el sistema ms que en desarrollarlos desde cero. Aunque existen muchos tipos de modelos de desarrollo, de forma genrica la mayora est clasificada en una de estas 3 categoras, y estos a pesar de ser diferentes a veces son usados de manera simultneamente especialmente en sistemas grandes.
Desarrollo Evolutivo
El desarrollo evolutivo consta del desarrollo de una versin inicial que luego de exponerse se va refinando de acuerdo de los comentarios o nuevos requerimientos por parte del cliente o del usuario final. Las fases de especificacin, desarrollo y validacin se entrelazan en vez de separarse.
Existen dos tipos de desarrollo evolutivo:
Desarrollo exploratorio, donde el objetivo del proceso es trabajar con el cliente para explorar sus requerimientos y entregar un sistema final. El desarrollo empieza con las partes del sistema que se comprenden mejor. El sistema evoluciona agregando nuevos atributos propuestos por el cliente.
Prototipos desechables, donde el objetivo del proceso de desarrollo evolutivo es comprender los requerimientos del cliente y entonces desarrollar una definicin mejorada de los requerimientos para el sistema. El prototipo se centra en experimentar con los requerimientos del cliente que no se comprenden del todo.
Ventajas
La especificacin puede desarrollarse de forma creciente.
Los usuarios y desarrolladores logran un mejor entendimiento del sistema. Esto se refleja en una mejora de la calidad del software.
Es ms efectivo que el modelo de cascada, ya que cumple con las necesidades inmediatas del cliente.
Desventajas
Proceso no Visible: Los administradores necesitan entregas para medir el progreso. Si el sistema se necesita desarrollar rpido, no es efectivo producir documentos que reflejen cada versin del sistema.
Sistemas pobremente estructurados: Los cambios continuos pueden ser perjudiciales para la estructura del software haciendo costoso el mantenimiento.
Se requieren tcnicas y herramientas: Para el rpido desarrollo se necesitan herramientas que pueden ser incompatibles con otras o que poca gente sabe utilizar.
Modelo Espiral
Es un modelo de desarrollo evolutivo propuesto por Barry Boehm, que utiliza prototipos como apoyo. La forma de espiral representa una iteracin (repeticin) de procesos que, a medida que se van entregando prototipos y stos son revisados por los clientes o usuarios finales, el tiempo empleado para desarrollar la prxima versin es cada vez mayor. Cada divisin recibe el nombre de regin de tareas.
Aunque el modelo espiral representa ventajas por sobre el desarrollo lineal, el clculo de los riesgos puede ser muy complicado y no es tan usado en la realidad.
Modelo Espiral WINWIN (gana & gana)
Una variante interesante del Modelo Espiral es el Modelo espiral Win-Win. El Modelo Espiral previo (clsico) sugiere la comunicacin con el cliente para fijar los requisitos, en que simplemente se pregunta al cliente qu necesita y l proporciona la informacin para continuar, sin embargo, esta es una situacin que rara vez ocurre. Normalmente el cliente y desarrollador entran en una negociacin, se negocia coste frente a funcionalidad, rendimiento, calidad, etc. Las mejores negociaciones se fuerzan en obtener Victoria & Victoria (Win & Win), es decir que el cliente gane obteniendo el producto que lo satisfaga, y el desarrollador tambin gane consiguiendo presupuesto y fecha de entrega realista. Evidentemente, este modelo requiere fuertes habilidades de negociacin.
Modelo de desarrollo concurrente
Es un modelo de tipo de red donde todas las personas actan simultneamente o al mismo tiempo. Davis Sitaram ha descrito el modelo de desarrollo concurrente, llamado algunas veces ingeniera concurrente, de la siguiente forma: Los gestores de proyectos que siguen los pasos del estado del proyecto en lo que se refiere a las fases importantes [del ciclo de vida clsico] no tiene ideal del estado de sus proyectos. Estos son ejemplos de un intento por seguir los pasos extremadamente simples. Tenga en cuenta que aunque un proyecto [grande] este en la fase de codificacin, hay personal de ese proyecto implicado en actividades asociadas generalmente a muchas fases de desarrollo simultneamente. Por ejemplo,...el personal est escribiendo requisitos diseando, codificando, haciendo pruebas y probando la integracin (todo al mismo tiempo). Los modelos de proceso de ingeniera del software de Humphrey y Kellner han mostrado la concurrencia que existe para actividades que ocurren para cualquier fase. El trabajo ms reciente de Kellner utiliza diagramas de estado para representar la relacin concurrente que existe entre actividades asociadas a un acontecimiento especifico, pero falla en capturar la riqueza de la concurrencia que existe en todas las actividades del desarrollo y de gestin del software en mi proyecto...La mayora de los modelos de procesos de desarrollo del software son dirigido por el tiempo; cuanto ms tarde sea, ms atrs se encontrara en el proceso de desarrollo. (Un modelo de proceso concurrente) est dirigido por las necesidades del usuario, las decisiones de la gestin y los resultados de las revisiones.
Modelo Incremental
El modelo incremental es una unin 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 iteracin del proceso anterior pero aplicando las experiencias aprendidas del proceso anterior. A diferencia del modelo de prototipos, los prototipos de este modelo estn orientados a ser operacionales en cada incremento y no ser solo una previa de cmo sera el sistema en su versin final.
El modelo incremental fue propuesto por Harlan Mills en el ao 1980. Surgi el enfoque incremental de desarrollo como una forma de reducir la repeticin del trabajo en el proceso de desarrollo y dar oportunidad de retrasar la toma de decisiones en los requisitos hasta adquirir experiencia con el sistema. Este modelo se conoce tambin bajo las siguientes denominaciones:
Mtodo de las comparaciones limitadas sucesivas. Ciencia de salir del paso. Mtodo de atacar el problema por ramas.
El Modelo Incremental combina elementos del Modelo Lineal Secuencial con la filosofa interactiva de Construccin de Prototipos. El modelo incremental aplica secuencias lineales de forma escalonada mientras progresa el tiempo en el calendario. Cada secuencia lineal produce un incremento del software. El primer incremento generalmente es un producto esencial denominado ncleo.
En una visin genrica, el proceso se divide en 4 partes:
Anlisis Diseo Cdigo Prueba
Sin embargo, para la produccin del Software, se usa el principio de trabajo en cadena o Pipeline. Con esto se mantiene al cliente en constante contacto con los resultados obtenidos en cada incremento. Es el mismo cliente el que incluye o desecha elementos al final de cada incremento a fin de que el software se adapte mejor a sus necesidades reales. El proceso se repite hasta que se elabora el producto completo. De esta forma el tiempo de entrega se reduce considerablemente.
El Modelo Incremental es de naturaleza interactiva brindando al final de cada incremento la entrega de un producto completamente operacional. Este modelo es particularmente til cuando no se cuenta con una dotacin de personal suficiente. Los primeros pasos los pueden realizar un grupo reducido de personas y en cada incremento se aadir personal, de ser necesario. Por otro lado los incrementos se pueden planear para gestionar riesgos tcnicos.
Durante el proceso se trata de llevar a cabo al proyecto en diferentes partes que al final terminar siendo la solucin completa requerida por el cliente, pero stas partes no se pueden realizar en cualquier orden, sino que dependen de lo que el cliente este necesitando con ms urgencia, de los puntos ms importantes del proyecto, los requerimientos ms bsicos, difciles y con mayor grado de riesgo, ya que estos se deben hacer al comienzo, de manera que se disminuya la dificultad y el riesgo en cada versin. De este modo podemos terminar una aplicacin ejecutable (primera versin) que podr ser entregada al cliente para que ste pueda trabajar en ella y el programador pueda considerar las recomendaciones que el cliente efecte para hacer mejoras en el producto. Estas nuevas mejoras debern esperar a ser integradas en la siguiente versin junto con los dems requerimientos que no fueron tomados en cuenta en la versin anterior.
El modelo incremental consiste en un desarrollo inicial de la arquitectura completa del sistema, seguido de sucesivos incrementos funcionales. Cada incremento tiene su propio ciclo de vida y se basa en el anterior, sin cambiar su funcionalidad ni sus interfaces. Una vez entregado un incremento, no se realizan cambios sobre el mismo, sino nicamente correccin de errores. Dado que la arquitectura completa se desarrolla en la etapa inicial, es necesario conocer los requerimientos completos al comienzo del desarrollo.
Al iniciar del desarrollo, los clientes o los usuarios, identifican a grandes rasgos, las funcionalidades que proporcionar el sistema. Se confecciona un bosquejo de requisitos funcionales y ser el cliente quien se encarga de priorizar que funcionalidades son mas importantes. Con las funcionalidades priorizadas, se puede confeccionar un plan de incrementos,
donde en cada incremento se indica un subconjunto de funcionalidades que el sistema entregar. La asignacin de funcionalidades a los incrementos depende de la prioridad dada a los requisitos. Finalizado el plan de incrementos, se puede comenzar con el primer incremento.
Caractersticas: Se evitan proyectos largos y se entrega "algo de valor" a los usuarios con cierta frecuencia. El usuario se involucra ms. Difcil de evaluar el costo total. Difcil 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 positivo.
Ventajas: Con un paradigma incremental se reduce el tiempo de desarrollo inicial, ya que se implementa la funcionalidad parcial. Tambin 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 slo al mbito de cada incremento. Resulta ms sencillo acomodar cambios al acotar el tamao de los incrementos.
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 planeacin, tanto administrativa como tcnica. Requiere de metas claras para conocer el estado del proyecto.
Conclusin:
Un modelo incremental lleva a pensar en un desarrollo modular, con entregas parciales del producto Software denominados "incrementos" del sistema, que son escogidos en base a prioridades predefinidas de algn modo. El modelo permite una implementacin con refinamientos sucesivos (ampliacin y/o mejoras). Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versin previamente implementada del producto software.