Modelos de Desarrollo de Software
Contenido
• Información general: Modelos de Desarrollo de
Software
- Modelo en cascada
- Modelo de construcción de prototipos
- Modelo incremental
- Modelo en espiral
- Modelos ágiles
• Cuadro Comparativo
• Análisis
Modelos de Desarrollo de Software
¿Modelos básicos de procesos?
...modelos de procesos muy generales (algunas
veces llamados paradigmas de
proceso) ... Esto es, vemos el marco de trabajo
del proceso, pero no los detalles de
actividades específicas. Estos modelos generales
no son descripciones definitivas
de los procesos del software. Más bien, son
abstracciones de los procesos que se
pueden usar para explicar diferentes enfoques del
desarrollo de software...
Ian Sommerville
Modelos de Desarrollo de Software
Modelo en Cascada
Este es el más básico de todos los modelos, y sirve como bloque de construcción para los
demás modelos de ciclo de vida. La visión del modelo cascada del desarrollo de software es
muy simple; dice que el desarrollo de software puede ser a través de una secuencia simple de
fases. Cada fase tiene un conjunto de metas bien definidas, y las actividades dentro de una fase
contribuyen a la satisfacción de metas de esa fase o quizás a una sub-secuencia de metas de la
fase. Las flechas muestran el flujo de información entre las fases. La flecha de avance muestra
el flujo normal. Las flechas hacia atrás representan la retroalimentación.
Modelos de Desarrollo de Software
Modelo en Cascada
En esta fase se analizan las
necesidades de los usuarios
finales del software para
determinar qué objetivos debe
cubrir.
Descompone y organiza el sistema en
elementos que puedan elaborarse por
separado, aprovechando las ventajas
del desarrollo en equipo.Es la fase en donde se implementa
el código fuente, haciendo uso de
prototipos así como de pruebas y
ensayos para corregir errores.
Es la fase en donde el usuario final ejecuta
el sistema, para ello el o los
programadores ya realizaron exhaustivas
pruebas para comprobar que el sistema no
falle.
MantenimientoMantenimiento
Una de las etapas más críticas, ya que se destina un
75 % de los recursos, es el mantenimiento del
software ya que al utilizarlo como usuario final puede
ser que no cumpla con todas nuestras expectativas.
Modelos de Desarrollo de Software
Modelo de Construcción de Prototipos
El prototipado de requerimientos es la creación de una implementación parcial de un sistema,
para el propósito explícito de aprender sobre los requerimientos del sistema. Un prototipo es
construido de una manera rápida tal como sea posible. Esto es dado a los usuarios, clientes o
representantes de ellos, posibilitando que ellos experimenten con el prototipo. Estos individuos
luego proveen la retroalimentación sobre lo que a ellos les gustó y no les gustó acerca del
prototipo proporcionado, quienes capturan en la documentación actual de la especificación de
requerimientos la información entregada por los usuarios para el desarrollo del sistema real. El
prototipado puede ser usado como parte de la fase de requerimientos (determinar
requerimientos) o justo antes de la fase de requerimientos (como predecesor de requerimientos).
En otro caso, el prototipado puede servir su papel inmediatamente antes de algún o todo el
desarrollo incremental en modelos incremental o evolutivo.
Modelos de Desarrollo de Software
Modelo de Construcción 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
representación 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.
Etapas
Plan rápido.
Modelado, diseño rápido
Construcción del Prototipo
Desarrollo, entrega y retroalimentación
Comunicación
Entrega del desarrollo final
Modelos de Desarrollo de Software
Modelo Incremental
Los riesgos asociados con el desarrollo de sistemas largos y complejos son enormes. Una forma
de reducir los riesgos es construir sólo una parte del sistema, reservando otros aspectos para
niveles posteriores. El desarrollo incremental es el proceso de construcción siempre
incrementando subconjuntos de requerimientos del sistema. Típicamente, un documento de
requerimientos es escrito al capturar todos los requerimientos para el sistema completo.
Note que el desarrollo incremental es 100% compatible con el modelo cascada. El desarrollo
incremental no demanda una forma específica de observar el desarrollo de algún otro incremento.
Así, el modelo cascada puede ser usado para administrar cada esfuerzo de desarrollo, como se
muestra en la figura.
Modelos de Desarrollo de Software
Modelo Incremental
El modelo de desarrollo incremental provee algunos beneficios significativos para los proyectos:
•Construir un sistema pequeño es siempre menos riesgoso que construir un sistema grande.
•Al ir desarrollando parte de las funcionalidades, es más fácil determinar si los requerimientos planeados
para los niveles subsiguientes son correctos.
•Si un error importante es realizado, sólo la última iteración necesita ser descartada.
•Reduciendo el tiempo de desarrollo de un sistema (en este caso en incremento del sistema) decrecen las
probabilidades que esos requerimientos de usuarios puedan cambiar durante el desarrollo.
•Si un error importante es realizado, el incremento previo puede ser usado.
•Los errores de desarrollo realizados en un incremento, pueden ser arreglados antes del comienzo del
próximo incremento.
Modelos de Desarrollo de Software
Modelo en Espiral
Este es un modelo de proceso de software
evolutivo, el cual enlaza la naturaleza iterativa de
la construcción de prototipos, pero conservado
aquellas propiedades del modelo en cascada.
El modelo en espiral fue desarrollado por
Boehm, quien lo describe así:
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.
Modelos de Desarrollo de Software
Modelo en Espiral
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:
Angular: Indica el avance del proyecto del software dentro de un ciclo.
Radial: Indica el aumento del coste del proyecto, ya que con cada nueva iteración se pasa más
tiempo desarrollando.
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:
-Características: experiencia del personal, requisitos
a cumplir, etc.
Formas de gestión del sistema.
Riesgo asumido con cada alternativa.
-Desarrollar y Verificar: Programar y probar el
software.
Tareas
Para cada ciclo habrá cuatro actividades:
-Determinar Objetivos.
-Análisis del riesgo.
-Desarrollar y probar.
-Planificación.
Modelos de Desarrollo de Software
Modelos Ágiles
El desarrollo ágil de software envuelve
un enfoque para la toma de decisiones
en los proyectos de software, que se
refiere a métodos de ingeniería del
software basados en el desarrollo
iterativo e incremental, donde los
requisitos y soluciones evolucionan
con el tiempo según la necesidad del
proyecto. Así el trabajo es realizado
mediante la colaboración de equipos
auto-organizados y multidisciplinarios,
inmersos en un proceso compartido de
toma de decisiones a corto plazo.
Cada iteración del ciclo de vida incluye: planificación, análisis de requisitos, diseño,
codificación, pruebas y documentación. Teniendo gran importancia el concepto de
"Finalizado" (Done), ya que el objetivo de cada iteración no es agregar toda la
funcionalidad para justificar el lanzamiento del producto al mercado, sino incrementar
el valor por medio de "software que funciona" (sin errores).
Modelos de Desarrollo de Software
Características de Modelos Ágiles
1) El desarrollo del plan: Determinar rápidamente el alcance de la siguiente iteración / entrega en base a las prioridades
del negocio (cliente) y los estimados técnicos. Estar dispuestos a cambiar el plan a medida que es necesario.
2) Liberar mucho, en incrementos pequeños: Poner el sistema en producción los más rápido posible (el mínimo
necesario) y desarrollar las siguientes versiones con el ciclo lo mas corto posible.
3)Diseño simple: Mantener el diseño lo más simple posible (KISS: Keep it Simple Stup$%#id), concentrarse en el
presente y no en el futuro (YAGNI: You ain't going to need it)
4) Pruebas unitarias continuas: Sirven para evitar que los programadores se equivoquen, para evitar las “parcelas” de
código y para validar constantemente la aplicación. Los clientes también pueden escribir pruebas para validar / demostrar
ciertas características del sistema.
5) Programación en parejas: Todo el código a ponerse en producción es escrito en parejas. ¿Sabe usted por que?
6) Propiedad colectiva: Nadie es dueño de ninguna clase, de ningún artefacto, de ninguna parte del código.
7) Integración continua: Las características del sistema se desarrollan y se integran a diario. Luego se corren las pruebas
y se verifica que la aplicación corra correctamente.
8) 40 horas a la semana: Nadie. ¡NADIE! Trabaja horas extra. ¿Sabe usted porque?
9) El cliente involucrado en el ambiente de desarrollo: El cliente (o un representante) es un miembro más del equipo de
desarrollo.
10)Estándares de codificación: Se definen estándares adecuados de codificación y se respetan. Sobre todo aquellos que
enfatizan la “auto-documentación” y adecuada documentación del código.
Modelos de Desarrollo de Software
Cuadro
Comparativo Modelo en Cascada Modelo Incremental Modelo en Espiral
Ventajas
Permite a los administradores,
avanzar en el desarrollo, aunque
en una escala muy bruta.
El modelo proporciona todas las
ventajas del modelo en cascada
realimentado, reduciendo sus
desventajas sólo al ámbito de cada
incremento.
Al ser un modelo de Ciclo de
Vida orientado al riesgo se
dice que uno de los aspectos
fundamentales de su éxito
radica en que el equipo que lo
aplique sea capaz de detectar
y catalogar correctamente
dicho riesgo.
Desventajas
Los cambios introducidos durante el
desarrollo pueden confundir al
equipo profesional en las etapas
tempranas del proyecto. Si los
cambios se producen en etapa
madura (codificación o prueba)
pueden ser catastróficos para un
proyecto grande.
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 mucha experiencia y
habilidad para la evaluación
de los riesgos, lo cual es
requisito para el éxito del
proyecto. Es difícil convencer
a los grandes clientes que se
podrá controlar este enfoque
evolutivo.
Crítica
Este es un modelo en el cual se
debe usar cuando todos los
requerimientos han sido
establecidos claramente de
entrada.
En este modelo se debe especificar
con precisión todo lo que el sistema
va a hacer antes de desarrollarlo. Lo
cual lo hace manejable y disminuiría
los costos.
Este modelo es útil para
grandes proyectos pero no ha
sido utilizado tanto como el
lineal secuencial o el de
prototipos.
Características
Planear un proyecto antes de
embarcarse en él. Definir el
comportamiento externo
deseado del sistema antes de
diseñar su arquitectura interna.
Documentar los resultados de
cada actividad. Diseñar un
sistema antes de codificarlo.
Testear un sistema después de
construirlo.
Construir un sistema pequeño es
siempre menos riesgoso. Al ir
desarrollando parte de las
funcionalidades, es más fácil
determinar si los requerimientos para
los niveles subsiguientes son
correctos. Si un error importante es
realizado, sólo la última iteración
necesita ser descartada.
Un enfoque cíclico para el
crecimiento incremental del
grado de definición e
implementación de un
sistema, mientras que
disminuye su grado de riesgo.
Un conjunto de puntos de
fijación para asegurar el
compromiso del usuario con
soluciones.
Modelos de Desarrollo de Software
Análisis
Para el desarrollo de software utilizaría preferiblemente el
Modelo de Construcción de Prototipos, ya que con este
modelo podremos saber de manera mas precisa el producto
que necesita el cliente y al obtener la retroalimentación dada
por este, se mejorara el software de tal manera que el cliente
quede totalmente satisfecho con el producto final.
De igual manera también trabajaría con el Modelo
Incremental, por la posibilidad de crear software mas
complejos y por el hecho de trabajar en sub-categorías que
mejoraran el funcionamiento de las mismas.
Radel Fuentes
C.I.: 20503510
Hinweis der Redaktion
Los alumnos se deben familiarizar con los siguientes principios básicos de Visio antes de realizar el curso: cómo acercar y alejar, agregar formas a la página, mover formas arrastrando el mouse y conectar formas.
[Notas para el instructor:
Para obtener más detalles sobre la personalización de esta plantilla, vea la última diapositiva. Además, puede buscar texto adicional sobre las lecciones en el panel de notas de algunas diapositivas.
Dado que esta presentación contiene animaciones en Macromedia Flash, al guardar la plantilla puede que aparezca un mensaje de advertencia relativo a la información personal. A menos que agregue información a las propiedades del propio archivo Flash, esta advertencia no se aplica a esta presentación. Haga clic en Aceptar en el mensaje.]
Entre los ejemplos de tipos de diagramas, se incluyen los diagramas de flujo, los organigramas, los mapas de carreteras, los calendarios de proyecto y los diseños de oficinas.
Ejemplos de formas con detalles Las formas pueden representar las calles y los edificios de un mapa. Pueden representar simbólicamente el equipo informático de un diagrama de red. Incluso hay formas de mobiliario para planos de plantas de oficina. ¿Parece exagerado? Pues hay muchísimas más.
La imagen muestra algunos ejemplos de formas 1D.
Ejemplo de conexión de dos formas: en un diagrama de procesos de negocio, puede conectar dos departamentos con una línea o una flecha.
Lo siguiente: formas 2D.
Las formas que se muestran en esta imagen son todas ellas formas 2D.
Muchas formas 2D también tienen un controlador de rotación verde.
Para muchas personas, “1D” describe una forma con una dimensión y “2D”, una forma con dos dimensiones. Estas son definiciones familiares de 1D y 2D. Sin embargo, como puede ver en estos ejemplos, las definiciones de Visio dependen del comportamiento de las formas, no de su aspecto.
Sugerencia: los controladores no son el único indicio de que una forma tenga un comportamiento interactivo especial. Pueden encontrarse algunos comportamientos especiales haciendo clic con el botón secundario en ella.