modelos de desarrollo de sistemas -...
Post on 21-Sep-2018
224 Views
Preview:
TRANSCRIPT
Modelos de desarrollo de sistemas
Contenido
Modelos
Ciclo de vida clásico
Prototipos
Iterativos
En Espiral
Evolutivos
Desarrollo incremental
Metodologías
Estructuradas
Orientadas a objetos
Ágiles
Ciclo de Vida Clásico Propuesta Senn, 1992
Ciclo de vida clásico Propuesta Kendall & Kendall, 1997
Ciclo de Vida Clásico
Denominado "modelo en cascada"
Se basa en intentar hacer las cosas bien desde el
principio, de una vez y para siempre.
Exige una aproximación secuencial al proceso de
desarrollo del software.
Ciclo de Vida Clásico
Inconvenientes:
Los proyectos reales raramente siguen el flujo secuencial de
actividades que propone este modelo.
Es difícil para el cliente establecer explícitamente todos los
requisitos al comienzo del proyecto.
No habrá disponible una versión operativa del sistema hasta
llegar a las etapas finales del proyecto, por lo que la rectificación
cualquier decisión tomada erróneamente en las etapas iniciales
del proyecto supondrá un costo adicional significativo, tanto
económico como en tiempo.
Ciclo de vida clásico
Prototipos Identificación de
requerimientos básicos
Desarrollo de prototipo
Uso del prototipo
Revisión y mejora del prototipo
Prototipo Operacional Sí
No
¿El usuario está
satisfecho?
Paso 1
Paso 2
Paso 3
Paso 4
Prototipos
1. Identificar los requerimientos básicos del usuario.
2. Desarrollar un prototipo inicial
3. Usar el prototipo
4. Revisar y mejorar el prototipo y regresar al paso 3 hasta
que el usuario esté conforme con el resultado.
Modelos iterativos
Los modelos iterativos descomponen un proyecto de
desarrollo en una serie de subproyectos de menor alcance.
Estos subproyectos deben diseñarse de tal forma que cada
uno de ellos aporte una funcionalidad nueva para el sistema
desde el punto de vista del usuario final del mismo.
Modelos iterativos
Modelos iterativos
Permiten adelantar el momento en el que se determina si un
proyecto es técnicamente viable o no.
Promueven una mejor comunicación con el usuario/cliente,
ya que dispone versión operativa temprana del sistema,
aunque sea con funcionalidad reducida.
Las versiones intermedias del producto ayudan a la
eliminación de malentendidos que pueden surgir en la etapa
de definición de requerimientos.
Ayudan a que el usuario se forme una idea más clara de lo
que realmente necesita.
Modelo en espiral (Modelo iterativo)
Propuesto por Boehm (1998) hace énfasis en la prevención
de riesgos.
Cuatro actividades principales:
planificación (determinar los objetivos, alternativas y
restricciones del proyecto),
análisis de riesgos (análisis de alternativas e
identificación/resolución de riesgos),
ingeniería (desarrollo del producto) y
evaluación (revisión por parte del cliente y valoración de los
resultados obtenidos de cara a la siguiente iteración).
Modelo en espiral (Modelo iterativo)
Modelo evolutivo (Modelo iterativo)
Se caracterizan por realizar entregas por etapas del
sistema.
El proyecto se descompone en iteraciones de periodos
fijos y cada iteración proporciona alguna funcionalidad del
sistema.
Cada ciclo se concentra en las funciones de mayor valor
añadido.
Si se cancelase el proyecto, el usuario obtendrá lo máximo que se
puede conseguir con los recursos invertidos hasta ese momento.
De la misma manera, se puede prorrogar el proyecto si se
considera interesante seguir añadiéndole funcionalidades.
Modelo evolutivo (Modelo iterativo)
Con este modelo, el software evoluciona con el tiempo,
asume que los requerimientos no son completamente
conocidos al inicio del proyecto, así que los requerimientos
que son bien comprendidos son seleccionados para el primer
incremento.
Modelo evolutivo (Modelo iterativo)
El sistema es desarrollado, los usuarios lo usan, y proveen
retroalimentación a los desarrolladores. Basada en esta
retroalimentación, la especificación de requerimientos es
actualizada, y una segunda versión del producto es
desarrollada y probada. El proceso se repite indefinidamente.
El desarrollo de software en forma evolutiva requiere un
especial cuidado en la manipulación de documentos,
programas, datos de prueba, etc. desarrollados para distintas
versiones del software. Cada paso debe ser registrado, la
documentación debe ser recuperada con facilidad, los
cambios deben ser efectuados de una manera controlada.
Modelo de Desarrollo Incremental (Modelo iterativo)
Se basa en diseñar sistemas que puedan entregarse por piezas.
A partir de la evaluación, se planea el siguiente incremento y
así sucesivamente, por lo que es iterativo por naturaleza.
En lugar de una sola entrega, el desarrollo y la entrega están
fracturados bajo incrementos, con cada incremento se
entrega parte de la funcionalidad requerida por el usuario.
Modelo de Desarrollo Incremental (Modelo iterativo)
Modelo de Desarrollo Incremental (Modelo iterativo)
Considera un proceso de construcción siempre incrementando subconjuntos de requerimientos del sistema, presupone que el conjunto completo de requerimientos es conocido al comenzar.
Las partes funcionales, pequeñas y reutilizables, son incrementos.
Cada incremento se construye sobre aquel que ya fue entregado.
Al ir desarrollando las funcionalidades, es más fácil determinar si los requerimientos planeados para los niveles subsiguientes son correctos.
Ejercicio en clase
Hacer un cuadro con las actividades principales
que existen en los modelos.
Metodologías
Una metodología puede seguir uno o varios
modelos de ciclo de vida, es decir, el ciclo de vida
indica qué es lo que hay que obtener a lo largo del
desarrollo del proyecto pero no cómo hacerlo.
Mientras que una metodología indica cómo hay
que obtener los distintos productos parciales y
finales.
Metodologías
Adicionalmente una metodología debe
definir con precisión los instrumentos, roles
y actividades involucrados, junto con
prácticas y técnicas recomendadas, guías de
adaptación de la metodología al proyecto,
guías para uso de herramientas de apoyo,
etc.
Metodologías
Clasificación:
Metodologías Estructuradas
Metodologías Orientadas a Objetos
Metodologías Ágiles: están orientadas a la generación
de código con ciclos muy cortos de desarrollo, se
dirigen a equipos de desarrollo pequeños, hacen
especial hincapié en aspectos humanos asociados al
trabajo en equipo e involucran activamente al cliente
en el proceso.
Diferencias entre metodologías Metodología Ágil Metodología Tradicional
Pocos Artefactos. El modelado es
prescindible, modelos desechables.
Más Artefactos. El modelado es esencial,
mantenimiento de modelos
Pocos Roles, más genéricos y flexibles Más Roles, más específicos
No existe un contrato tradicional, debe ser
bastante flexible
Existe un contrato prefijado
Cliente es parte del equipo de desarrollo
(además in-situ)
El cliente interactúa con el equipo de
desarrollo mediante reuniones
Orientada a proyectos pequeños. Corta
duración (o entregas frecuentes), equipos
pequeños (< 10 integrantes) y trabajando
en el mismo sitio
Aplicables a proyectos de cualquier
tamaño, pero suelen ser especialmente
efectivas/usadas en proyectos grandes y
con equipos posiblemente dispersos
La arquitectura se va definiendo y
mejorando a lo largo del proyecto
Se promueve que la arquitectura se
defina tempranamente en el proyecto
Énfasis en los aspectos humanos: el
individuo y el trabajo en equipo
Énfasis en la definición del proceso: roles,
actividades y artefactos
Basadas en heurísticas provenientes de
prácticas de producción de código
Basadas en normas provenientes de
estándares seguidos por el entorno de
desarrollo
Se esperan cambios durante el proyecto Se espera que no ocurran cambios de
gran impacto durante el proyecto
Metodologías Ágiles Adaptive Software Development (ASD).
Agile Unified Process (AUP).
Crystal Methologies (Crystal Clear, Crystal Orange, Crystal Orange Web)
Essential Unified Process (EssUP).
Feature Driven Development (FDD).
Lean Software Development (LSD).
Open Unified Process (OpenUP).
Rational Unified Process (RUP).
Kanban
Método de desarrollo de sistemas dinámicos (DSDM).
Scrum.
Programación Extrema (XP).
Tarea
Identificar de la metodología:
Ciclo de vida.
Elementos y artefactos necesarios para el desarrollo de
aplicaciones.
Roles y responsabilidades (Actividades)
Ejemplos de utilización.
Alcance y ámbito de uso.
Características adicionales.
Conclusiones.
top related