Este documento presenta una comparación de varias metodologías de desarrollo de software, incluyendo Desarrollo en Cascada, Incremental, Evolutivo, en Espiral y Basado en Prototipos. Explica las ventajas y desventajas de cada metodología, así como consideraciones clave para seleccionar la metodología apropiada para cada proyecto. También introduce conceptos más modernos como Ingeniería Web y Proceso Unificado.
1. 15/09/2014
Metodologías de Desarrollo
Presentado por:
o Brenda Soledad Velázquez Jiménez
o Iván Sánchez Cervantes
2. 15/09/2014
INTRODUCCIÓN
¿Qué significa la metodología de desarrollo?
- Se trata de seguir ciertas pautas predefinidas para lograr
terminar un software de calidad; es decir, llevar un
comportamiento metódico.
3. 15/09/2014
INTRODUCCIÓN
¿Qué cosas dicen
niños?... Yo solo
programo, ese es
mi único paso.
¡¡Ese sistema esta bien
padre!! ¿Qué pasos
siguió para hacerlo?
¿Cuántos de los programadores modernos, antes de comenzar
a escribir código de un sistema, se dedican a diseñar antes el
mismo? ¿A realizar la documentación de los requerimientos? ¿A
pensar en los diagramas UML? ¿Cuántos?
4. 15/09/2014
METODOLOGÍAS CLÁSICAS
Hay una serie de metodologías
considerados como tradicionales o
clásicas. Algunos lo consideran un
tanto burocráticas, y con mucha
ambiguedad; y no es para más. Estas
metodologías «Clásicas» fueron
creados por los años 70’s-80’s
pensando en los negocios de los 50’s.
No hay de otra que reconocer que la
mayor parte de estas metodologías
ya no funcionan para proyectos muy
innovadores.
Desarrollo en Cascada
Desarrollo Incremental
Desarrollo Evolutivo
Desarrollo en Espiral
Basado en Prototipos
Basado en componentes
5. 15/09/2014
METODOLOGIAS CLÁSICAS
Las metodologías surgidas en los años 90 a la actualidad son las que responden
a las necesidades modernas. Varios especialistas llaman a estas metodologías
«ágiles»… entonces,
¿Cómo saber que metodología usar y quien lo debe elegir?
La mayoría de las veces, el trabajo es en equipo,
siendo así, se tiene que hacer un estudio de las
metodologías sin dejar fuera a las clásicas (por
muy engorroso que sea). De esta forma se
deben tener las siguientes consideraciones:
6. 15/09/2014
METODOLOGÍAS CLÁSICAS
- Si eres el que tiene el puesto con mayor
responsabilidad, decide ya.
- Si no tienes un puesto de alta responsabilidad, y el
que sí lo tiene no toma una metodología, el proyecto
está destinado al fracaso.
- Cuando se forma parte de un pequeño equipo de
trabajo, lo mejor es conversar sobre cuál será la
metodología correcta a aplicar, incluso puede llegar el
momento en que se tomen ideas de diferentes
metodologías.
7. 15/09/2014
- Desarrollo en Cascada
Enfoque metodológico que ordena rigurosamente el proceso de desarrollo de
software. De manera general la metodología sería la siguiente:
Ingeniería de
Requisitos
Análisis
Requerimientos del sistema
Requerimientos del Software
Diseño
Diseño Preliminar y detallado
Implementación
Codificación y depuración
Pruebas y
Mantenimiento
Test y pruebas previas a la
implantación
8. 15/09/2014
- Desarrollo en Cascada
Ventajas:
o Es un modelo sencillo y disciplinado.
o Es fácil aprender a utilizarlo y comprender su
funcionamiento.
o Ha sido muy usado y, por tanto, está ampliamente
contrastado.
9. 15/09/2014
- Desarrollo en Cascada
Desventajas:
o Los proyectos raramente siguen el proceso lineal tal
como se definía originalmente el ciclo de vida.
o Es difícil que el cliente exponga explícitamente
todos los requisitos al principio.
o Puede resultar complicado regresar a etapas
anteriores (ya acabadas) para realizar correcciones.
o El producto final obtenido puede que no refleje
todos los requisitos del usuario.
10. 15/09/2014
- Desarrollo Incremental
Por supuesto, en esta metodología también se emplea el ciclo de vida del
software.
Requerimi
entos
Análisis Diseño
Implemen
tación
Pruebas
Requerimi
entos
Análisis Diseño
Implemen
tación
Pruebas
Requerimi
entos
Análisis Diseño
Implemen
tación
Pruebas
Incremento 1
Incremento 2
Incremento 3
Entrega del
Incremento 1
Entrega del
Incremento 2
Entrega del
Incremento 3
Tiempo en el calendario
11. 15/09/2014
- Desarrollo Incremental
Ventajas:
o Impacto ventajoso frente al cliente, que es la entrega
temprana de partes operativas del Software.
o El usuario de involucra más.
o Permite entregar al cliente un producto más rápido
en comparación del modelo de cascada.
o Resulta más sencillo acomodar cambios al acotar el
tamaño de los incrementos.
12. 15/09/2014
- Desarrollo Incremental
Desventajas:
o Los errores en los requisitos se detectan tarde.
o Difícil de evaluar el costo total.
o 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.
o Requiere de mucha planeación, tanto administrativa
como técnica.
13. 15/09/2014
- Desarrollo Evolutivo
El desarrollo evolutivo busca reemplazar el viejo sistema con uno nuevo que
tendría la propiedad de satisfacer los nuevos requerimientos lo más rápido
posible. El desarrollo evolutivo asume que los requerimientos están sujetos a
cambios continuos y que la estrategia para enfrentar aquello pasa por un
reflejo, también continuo de aquellos cambios.
Existen dos tipos de desarrollo evolutivo:
o Desarrollo Exploratorio.
o Prototipos Desechables.
14. 15/09/2014
- Desarrollo Evolutivo
Especificación Inicial
Desarrollo del
Producto
Implementación, uso y
evaluación
Re-specificación
Definición del problema y especificación inicial
en base a los requerimientos definidos.
Definición del software en base a un proceso
con énfasis en la rapidez de la liberación.
Implantación y uso del software en ambiente
de explotación, monitoreo de los nuevos
requerimientos
Versiones del Software
Redefinición del problema en base a los nuevos
requerimientos.
15. 15/09/2014
- Desarrollo en Espiral
Los principios básicos son:
La atención se centra en la evaluación y reducción del riesgo del proyecto
dividiendo el proyecto en segmentos más pequeños y proporcionar más
facilidad de cambio durante el proceso de desarrollo, así como ofrecer la
oportunidad de evaluar los riesgos y con un peso de la consideración de la
continuación del proyecto durante todo el ciclo de vida.
16. 15/09/2014
- Desarrollo en Espiral
Cada viaje alrededor de la espiral atraviesa cuatro cuadrantes básicos: (1)
determinar objetivos, alternativas, y desencadenantes de la iteración; (2)
Evaluar alternativas; Identificar y resolver los riesgos; (3) desarrollar y
verificar los resultados de la iteración, y (4) plan de la próxima iteración.
Cada ciclo comienza con la identificación de los interesados y sus
condiciones de ganancia, y termina con la revisión y examinación.
17. 15/09/2014
- Desarrollo en Espiral
En términos generales, el modelo en espiral se representa como sigue:
Análisis de Riesgos Objetivos
Desarrollar y Probar Planificación
18. 15/09/2014
- Desarrollo en Espiral
Entendiendo que el
desarrollo en espiral
es un modelo del
ciclo de vida del
software, la figura
anterior se vería así:
19. 15/09/2014
- Desarrollo en Espiral
Ventajas:
o Reduce riesgos del proyecto
o Incorpora objetivos de calidad
o Integra el desarrollo con el mantenimiento
20. 15/09/2014
- Desarrollo en Espiral
Desventajas:
o Genera mucho tiempo en el desarrollo del
sistema
o Modelo costoso
o Requiere experiencia en la identificación de
riesgos
21. 15/09/2014
- Desarrollo en Espiral
Inconvenientes:
Planificar un proyecto con esta metodología es a menudo imposible, debido a
la incertidumbre en el número de iteraciones que serán necesarias. En este
contexto la evaluación de riesgos es de la mayor importancia y, para grandes
proyectos, dicha evaluación requiere la intervención de profesionales de gran
experiencia.
22. 15/09/2014
- Desarrollo de Prototipos
Pertenece a los modelos de desarrollo evolutivo. Pone
énfasis en la etapa de especificación de
requerimientos a través de la construcción de
prototipos que aproximan al usuario a la idea final del
sistema.
En palabras más sencillas: «Es un conjunto
estandarizado de actividades dedicada al desarrollo de
versiones incompletas a desarrollar.»
En la parte derecha de la diapositiva se listan las
etapas.
Plan Rápido
Diseño Rápido
Construcción del prototipo
Desarrollo, entrega y
retroalimentación
Comunicación
23. 15/09/2014
- Desarrollo de Prototipos
Esquema de la Metodología de Prototipos
Usuario Define su Requerimiento
Construye Prototipo
Sirve
Construcción,
Implementación
No
Sí
Analista
24. 15/09/2014
- Desarrollo de Prototipos
Ventajas:
o Este modelo es útil cuando el cliente conoce
los objetivos generales para el software.
o Ofrece un mejor enfoque cuando el
responsable del desarrollo del software está
inseguro de la eficacia de un algoritmo, de
la adaptabilidad de un sistema operativo o
de la forma que debería tomar la
interacción humano-máquina.
25. 15/09/2014
- Desarrollo de Prototipos
Desventajas:
o El usuario tiende a crearse unas
expectativas cuando ve el prototipo de cara
al sistema final. A causa de la intención de
crear un prototipo de forma rápida, se
suelen desatender aspectos importantes,
tales como la calidad y el mantenimiento a
largo plazo, lo que obliga en la mayor parte
de los casos a reconstruirlo una vez que el
prototipo ha cumplido su función.
26. 15/09/2014
- Desarrollo Basado en Componentes
o La complejidad de los sistemas computacionales actuales nos ha llevado a
buscar la reutilización del software existente.
o En esencia, un componente es una pieza de código pre elaborado que
encapsula alguna funcionalidad expuesta a través de interfaces estándar.
o El paradigma de ensamblar componentes y escribir código para hacer que
estos componentes funcionen se conoce como Desarrollo de Software
Basado en Componentes.
27. 15/09/2014
- Desarrollo Basado en Componentes
El uso de este paradigma posee algunas ventajas:
Reutilización del software.
Simplifica las pruebas.
Simplifica el mantenimiento del sistema.
Mayor calidad.
De la misma manera, el optar por comprar componentes de terceros
en lugar de desarrollarlos, posee algunas ventajas:
Ciclos de desarrollo más cortos.
Mejor ROI.
Funcionalidad mejorada.
28. 15/09/2014
OTRAS METODOLOGÍAS
A partir de los años noventa surgieron nuevas metodologías, algunos las
llaman «Metodologías Modernas».
A decir verdad, las ideas que se expondrán resultan ser las más
aceptadas y valoradas por los programadores modernos; tal vez sea por
la combinación de las ideas tradicionales con las actuales.
29. 15/09/2014
- Ganar-Ganar (Win & Win)
Este Modelo sugiere la comunicación con el cliente para
fijar los requisitos, en que simplemente se pregunta al
cliente qué necesita y él proporciona la información para
continuar; pero esto es en un contexto ideal que rara vez
ocurre. Normalmente cliente y desarrollador entran en
una negociación, se negocia coste frente a funcionalidad,
rendimiento, calidad, etc.
«Es así que la obtención de requisitos requiere una negociación, que tiene éxito
cuando ambas partes ganan».
30. 15/09/2014
- Proceso Unificado
El Proceso Unificado es un marco de desarrollo de software que se
caracteriza por estar dirigido por casos de uso, centrado en la
arquitectura y por ser iterativo e incremental.
Inicio Elaboración
Transición
Construcción
Producción
31. 15/09/2014
- Ingeniería Web
¿Qué es la ingeniería web? Es el proceso
utilizado para crear, implantar y mantener
aplicaciones y sistemas web de alta calidad.
La ingeniería de la Web no es un clon o subconjunto de la ingeniería de
software aunque ambas incluyen desarrollo de software y programación,
pues a pesar de que la ingeniería de la Web utiliza principios de ingeniería de
software, incluye nuevos enfoques, metodologías, herramientas, técnicas,
guías y patrones para cubrir los requisitos únicos de las aplicaciones web.
32. 15/09/2014
- Ingeniería Web
De manera general, las etapas con las que cuenta la Ingeniería de Software son
las siguientes: Formulación, Planificación, Análisis, Modelización, generación
de páginas, el Test, Evaluación del cliente.
Formulación.- Identifica objetivos y
establece el alcance de la primera
entrega.
33. 15/09/2014
- Ingeniería Web
Planificación. Genera la estimación
del coste general del proyecto, la
evaluación de riesgos y el calendario
del desarrollo y fechas de entrega.
Análisis. Especifica los requerimientos
e identifica el contenido.
34. 15/09/2014
- Ingeniería Web
Modelización. Se compone de dos secuencias paralelas de tareas. Una
consiste en el diseño y producción del contenido que forma parte de la
aplicación. La otra, en el diseño de la arquitectura, navegación e interfaz de
usuario. Es conveniente resaltar la importancia del diseño de la interfaz.
Independientemente del valor del contenido y servicios prestados, una
buena interfaz mejora la percepción que el usuario tiene de estos.
35. 15/09/2014
- Ingeniería Web
Generación de páginas. Se integra contenido,
arquitectura, navegación e interfaz para crear
estática o dinámicamente el aspecto más visible de
las aplicaciones, las páginas.
El Test. Busca errores a todos los niveles: contenido,
funcional, navegacional, rendimiento, etc. El hecho
de que las aplicaciones residan en la red, y que inter-operen
en plataformas muy distintas, hace que el
proceso de test sea especialmente difícil.
36. 15/09/2014
- Ingeniería Web
Evaluación del cliente. El resultado
final es sometido a la evaluación del
cliente y aceptación por el mismo.
37. 15/09/2014
- Metodologías Ágiles
Por lo pronto, surgen metodologías a petición de las problemas actuales,
tomando algunas de las ideas de las metodologías tradicionales.
38. 15/09/2014
- Metodologías Ágiles
Como resultado de esta nueva teoría se crea un Manifiesto Ágil cuyas
principales ideas son:
o Los individuos y las interacciones entre ellos son más importantes que
las herramientas y los procesos empleados.
o Es más importante crear un producto software que funcione que escribir
documentación exhaustiva.
o La colaboración con el cliente debe prevalecer sobre la negociación de
contratos.
o La capacidad de respuesta ante un cambio es más importante que el
seguimiento estricto de un plan.
39. 15/09/2014
- Metodologías Ágiles
Entre los principales métodos ágiles tenemos las siguientes:
o El XP (Extreme Programming).
o Scrum.
o Iconix.
o Cristal Methods.
o AUP, entre otros.
40. 15/09/2014
- Metodologías Ágiles
Extreme Programming (XP).
Es la más destacada de los procesos agiles de desarrollo de software
formulada por Kent Beck.
Los defensores de XP consideran que los cambios de requisitos sobre la
marcha son un aspecto natural, inevitable e incluso deseable del desarrollo
de proyectos.
41. 15/09/2014
- Metodologías Ágiles
Desarrollo
iterativo
incremental
XP
Programación
por parejas
Frecuente
interacción
Corrección
Simplicidad en
el código
Propiedad del
código
compartido
42. 15/09/2014
- Metodologías Ágiles
Ventajas:
o Apropiado para entornos volátiles.
o Planificación más transparente para nuestros clientes,
conocen las fechas de entrega de funcionalidades.
Vital para su negocio.
o Permitirá definir en cada iteración cuales son los
objetivos de la siguiente
o Permite tener realimentación de los usuarios muy útil.
o La presión está a lo largo de todo el proyecto y no en
una entrega final.
43. 15/09/2014
- Metodologías Ágiles
Desventajas
o Delimitar el alcance del proyecto con
nuestro cliente
o Para mitigar esta desventaja se
plantea definir un alcance a alto nivel
basado en la experiencia.
44. 15/09/2014
- Metodologías Ágiles
Iconix:
El proceso ICONIX se define como un proceso de desarrollo de software práctico.
Está entre la complejidad de RUP y la simplicidad y pragmatismo de XP, sin
eliminar las tareas de análisis y diseño que XP no contempla.
Es un proceso simplificado en comparación con otros procesos más tradicionales.
ICONIX presenta claramente las actividades de cada fase y exhibe una secuencia
de pasos que deben ser seguidos. Además, está adaptado a patrones y ofrece el
soporte UML, dirigido por Casos de Uso y es un proceso iterativo e incremental.
45. 15/09/2014
- Metodologías Ágiles
Características de Iconix.
o Iterativo e incremental: varias interacciones ocurren entre el modelo del
dominio y la identificación de los casos de uso. El modelo estático es
incrementalmente refinado por los modelos dinámicos.
o Trazabilidad: cada paso está referenciado por algún requisito. Se define la
trazabilidad como la capacidad de seguir una relación entre los diferentes
artefactos producidos.
o Dinámica del UML: la metodología ofrece un uso dinámico del UML como
los diagramas del caso de uso, diagramas de secuencia y de colaboración.
46. 15/09/2014
REINGENIERÍA
¿Qué es?
Considere cualquier producto tecnológico que le haya servido bien. Usted lo
utiliza regularmente, pero se está volviendo obsoleto. Se rompe con
frecuencia, su reparación toma más tiempo del que usted quisiera, y ya no
representa más la nueva tecnología. ¿Qué hacer?
- Si el producto es hardware.
- Si el producto es software.
47. 15/09/2014
REINGENIERÍA
¿Quién la hace?
En el ámbito de las organizaciones, la reingeniería lo llevan a cabo especialistas
en negocios (con frecuencias compañías consultoras). En el ámbito del software
la reingeniería la realizan los ingenieros de software.
48. 15/09/2014
REINGENIERÍA
¿Por qué es importante?
Se vive en un mundo en cambio constante. Las demandas acerca de las
funciones de negocios y la tecnología de la información que las soportan están
cambiando a un ritmo que impone una enorme presión competitiva en las
organizaciones comerciales.
49. 15/09/2014
REINGENIERÍA
¿Cuáles son los pasos?
El proceso de reingeniería de software incluye análisis
de inventarios, ingeniería inversa, reestructuración de
programas y datos, e ingeniería avanzada. La finalidad
de estas actividades es crear versiones de programas
existentes que muestren mayor calidad y mejor
facilidad de mantenimiento.
La reingeniería es una actividad de reconstrucción, y la
reingeniería de los sistemas de información se
comprende mejor si se considera una actividad
análoga: la reconstrucción de una casa en otro estado.
50. 15/09/2014
REINGENIERÍA
Análisis de
Inventarios
Reestructuración de
documentos
Ingeniería
Inversa
Reestructuración
de código
Reestructuración
de datos
Ingeniería
directa
La reingeniería de
software consta de
seis actividades.
51. 15/09/2014
REINGENIERÍA
1. Análisis de Inventarios.
Las organizaciones de software deberían
tener un inventario de todas sus
aplicaciones. El inventario tal vez no sea
más que un modelo en una hoja de
cálculo que contenga información que
proporcione una descripción detallada
de las aplicaciones activas.
52. 15/09/2014
REINGENIERÍA
2. Reestructuración de documentos.
La documentación débil es la marca de muchos sistemas
heredados.
3. Ingeniería Inversa.
Ayudar a los ingenieros de software a comprender la
estructura de diseño interno de los programas complejos.
Herramientas representativas. Imagix 4D, desarrollado por
Imagix (www.imagix.com).
JdGui es otra herramienta para estos usos.
53. 15/09/2014
REINGENIERÍA
4. Reestructuración de código.
El objetivo de las herramientas de reestructuración es transformar el antiguo
software de computadoras carente de estructura en lenguajes de programación
y estructuras de diseño modernos.
Mecánica. En general, el código fuente se ingresa y transforma en un mejor
programa estructurado.
Herramientas representativas.
DMS Software Reengineering Toolkit, desarrollada por Semantic Design.
Function EncapsulationTool, desarrollada en la Wayne State University.
54. 15/09/2014
REINGENIERÍA
5. Reestructuración de datos.
Esta actividad a veces se denomina análisis de datos.
Antes de comenzar la reestructuración de datos se debe llevar a cabo una
actividad de ingeniería inversa denominada análisis del código fuente.
Una vez completado el análisis de datos comienza el rediseño de datos.
55. 15/09/2014
REINGENIERÍA
6. Ingeniería directa.
También llamada renovación o reclamación, no solo recupera la
información de diseño a partir del software existente, también utiliza esta
información para alterar o reconstruir el sistema existente con la finalidad
de mejorar su calidad global. En la mayoría de los casos el software
sometido a reingeniería vuelve a implementar la función del sistema
existente y también añade nuevas funciones o mejora el desempeño
global.
56. 15/09/2014
Fuentes Bibliográficas
http://wiki.monagas.udo.edu.ve/index.php/Metodolog%C
3%ADas_para_el_desarrollo_de_software
http://profvanessaborjas.wordpress.com/2012/05/10/meto
dologia-de-desarrollo-de-software/
http://fgaith2.blogspot.mx/
http://ithjlmvu2.blogspot.mx/
http://msdn.microsoft.com/es-es/library/bb972268.aspx
Ian Sommerville, Ingeniería de Software, Pág. 10.
http://ingenieriadesoftware.mex.tl/59189_Metodologia-
Crystal.html
Ingeniería de Software, un enfoque práctico, Roger
Pressman, 6ta Ed., Pág. 902-9224