El documento describe varios paradigmas y modelos para el desarrollo de software, incluyendo el modelo cascada, incremental, espiral, de prototipos y de ensamblaje de componentes. Cada modelo tiene ventajas y desventajas dependiendo del tipo de proyecto. El uso correcto de los paradigmas ayuda a enfrentar problemas comunes en el desarrollo de software de manera estructurada.
1. Paradigmas para el desarrollo
de software
Marco Guerrero
Edith Carreño
Luis Zapatero
Ingeniería en Informática.
UNIDEG Juventino Rosas
2. Introducción
Desde el principio de los tiempos, el ser humano –en busca de
una sociedad organizada- ha creado “paradigmas”.
Un “paradigma” no es más que un conjunto de compromisos
compartidos dentro de los cuales yacen supuestos que permiten
crear un marco conceptual a partir del cual se le da cierto
sentido y significado al mundo.
Por ello, también dentro del mundo de la informática existen
modelos y estipulaciones a seguir si deseamos desarrollar
software funcional y practico.
3. Modelos para el desarrollo de software
• Si se quiere hacer algo
correctamente, es necesario
que se sigan reglas y
estipulaciones para hacerlo. Es
por ello que el “Paradigma
para el desarrollo de software”
nace de la agrupación de las
ideas de la gente sobre el
cómo construir programas y
sobre cómo combinarlos en
grandes sistemas de software.
4. «La crisis del software»
• El termino «crisis del software» fue creado
durante la primer conferencia sobre la
ingeniería de software de la NATO en
1967.
• Durante las primeras décadas de la
«ciencia de las computadoras» nos
enfrentábamos con la dificultad de escribir
programas útiles y eficientes en un rango
de tiempo definido.
5. «La crisis del software»
Las causas del la «crisis del software» fueron
ligadas a la complejidad del desarrollo de
hardware y software.
Esta crisis se manifestó de diferentes maneras:
• Los proyectos requerían de mayor presupuesto y tiempo
de lo establecido.
• El software no cumplía los requisitos, pues era
ineficiente y de baja calidad.
• Era difícil darle mantenimiento al software y el código
era complicado de entender.
6. Modelos para el desarrollo de software
Es por ello que podemos
decir que el “Paradigma
para el desarrollo de
software” es un modelo
para afrontar problemas
que comparten
características comunes.
7. Modelos para el desarrollo de software
Existen varios paradigmas. La
tarea del ingeniero es ver cuál es
el que se adecua a su problema a
resolver. En caso de no encontrar
uno exacto, el ingeniero puede
combinarlos entre ellos.
8. Modelos para el desarrollo de software
Existen varios modelos principales para el desarrollo de
software.
• Modelo cascada
• Modelo Incremental
• Modelo de desarrollo concurrente
• Modelo espiral
• Modelo de ensamblaje de componentes
9. Modelo cascada
Propuesto por Royce en 1970.
Es el paradigma más antiguo,
por lo que fue el más utilizado
durante la creación del modelo
estructurado.
11. Modelo cascada
Revisiones del ciclo de vida
Las «revisiones de ciclo de vida» deben de ser utilizadas para evaluar el
progreso y determinar si debe o no proceder a la siguiente fase de
desarrollo de software.
12. Modelo cascada
Sistemas precedentes
Para algunas categorías de sistemas intensivos de software, el paradigma
de cascada puede ser una buena opción.
• Este tipo de sistemas están los “sistemas precedentes”
• Un “sistema precedente” está caracterizado por:
• Arquitectura del sistema y un diseño de software maduro y capaz de
cumplir los requisitos.
• Equipos de sistemas de ingeniería y de desarrollo de software que
tengan buena comunicación y que tengan experiencia previa con
sistemas similares.
13. Ventajas
• Formaliza un marco para las fases de desarrollo de software
• Hace hincapié por adelantado en los requisitos de software
estables y en las actividades de diseño
• Produce los requisitos de software y documentación de diseño
durante las primeras fases
• Es un modelo de un solo paso y por lo tanto puede ser rápido
y de bajo costo cuando se utiliza en las condiciones adecuadas
14. Desventajas
• Su mayor ventaja también es su desventaja. Si algo ha salido
mal, no se puede volver atrás.
• Muchas veces el cliente no sabe lo que quiere, lo que puede
traer confusión y malentendidos al equipo, pues ya no se
pueden hacer cambios avanzado el proceso.
• Pequeños errores que surgen al estar terminado el software
causa grandes problemas.
15. Modelo Incremental
• El paradigma de desarrollo de software incremental implica el
desarrollo de software en 'piezas' o incrementos. Por ello – a
diferencia del modelo cascada – no necesita una secuencia
lineal.
16. Modelo Incremental
• La idea principal está en el razonamiento en que algunas áreas
presentan problemas únicos a analizar, pero otras no,
entonces ¿Por qué retrasar el desarrollo de estas áreas?
• El proyecto se desarrolla características básicas y sencillas
primero, después avanza a las más complicadas poco a poco
hasta completar el modelo completo.
• La desventaja está en que los errores se detectan tarde y es
costoso corregirlos.
17. Ventajas
• Permite que el cliente se involucre mas en el desarrollo.
• El cliente se sentirá agradecido de la entrega temprana de
partes operativas del software.
• El desarrollo del software es mas veloz en comparación con el
modelo de cascada.
• En caso de que se detecte un error en el sistema, puede
corregirse.
18. Desventajas
• Es difícil calcular el coste total del proyecto.
• Los errores en los requisitos se detectan tarde.
• Requiere metas claras para conocer el estado del proyecto.
• Este modelo no se recomienda para casos de sistemas de
tiempo real, de alto nivel de seguridad de procesamiento
distribuido y/o de alto índice de riesgos.
19. Modelo espiral
• Desarrollado en la década de 1980.
• El modelo espiral hace hincapié en prototipos
impulsados por riesgo.
• El análisis de riesgo se utiliza para identificar a los
candidatos de alto riesgo para la creación de prototipos. La
retroalimentación de los resultados de la creación de
prototipos controlados se evalúa y el conocimiento
obtenido se utiliza para mitigar los riesgos.
20. Modelo espiral
• Este proceso impulsado riesgo continúa hasta que se
comprendan los principales riesgos del desarrollo de software.
21. Modelo espiral
Sistemas sin precedentes
• Es un sistema para el que no existen ejemplos de diseño y los
requisitos y los riesgos todavía no se conocen.
• El modelo en espiral para el desarrollo de software es
especialmente apropiado para sistemas sin precedentes
(como en el departamento de defensa de Estados Unidos).
22. Ventajas
• Permite que se desarrolle un prototipo y que después el
sistema base se idealice sobre el mismo.
• Se adapta a cualquier numero de cambios durante cualquier
fase del proceso.
• Dado que el desarrollo del sistema se hace en pequeños
fragmentos, la estimación de costos es sencilla.
• Conforme el desarrollo se acerca al final, la experiencia del
cliente con el sistema crece, por lo que se pueden analizar las
necesidades del mismo a detalle.
23. Desventajas
• El desarrollo del sistema es tardado.
• Es un modelo costoso.
• Requiere experiencia para la identificación de riesgos.
24. Modelo por prototipos
La idea principal detrás de este
modelo es que en lugar de
congelar un proyecto mientras se
trata de asentar los
requerimientos; se desarrolla un
prototipo con los puntos que se
tienen hasta el momento. Esto
permite comprender mas a
fondo los requerimientos y
necesidades.
25. Modelo por prototipos
El cliente –al usar el prototipo-adquiere
un entendimiento
mayor del sistema, pues «puede
sentirlo» y verlo en acción.
Poco a poco, el sistema va
tomando forma.
Por ello, a este modelo también
se le llama «evolutivo».
26. Ventajas
• Perfecto cuando los usuarios estan embueltos en el desarrollo.
Pues permite adaptarlo a necesidades en las cuales no se
habia pensado.
• Aumenta el entendimiento que los usuarios tienen por el
sistema mientras el desarrollo avanza.
• Funcionalidades olvidadas pueden ser identificadas
facilmente.
27. Desventajas
• Por su estilo, el sistema puede aumentar de tamaño hasta
superar los planes originales.
• Puede llegar a ser mas tardado que otros modelos.
• Es mas complicado llevar un orden a comparación de otros
modelos.
28. Modelo de ensamblaje de componentes
Incorpora características del
modelo espiral.
Es evolutivo por naturaleza, ya
que se identifican las clases
orientadas a objetos candidatas,
esto se hace examinando los
datos que se manejan por la
aplicación (por medio de un
algoritmo), las cuales –en un
futuro- pueden ser reutilizadas
30. Ventajas
• El análisis de riesgo se hace de forma explicita y clara.
• Une los mejores elementos de varios modelos.
• Reduce los riesgos del proyecto.
• Incorpora objetivos de calidad.
• Integra el desarrollo con el mantenimiento.
31. Desventajas
• Genera mucho tiempo en el desarrollo del sistema.
• Modelo costoso.
• Genera mucho trabajo adicional. Cuando un sistema falla, se
pierde tiempo y presupuesto dentro de la empresa.
32. Modelo de desarrollo concurrente
• Es un modelo de tipo de red donde todas las personas actúan
simultáneamente desarrollando una serie de actividades
técnicas importantes, tareas y estados asociados a ellas.
• Una gran ventaja es que proporciona una imagen actualizada
del proyecto, pues no se restringe a una secuencia de sucesos.
También es excelente para proyectos en los que se conforman
grupos de trabajo independientes.
34. Ventajas
• Excelente para proyectos donde se conforman grupos de
trabajos independientes.
• Proporciona una imagen exacta del estado actual de un
proyecto.
35. Desventajas
• Si no existen grupos de trabajo, no se puede trabajar este
método.
• Si se cuenta con un solo grupo de trabajo incompetente, todo
el proyecto peligrara.
36. Conclusiones
El avance se da a partir de expandir nuestros horizontes; de
aceptar ideas nuevas
El análisis correcto de los problemas que se tienen en frente es
la tarea de cualquier ingeniero que quiera tener éxito. Esto solo
puede ser alcanzado teniendo los conocimientos necesarios y
las ganas de aplicarlos.
Por algo existen los paradigmas en el desarrollo de software.
Han sido probados y funcionan.
37. Fuentes
• http://www.sites.upiicsa.ipn.mx/polilibros/portal/Polilibros/P_proceso/ANALISIS_Y_DISEnO_DE_SISTEMAS/IngenieriaDeSoft
ware/CIS/UNIDAD%20I/1.5.htm
• http://revistavirtual.ucn.edu.co/index.php/RevistaUCN/article/viewFile/62/129
• http://asignaturasunimetaingeluzespita.bligoo.com/media/users/22/1135477/files/303935/Modelo_de_desarrollo_concurr
ente.pdf
• http://ldc.usb.ve/~vtheok/cursos/ci3711/apuntes/99-01-14/Info/Modelo%20de%20Ensamblaje.htm
• http://paradigmasiut.blogspot.mx/2013/04/metodologia-de-desarrollo-de-software.html
• http://www.paradigmas.mx/que-es-un-paradigma/
• http://proyectosinformaticoscht2009.wordpress.com/antes-de-empezar/marco-teorico/paradigmas-de-desarrollo-de-software/
• http://216.54.19.111/~mountaintop/sam101/scopage_dir/l5_acqstrat/l5_t3sdp.html
• http://ingenieraupoliana.blogspot.mx/2010/10/modelo-de-desarrollo-concurrente.html
• http://ingenieraupoliana.blogspot.mx/2010/10/modelo-de-desarrollo-basado-en.html
• http://es.wikipedia.org/wiki/Desarrollo_en_espiral
• http://quecomputadoracomprar.com/ventajas-y-desventajas-del-modelo-en-espiral/
• http://ingenieraupoliana.blogspot.mx/2010/10/modelo-incremental.html
• http://en.wikipedia.org/wiki/Software_crisis
• http://istqbexamcertification.com/what-is-prototype-model-advantages-disadvantages-and-when-to-use-it/
• Y material presente en la plataforma.