SlideShare una empresa de Scribd logo
1 de 42
Ciclos de Vida del Software
Temas a tratar en esta presentación:
• ¿Qué es un ciclo de vida del SW?
• Fases de un Ciclo de Vida
• ¿Qué es una Metodología?
• Metodologías prescriptivas y sus modelos
• Metodologías ágiles y sus modelos
• Comparación entre metodologías
• Juego
Ciclo de Vida
La Norma 12207 de ISO lo define como: “ Un marco de
referencia que contiene las actividades y las tares
involucradas en el desarrollo, la explotación y el
mantenimiento de un producto sw, abarcando desde la
definición hasta la finalización de su uso ”
La IEEE 1074 lo define como: “ Una aproximación lógica a
la adquisición, el suministro, el desarrollo, la explotación y
el mantenimiento del software ”
Ciclo de Vida
Características
• Describe las fases principales de desarrollo de software.
• Define las fases primarias esperadas de ser ejecutadas durante
esas fases.
• Ayuda a administrar el progreso del desarrollo, y
• Provee un espacio de trabajo para la definición de un detallado
proceso de desarrollo de software.
Fases del Ciclo de Vida
Definición de Necesidades
• En esta etapa, los servicios, restricciones y objetivos del sistema se establecen
consultando con los usuarios.
• Una vez acordados deben definirse de una manera comprensible tanto para los
usuarios como para el personal de desarrollo.
Estudio de factibilidad:
- Alcances
- Restricciones sobre el sistema,
- además de un modelo lógico de alto nivel del sistema actual (si existe).
Tipos de factibilidades:
• Factibilidad técnica:
Si existe o está al alcance la tecnología necesaria para el sistema.
• Factibilidad económica:
Relación costo beneficio.
• Factibilidad operacional u organizacional:
Si el sistema puede funcionar en la organización
Análisis
• El proceso de recolección de los requisitos se centra
especialmente para el software.
• La información recopilada y requisitos, tanto del sistema como del
software se documentan y se revisan con el usuario.
Objetivo del Análisis del problema:
Diseño
• Partiendo de su definición, las necesidades se dividen en
sistema de hardware y sistema de software. A este proceso
se le llama diseño de sistemas.
• El diseño del software es el proceso de representar las
funciones de cada sistema de software a fin de poderlo
transformar con facilidad en uno o más programas de
computadora.
Codificación
• El diseño debe traducirse a una forma legible para la máquina a
través de un lenguaje de programación.
• Si el diseño se realiza de forma detallada, la codificación puede ser
mecánica, puesto que ya todo está previsto.
Pruebas / Validación
• En esta etapa, las unidades de programa individuales o los
programas se integran y prueban como un solo sistema completo,
para asegurar que se cubren las necesidades del software.
• Después de las prueba del sistema, el software se envía al usuario
o cliente.
Mantenimiento y Evolución
• Esta fase suele ser, aunque no necesariamente, la más larga y
costosa del ciclo de vida.
• Se instala el sistema y se pone en uso práctico.
• La actividad de mantenimiento implica corregir, adaptar y
perfeccionar los servicios de éste a medida
que de perciben nuevas necesidades.
METODOLOGÍA CICLO DE VIDA
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.
La metodología indica cómo hay que
obtener los distintos productos parciales y
finales
En las dos últimas décadas las notaciones de modelado y
posteriormente las herramientas pretendieron ser las "balas de
plata" para el éxito en el desarrollo de software, sin embargo, las
expectativas no fueron satisfechas. Esto se debe en gran parte a
que otro importante elemento, la metodología de desarrollo, había
sido postergado.
Desarrollo Convencional (Sin Metodología)
• No hay forma de controlar lo que está sucediendo en el Proyecto
• Los cambios organizativos afectan negativamente al proceso de
desarrollo
• Los resultados finales son impredecibles
Metodologías
Que son?:
Modo sistemático de
realizar, gestionar y
administrar un proyecto
para llevarlo a cabo con
altas probabilidades de
éxito.
Una metodología define:
• Estados, etapas o fases de un desarrollo, junto con los criterios de
transición entre ellos.
• Tareas, actividades, etc.
• Roles, con sus skills necesarios y las interacciones entre ellos.
• Artefactos o entregables.
• Herramientas de control, seguimiento, medición y perfeccionamiento.
• Principios, criterios para tomar decisiones, estrategias para manejar
distintos tipos de situaciones, herramientas de manejo de riesgos, etc.
Utilizar una metodologías implica mejoras en los procesos de
desarrollo, en el producto y en la satisfacción del cliente.
Mejoras de los procesos de desarrollo
• Todos los integrantes del equipo del proyecto trabajan bajo un marco común.
• Estandarización de conceptos, actividades y nomenclatura.
• Actividades de desarrollo apoyadas por procedimientos y guías.
• Resultados de desarrollo predecibles.
• Uso de herramientas de ingeniería de software.
• Planificación de las actividades en base a un conjunto de
tareas definidas y a la experiencia en otros proyectos.
• Recopilación de mejores prácticas para proyectos futuros.
Mejoras de los productos
• Se asegura que los productos cumplen con los objetivos de calidad propuestos.
• Detención temprana de errores.
• Se garantiza la trazabilidad de los productos a lo largo del proceso de
desarrollo.
Mejoras en las relaciones con el cliente
• El cliente percibe el orden en los procesos.
• Facilita al cliente el seguimiento de evolución del proyecto.
• Se establecen mecanismos para asegurar que los productos
desarrollados cumplan con las expectativas del cliente.
Metodologías Prescriptivas o Tradicionales
•Mayor énfasis en la planificación y control del proyecto, en
especificación precisa de requisitos y modelado.
•Imponen una disciplina de trabajo sobre el proceso de desarrollo del
software, con el fin de conseguir un software más eficiente.
•Se centran especialmente en el control del proceso, mediante una
rigurosa definición de roles, actividades, artefactos, herramientas y
notaciones para el modelado y documentación detallada.
Modelos de Cascada
Puro • Se define como una
secuencia de fases en la
que al final de cada una de
ellas se reúne la
documentación para
garantizar que cumple las
especificaciones y los
requisitos antes de pasar a
la fase siguiente
• Admite iteraciones
• Después de cada etapa se
realiza una o varias
revisiones para comprobar
que se puede pasar a la
siguiente etapa
Evolutivos
Metodologías Ágiles (1990)
La definición moderna de desarrollo ágil de software evolucionó a mediados de
los años 1990 como parte de una reacción contra los métodos de "peso
pesado", muy estructurados y estrictos, extraídos del modelo de desarrollo en
cascada. El proceso originado del uso del modelo en cascada era visto como
burocrático, lento, degradante e inconsistente con las formas de desarrollo de
software que realmente realizaban un trabajo eficiente.
Manifiesto Ágil
Los individuos y la interacción por encima de los procesos y herramientas.
El software que funciona por encima de la documentación abarcadora.
La colaboración con el cliente por encima de la negociación contractual.
La respuesta al cambio por encima del seguimiento de un plan.
Aunque hay valor en los elementos a la derecha, valorizamos más los de la
izquierda.
http://agilemanifesto.org/
Metodologías Ágiles
Retrasar las decisiones y Planificación Adaptativa
Es el eje en cual gira la metodología ágil, el retrasar las decisiones tanto como
sea posible de manera responsable será ventajoso tanto para el cliente como
para la empresa, lo cual permite siempre mantener una satisfacción en el
cliente y por ende el éxito del producto, las principales ventajas de retrasar las
decisiones son:
•Reduce el número de decisiones de alta inversión que se toman.
•Reduce el número de cambios necesario en el proyecto.
•Reduce el coste del cambio
Extreme Programing (XP)
Es una de las metodologías de desarrollo de software más exitosas en la
actualidad utilizadas para proyectos de corto plazo, corto equipo y cuyo plazo de
entrega era ayer. La metodología consiste en una programación rápida o extrema,
cuya particularidad es tener como parte del equipo, al usuario final, pues es uno
de los requisitos para llegar al éxito del proyecto.
Scrum
Scrum es un modelo de referencia que define un conjunto de prácticas y roles, y
que puede tomarse como punto de partida para definir el proceso de desarrollo
que se ejecutará durante un proyecto.
Un principio clave de Scrum es el reconocimiento de que durante un proyecto los
clientes pueden cambiar de idea sobre lo que quieren y necesitan
Algunos ejemplos de Metodologías Ágiles
¿Prescriptivas o Ágiles?
¿Qué camino seguir?
Antes de definir el modelo de ciclo de vida de desarrollo para un proyecto
dentro del contexto señalado, hay que entender los fundamentos básicos, los
obstáculos y ventajas, antes de seguir un modelo determinado.
¿Qué camino seguir?
¿Cómo evaluar mi proceso de desarrollo?
¿Cómo identificar el conjunto de características que rodean mis desarrollos, e
impactan de manera significativa los resultados de mi equipo?
¿Cómo identificar el conjunto de prácticas adecuadas para
incluir en un nuevo modelo de ciclo de vida de desarrollo?
Una buena estrategia es evaluar los procesos frente a un
marco de referencia como puede ser CMMI en cada una de
sus áreas de proceso.
Algunas comparaciones a tener en cuenta:
Algunas comparaciones a tener en cuenta:
Prescriptivas Ciclo de Vida Ágiles
Algunas conclusiones
No existe una metodología universal para hacer frente con éxito a
cualquier proyecto de desarrollo de software. Toda metodología debe
ser adaptada al contexto del proyecto (recursos
técnicos y humanos, tiempo de desarrollo, tipo de sistema, etc)
Esperanza por las balas de plata:
Brooks: … Yo creo que lo difícil de hacer software es la especificación, diseño y
prueba de esta construcción conceptual….
Si esto es cierto, la construcción de software va a ser siempre dificil.
Inherentemente no hay balas de plata.
•La metodologías ágiles se deberían aplicar en proyectos donde exista
mucha incertidumbre, donde el entorno es volátil, cuando los requisitos no se
conocen con exactitud, mientras que las metodologías tradicionales obligan
al cliente a tomar las decisiones al inicio del proyecto
•Las metodologías ágiles permiten disminuir costos y brindar flexibilidad a los
proyectos de software donde la incertidumbre está presente (Retrasar las
decisiones y Planificación Adaptativa)
Algunas conclusiones
...en el futuro no va a haber mas metodologías prescriptivas
como lo fueron UP, procesos estilo CMMI o procesos ágiles
estilo XP, SCRUM y otros. En cambio, lo que va a haber es
una paleta de practicas. Las practicas van a venir
primero y las metodologías van a ser meras colecciones de
practicas que las organizaciones van
a escoger de la paleta...
Ivar H. Jacobson (2 de septiembre 1939, Ystad - ), es un ingeniero sueco en
Ciencias de la computación.
Inventó el diagrama de secuencia y desarrolló los diagramas de colaboración.
También impuso el uso de diagramas de estado de transición para describir los
flujos de mensajes entre los componentes. Fue uno de los desarrolladores
originales del SDL (lenguaje de especificación), que se convirtió en estándar en
1967.
1. ¿Qué es un ciclo de vida?
2. ¿Cuáles son las etapas del ciclo de vida?
3. ¿Cuál es la diferencia entre un ciclo de vida y una metodología?
4. ¿Qué características tiene un desarrollo sin metodologías?
5. ¿Qué define una metodología?
6. ¿Cuáles son algunas de las mejoras que obtenemos al aplicar una
metodología?
7. ¿Cuáles son las características de una metodología tradicional?¿Y de
una ágil?
8. ¿Cómo funciona un modelo prescriptivo en cascada?
9. ¿Qué metodologías ágiles existen?
10.¿Cuáles son las principales diferencias entre metodologías
prescriptivas y ágiles?
Preguntas
Se supone que se va desarrollar una aplicación relativa a la
gestión de pedidos de una empresa. En este caso el cliente
no tiene todavía muy claro qué es lo que quiere. Además,
el personal informático va a utilizar un tecnología que le
resulta completamente nueva. Discútase qué tipo de ciclo
de vida es más apropiado.
Indicar la(s) respuesta(s) correcta(s) y razonar la respuesta:
El ciclo de vida:
a)Comienza con una idea o necesidad que satisfacer y acaba con las
pruebas satisfactorias del producto.
b)No existe ningún estándar que describa sus procesos y actividades.
c)No se trata sólo de realizar el análisis, diseño, codificación y pruebas;
también incluye, entre otros, procesos de soporte.
d)El mantenimiento lo constituyen las actividades para mantener sin
cambios el sistema.
e)En la actividad de análisis de los requisitos software los desarrolladores
obtienen de los futuros usuarios los requisitos que piden al sistema

Más contenido relacionado

La actualidad más candente

La actualidad más candente (18)

Modelos de Ciclos de Vida
Modelos de Ciclos de VidaModelos de Ciclos de Vida
Modelos de Ciclos de Vida
 
Calidad de software
Calidad de softwareCalidad de software
Calidad de software
 
Ciclosdevidadelsoftware 120724112952-phpapp02gt
Ciclosdevidadelsoftware 120724112952-phpapp02gtCiclosdevidadelsoftware 120724112952-phpapp02gt
Ciclosdevidadelsoftware 120724112952-phpapp02gt
 
7iSF-1 ingeniería de software
7iSF-1   ingeniería de software7iSF-1   ingeniería de software
7iSF-1 ingeniería de software
 
Metodología Cascada
Metodología CascadaMetodología Cascada
Metodología Cascada
 
Ciclo De Vida
Ciclo De VidaCiclo De Vida
Ciclo De Vida
 
rup
ruprup
rup
 
Ciclo de Vida del Software
Ciclo de Vida del SoftwareCiclo de Vida del Software
Ciclo de Vida del Software
 
Unidad 2. metodologias de desarrollo de software tema1
Unidad 2. metodologias de desarrollo de software tema1Unidad 2. metodologias de desarrollo de software tema1
Unidad 2. metodologias de desarrollo de software tema1
 
Watch
WatchWatch
Watch
 
PROCESOS DE INGENIERIA DEL SW
PROCESOS DE INGENIERIA DEL SWPROCESOS DE INGENIERIA DEL SW
PROCESOS DE INGENIERIA DEL SW
 
Modelo xp para desarrollo de proyecto
Modelo xp para desarrollo de proyectoModelo xp para desarrollo de proyecto
Modelo xp para desarrollo de proyecto
 
Metodologia clasica en cascada
Metodologia clasica en cascadaMetodologia clasica en cascada
Metodologia clasica en cascada
 
metodologia
metodologia metodologia
metodologia
 
Modelos y capas de la ingenieria de software
Modelos y capas  de la ingenieria de softwareModelos y capas  de la ingenieria de software
Modelos y capas de la ingenieria de software
 
02 rup
02 rup02 rup
02 rup
 
Ciclo de vida
Ciclo de vidaCiclo de vida
Ciclo de vida
 
Rup (iteraciones)
Rup (iteraciones)Rup (iteraciones)
Rup (iteraciones)
 

Similar a Ciclos de vida y metodologías de desarrollo de software

Metodologia y prototipo
Metodologia y prototipoMetodologia y prototipo
Metodologia y prototipoArturo Jimenez
 
2.1 proyecto software
2.1 proyecto software2.1 proyecto software
2.1 proyecto softwaremigmol
 
metodologia agil.ppt
metodologia agil.pptmetodologia agil.ppt
metodologia agil.pptbrian roa
 
Gestión de proyectos
Gestión de proyectosGestión de proyectos
Gestión de proyectosaaahhhhaaa
 
15 Unidad 4. Aseguramiento de Calidad de Software QA, Evaluación del proyecto...
15 Unidad 4. Aseguramiento de Calidad de Software QA, Evaluación del proyecto...15 Unidad 4. Aseguramiento de Calidad de Software QA, Evaluación del proyecto...
15 Unidad 4. Aseguramiento de Calidad de Software QA, Evaluación del proyecto...Luis Fernando Aguas Bucheli
 
SEMANA 1-2-3- METODOLOGIAS TRADICIONALES [Autoguardado].pptx
SEMANA 1-2-3- METODOLOGIAS TRADICIONALES [Autoguardado].pptxSEMANA 1-2-3- METODOLOGIAS TRADICIONALES [Autoguardado].pptx
SEMANA 1-2-3- METODOLOGIAS TRADICIONALES [Autoguardado].pptxJ Martin Luzon
 
evaluacion2.pptx
evaluacion2.pptxevaluacion2.pptx
evaluacion2.pptxHugoCid4
 
Metodologiarup 100914104343-phpapp02
Metodologiarup 100914104343-phpapp02Metodologiarup 100914104343-phpapp02
Metodologiarup 100914104343-phpapp02deyvis usan
 
Aseguramiento control calidad-software
Aseguramiento control calidad-softwareAseguramiento control calidad-software
Aseguramiento control calidad-softwareCBISOE
 

Similar a Ciclos de vida y metodologías de desarrollo de software (20)

Metodologia y prototipo
Metodologia y prototipoMetodologia y prototipo
Metodologia y prototipo
 
Semana 1 2-3 (3)
Semana 1 2-3 (3)Semana 1 2-3 (3)
Semana 1 2-3 (3)
 
PRES162
PRES162PRES162
PRES162
 
2.1 proyecto software
2.1 proyecto software2.1 proyecto software
2.1 proyecto software
 
METODOLOGIAS.pptx
METODOLOGIAS.pptxMETODOLOGIAS.pptx
METODOLOGIAS.pptx
 
RUP
RUPRUP
RUP
 
metodologia agil.ppt
metodologia agil.pptmetodologia agil.ppt
metodologia agil.ppt
 
Clase_iso12207.pptx
Clase_iso12207.pptxClase_iso12207.pptx
Clase_iso12207.pptx
 
Metodologia rup
Metodologia rupMetodologia rup
Metodologia rup
 
Metodologia rup
Metodologia rupMetodologia rup
Metodologia rup
 
Metodologia rup
Metodologia rupMetodologia rup
Metodologia rup
 
Trabajo calidad de software.pptx
Trabajo calidad de software.pptxTrabajo calidad de software.pptx
Trabajo calidad de software.pptx
 
Rup
RupRup
Rup
 
Gestión de proyectos
Gestión de proyectosGestión de proyectos
Gestión de proyectos
 
Grupo1
Grupo1Grupo1
Grupo1
 
15 Unidad 4. Aseguramiento de Calidad de Software QA, Evaluación del proyecto...
15 Unidad 4. Aseguramiento de Calidad de Software QA, Evaluación del proyecto...15 Unidad 4. Aseguramiento de Calidad de Software QA, Evaluación del proyecto...
15 Unidad 4. Aseguramiento de Calidad de Software QA, Evaluación del proyecto...
 
SEMANA 1-2-3- METODOLOGIAS TRADICIONALES [Autoguardado].pptx
SEMANA 1-2-3- METODOLOGIAS TRADICIONALES [Autoguardado].pptxSEMANA 1-2-3- METODOLOGIAS TRADICIONALES [Autoguardado].pptx
SEMANA 1-2-3- METODOLOGIAS TRADICIONALES [Autoguardado].pptx
 
evaluacion2.pptx
evaluacion2.pptxevaluacion2.pptx
evaluacion2.pptx
 
Metodologiarup 100914104343-phpapp02
Metodologiarup 100914104343-phpapp02Metodologiarup 100914104343-phpapp02
Metodologiarup 100914104343-phpapp02
 
Aseguramiento control calidad-software
Aseguramiento control calidad-softwareAseguramiento control calidad-software
Aseguramiento control calidad-software
 

Ciclos de vida y metodologías de desarrollo de software

  • 1. Ciclos de Vida del Software
  • 2. Temas a tratar en esta presentación: • ¿Qué es un ciclo de vida del SW? • Fases de un Ciclo de Vida • ¿Qué es una Metodología? • Metodologías prescriptivas y sus modelos • Metodologías ágiles y sus modelos • Comparación entre metodologías • Juego
  • 3. Ciclo de Vida La Norma 12207 de ISO lo define como: “ Un marco de referencia que contiene las actividades y las tares involucradas en el desarrollo, la explotación y el mantenimiento de un producto sw, abarcando desde la definición hasta la finalización de su uso ” La IEEE 1074 lo define como: “ Una aproximación lógica a la adquisición, el suministro, el desarrollo, la explotación y el mantenimiento del software ”
  • 4. Ciclo de Vida Características • Describe las fases principales de desarrollo de software. • Define las fases primarias esperadas de ser ejecutadas durante esas fases. • Ayuda a administrar el progreso del desarrollo, y • Provee un espacio de trabajo para la definición de un detallado proceso de desarrollo de software.
  • 5. Fases del Ciclo de Vida
  • 6. Definición de Necesidades • En esta etapa, los servicios, restricciones y objetivos del sistema se establecen consultando con los usuarios. • Una vez acordados deben definirse de una manera comprensible tanto para los usuarios como para el personal de desarrollo. Estudio de factibilidad: - Alcances - Restricciones sobre el sistema, - además de un modelo lógico de alto nivel del sistema actual (si existe).
  • 7. Tipos de factibilidades: • Factibilidad técnica: Si existe o está al alcance la tecnología necesaria para el sistema. • Factibilidad económica: Relación costo beneficio. • Factibilidad operacional u organizacional: Si el sistema puede funcionar en la organización
  • 8. Análisis • El proceso de recolección de los requisitos se centra especialmente para el software. • La información recopilada y requisitos, tanto del sistema como del software se documentan y se revisan con el usuario.
  • 9. Objetivo del Análisis del problema:
  • 10. Diseño • Partiendo de su definición, las necesidades se dividen en sistema de hardware y sistema de software. A este proceso se le llama diseño de sistemas. • El diseño del software es el proceso de representar las funciones de cada sistema de software a fin de poderlo transformar con facilidad en uno o más programas de computadora.
  • 11. Codificación • El diseño debe traducirse a una forma legible para la máquina a través de un lenguaje de programación. • Si el diseño se realiza de forma detallada, la codificación puede ser mecánica, puesto que ya todo está previsto.
  • 12. Pruebas / Validación • En esta etapa, las unidades de programa individuales o los programas se integran y prueban como un solo sistema completo, para asegurar que se cubren las necesidades del software. • Después de las prueba del sistema, el software se envía al usuario o cliente.
  • 13. Mantenimiento y Evolución • Esta fase suele ser, aunque no necesariamente, la más larga y costosa del ciclo de vida. • Se instala el sistema y se pone en uso práctico. • La actividad de mantenimiento implica corregir, adaptar y perfeccionar los servicios de éste a medida que de perciben nuevas necesidades.
  • 14. METODOLOGÍA CICLO DE VIDA 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. La metodología indica cómo hay que obtener los distintos productos parciales y finales
  • 15. En las dos últimas décadas las notaciones de modelado y posteriormente las herramientas pretendieron ser las "balas de plata" para el éxito en el desarrollo de software, sin embargo, las expectativas no fueron satisfechas. Esto se debe en gran parte a que otro importante elemento, la metodología de desarrollo, había sido postergado.
  • 16. Desarrollo Convencional (Sin Metodología) • No hay forma de controlar lo que está sucediendo en el Proyecto • Los cambios organizativos afectan negativamente al proceso de desarrollo • Los resultados finales son impredecibles
  • 17. Metodologías Que son?: Modo sistemático de realizar, gestionar y administrar un proyecto para llevarlo a cabo con altas probabilidades de éxito.
  • 18. Una metodología define: • Estados, etapas o fases de un desarrollo, junto con los criterios de transición entre ellos. • Tareas, actividades, etc. • Roles, con sus skills necesarios y las interacciones entre ellos. • Artefactos o entregables. • Herramientas de control, seguimiento, medición y perfeccionamiento. • Principios, criterios para tomar decisiones, estrategias para manejar distintos tipos de situaciones, herramientas de manejo de riesgos, etc. Utilizar una metodologías implica mejoras en los procesos de desarrollo, en el producto y en la satisfacción del cliente.
  • 19. Mejoras de los procesos de desarrollo • Todos los integrantes del equipo del proyecto trabajan bajo un marco común. • Estandarización de conceptos, actividades y nomenclatura. • Actividades de desarrollo apoyadas por procedimientos y guías. • Resultados de desarrollo predecibles. • Uso de herramientas de ingeniería de software. • Planificación de las actividades en base a un conjunto de tareas definidas y a la experiencia en otros proyectos. • Recopilación de mejores prácticas para proyectos futuros.
  • 20. Mejoras de los productos • Se asegura que los productos cumplen con los objetivos de calidad propuestos. • Detención temprana de errores. • Se garantiza la trazabilidad de los productos a lo largo del proceso de desarrollo.
  • 21. Mejoras en las relaciones con el cliente • El cliente percibe el orden en los procesos. • Facilita al cliente el seguimiento de evolución del proyecto. • Se establecen mecanismos para asegurar que los productos desarrollados cumplan con las expectativas del cliente.
  • 22.
  • 23. Metodologías Prescriptivas o Tradicionales •Mayor énfasis en la planificación y control del proyecto, en especificación precisa de requisitos y modelado. •Imponen una disciplina de trabajo sobre el proceso de desarrollo del software, con el fin de conseguir un software más eficiente. •Se centran especialmente en el control del proceso, mediante una rigurosa definición de roles, actividades, artefactos, herramientas y notaciones para el modelado y documentación detallada.
  • 24. Modelos de Cascada Puro • Se define como una secuencia de fases en la que al final de cada una de ellas se reúne la documentación para garantizar que cumple las especificaciones y los requisitos antes de pasar a la fase siguiente • Admite iteraciones • Después de cada etapa se realiza una o varias revisiones para comprobar que se puede pasar a la siguiente etapa
  • 26. Metodologías Ágiles (1990) La definición moderna de desarrollo ágil de software evolucionó a mediados de los años 1990 como parte de una reacción contra los métodos de "peso pesado", muy estructurados y estrictos, extraídos del modelo de desarrollo en cascada. El proceso originado del uso del modelo en cascada era visto como burocrático, lento, degradante e inconsistente con las formas de desarrollo de software que realmente realizaban un trabajo eficiente.
  • 27. Manifiesto Ágil Los individuos y la interacción por encima de los procesos y herramientas. El software que funciona por encima de la documentación abarcadora. La colaboración con el cliente por encima de la negociación contractual. La respuesta al cambio por encima del seguimiento de un plan. Aunque hay valor en los elementos a la derecha, valorizamos más los de la izquierda. http://agilemanifesto.org/
  • 29. Retrasar las decisiones y Planificación Adaptativa Es el eje en cual gira la metodología ágil, el retrasar las decisiones tanto como sea posible de manera responsable será ventajoso tanto para el cliente como para la empresa, lo cual permite siempre mantener una satisfacción en el cliente y por ende el éxito del producto, las principales ventajas de retrasar las decisiones son: •Reduce el número de decisiones de alta inversión que se toman. •Reduce el número de cambios necesario en el proyecto. •Reduce el coste del cambio
  • 30. Extreme Programing (XP) Es una de las metodologías de desarrollo de software más exitosas en la actualidad utilizadas para proyectos de corto plazo, corto equipo y cuyo plazo de entrega era ayer. La metodología consiste en una programación rápida o extrema, cuya particularidad es tener como parte del equipo, al usuario final, pues es uno de los requisitos para llegar al éxito del proyecto. Scrum Scrum es un modelo de referencia que define un conjunto de prácticas y roles, y que puede tomarse como punto de partida para definir el proceso de desarrollo que se ejecutará durante un proyecto. Un principio clave de Scrum es el reconocimiento de que durante un proyecto los clientes pueden cambiar de idea sobre lo que quieren y necesitan Algunos ejemplos de Metodologías Ágiles
  • 32. Antes de definir el modelo de ciclo de vida de desarrollo para un proyecto dentro del contexto señalado, hay que entender los fundamentos básicos, los obstáculos y ventajas, antes de seguir un modelo determinado. ¿Qué camino seguir? ¿Cómo evaluar mi proceso de desarrollo? ¿Cómo identificar el conjunto de características que rodean mis desarrollos, e impactan de manera significativa los resultados de mi equipo? ¿Cómo identificar el conjunto de prácticas adecuadas para incluir en un nuevo modelo de ciclo de vida de desarrollo? Una buena estrategia es evaluar los procesos frente a un marco de referencia como puede ser CMMI en cada una de sus áreas de proceso.
  • 33. Algunas comparaciones a tener en cuenta:
  • 34. Algunas comparaciones a tener en cuenta: Prescriptivas Ciclo de Vida Ágiles
  • 36. No existe una metodología universal para hacer frente con éxito a cualquier proyecto de desarrollo de software. Toda metodología debe ser adaptada al contexto del proyecto (recursos técnicos y humanos, tiempo de desarrollo, tipo de sistema, etc) Esperanza por las balas de plata: Brooks: … Yo creo que lo difícil de hacer software es la especificación, diseño y prueba de esta construcción conceptual…. Si esto es cierto, la construcción de software va a ser siempre dificil. Inherentemente no hay balas de plata.
  • 37. •La metodologías ágiles se deberían aplicar en proyectos donde exista mucha incertidumbre, donde el entorno es volátil, cuando los requisitos no se conocen con exactitud, mientras que las metodologías tradicionales obligan al cliente a tomar las decisiones al inicio del proyecto •Las metodologías ágiles permiten disminuir costos y brindar flexibilidad a los proyectos de software donde la incertidumbre está presente (Retrasar las decisiones y Planificación Adaptativa) Algunas conclusiones
  • 38. ...en el futuro no va a haber mas metodologías prescriptivas como lo fueron UP, procesos estilo CMMI o procesos ágiles estilo XP, SCRUM y otros. En cambio, lo que va a haber es una paleta de practicas. Las practicas van a venir primero y las metodologías van a ser meras colecciones de practicas que las organizaciones van a escoger de la paleta... Ivar H. Jacobson (2 de septiembre 1939, Ystad - ), es un ingeniero sueco en Ciencias de la computación. Inventó el diagrama de secuencia y desarrolló los diagramas de colaboración. También impuso el uso de diagramas de estado de transición para describir los flujos de mensajes entre los componentes. Fue uno de los desarrolladores originales del SDL (lenguaje de especificación), que se convirtió en estándar en 1967.
  • 39. 1. ¿Qué es un ciclo de vida? 2. ¿Cuáles son las etapas del ciclo de vida? 3. ¿Cuál es la diferencia entre un ciclo de vida y una metodología? 4. ¿Qué características tiene un desarrollo sin metodologías? 5. ¿Qué define una metodología? 6. ¿Cuáles son algunas de las mejoras que obtenemos al aplicar una metodología? 7. ¿Cuáles son las características de una metodología tradicional?¿Y de una ágil? 8. ¿Cómo funciona un modelo prescriptivo en cascada? 9. ¿Qué metodologías ágiles existen? 10.¿Cuáles son las principales diferencias entre metodologías prescriptivas y ágiles? Preguntas
  • 40.
  • 41. Se supone que se va desarrollar una aplicación relativa a la gestión de pedidos de una empresa. En este caso el cliente no tiene todavía muy claro qué es lo que quiere. Además, el personal informático va a utilizar un tecnología que le resulta completamente nueva. Discútase qué tipo de ciclo de vida es más apropiado.
  • 42. Indicar la(s) respuesta(s) correcta(s) y razonar la respuesta: El ciclo de vida: a)Comienza con una idea o necesidad que satisfacer y acaba con las pruebas satisfactorias del producto. b)No existe ningún estándar que describa sus procesos y actividades. c)No se trata sólo de realizar el análisis, diseño, codificación y pruebas; también incluye, entre otros, procesos de soporte. d)El mantenimiento lo constituyen las actividades para mantener sin cambios el sistema. e)En la actividad de análisis de los requisitos software los desarrolladores obtienen de los futuros usuarios los requisitos que piden al sistema

Notas del editor

  1. Es una sucesión deest ados o fases por los cuales pasa un software a lo largo de su "vida“Crear un ciclo de vida permite detectar errores más rápido, mejorar la calidad del software, estimar los plazos de implementación y sus costos, etc
  2. las etapas no necesariamente se realizan en ese orden ni de forma serial La clasificación, el orden y otros aspectos del ciclo de vida dependen del modelo de ciclo de vida que se esté utilizando. El modelo de ciclo de vida es acordado entre los desarrolladores y posiblemente sus clientes. El ciclo de vida de desarrollo de sistemas informáticos puede dividirse en actividades o fases que, en general, se ajustan al esquema mostrado en el gráfico. Este esquemagráfico es el ciclo de vida típico, dado que existen gran cantidad de variantes quedependen de la organización, del tipo de sistema que se realizará, de los gustos de losadministradores, de los tiempos, etc.
  3. Factibilidad se refiere a la disponibilidad de los recursos necesarios para llevar a cabo los objetivos o metas señalados. Generalmente la factibilidad se determina sobre un proyecto. Estudio de factibilidad. El estudio de factibilidad, es una de las primeras etapas del desarrollo de un sistema Informático A partir de esto, se crean soluciones alternativas para el nuevo sistema, analizando para cada una de éstas, diferentes tipos de factibilidades.
  4. Para cada solución factible se presenta una planificación preliminar de su implementación. Estos resultados se entregan a la Gerencia, (son los que aprueban la realización del sistema informático) El estudio de factibilidad, es una tarea que suele estar organizada y realizada por los analistas de sistemas.
  5. Objetivo del Análisis del problema: Es ayudar al programador a llegar a una cierta comprensión de la naturaleza del mismo.Siguiendo ciertos pasos que son:- Definir el problema con total precisión- Especificar los datos de partida necesarios (datos de entrada, que necesito etc.)- Especificar información que debe proporcionarse al resolverse (especificaciones de salida)
  6. Creación de Prototipos : Etapa de generación y especificación del prototipo de Software. Se obtiene una especificación básica del sistema propuesto y un prototipo inicial, este prototipo inicial es equivalente a un demostrativo de software. Las fases que se proponen son: 1. Análisis preliminar de los requerimientos.2. Desarrollo de la especificación básica.3. Desarrollo del prototipo inicial.3.1 Análisis preliminar de los requerimientos.3.2 Desarrollo de la especificación básica: Se utilizan las técnicas tradicionales de obtención de información: - Entrevistas, - Revisión de documentos, Cuestionario,- Técnicas de expertos, etc.La información obtenida debe reflejarse inmediatamente.- Diagrama de flujo de datos de funciones esenciales,- El grafo de flujo de control- El diagrama entidad - relación. Se profundiza en cada tarea de su sistema, definida en el estudio preliminar,detallando para cada una de ellas los flujos de datos de entrada y salidainvolucrados.
  7. Son el proceso de revisión que el sistema de software producido cumple con las especificaciones y que cumple su cometido. Es normalmente una parte del proceso de pruebas de software de un proyecto, que también utiliza técnicas tales como evaluaciones, inspecciones, y tutoriales. La validación es el proceso de comprobar lo que se ha especificado es lo que el usuario realmente quería. Se trata de evaluar el sistema o parte de este durante o al final del desarrollo para determinar si satisface los requisitos iníciales. La pregunta a realizarse es: ¿Es esto lo que el cliente quiere? Enfoques a la verificación Dinámica de verificación, también conocido como ensayos o experimentación. Estática de verificación, también conocido como análisis. Tipos Pruebas de aceptación: desarrolladas por el cliente. Pruebas alfa realizadas por el usuario con el desarrollador como observador en un entorno controlado (simulación de un entorno de producción). Pruebas beta : realizadas por el usuario en su entorno de trabajo y sin Observadores Características Comprobar que se satisfacen los requisitos: Se usan la mismas técnicas, pero con otro objetivo.No hay programas de prueba, sino sólo el código final de la aplicación.Se prueba el programa completo.Uno o varios casos de `prueba por cada requisito o caso de uso especificado.Se prueba también rendimiento, capacidad, etc. (y no sólo resultados correctos).Pruebas alfa (desarrolladores) y beta (usuarios).
  8. Acción eficaz para mejorar aspectos operativos relevantes de unestablecimiento tales como funcionalidad, seguridad, productividad,confort, imagen corporativa, salubridad e higiene. Otorga la posibilidadde racionalizar costos de operación. El mantenimiento debe ser tantoperiódico como permanente, preventivo y correctivo.
  9. De nada sirven buenas notaciones y herramientas si no se proveen directivas para su aplicación
  10. La dificultad propia del desarrollo de software, y su impacto en el negocio, han puesto de manifiesto las ventajas, y en muchos casos la necesidad, de aplicar una metodología formal para llevar a cabo los proyectos de este tipo. El objetivo es convertir el desarrollo de software en un proceso formal, con resultados predecibles, que permitan obtener un producto de alta calidad, que satisfaga las necesidades y expectativas del cliente. Atrás queda el modo de trabajar artesanal, que a menudo requiere grandes esfuerzos para obtener el resultado final, con los consecuentes desfases de fechas y coste, y es más que probable el desgaste personal del equipo de proyecto. Por lo que utilizar las metodologías implica mejoras en los procesos de desarrollo, en el producto y en la satisfacción del cliente.
  11. “ Lo que buscamos guiándonos con una metodología es prolijidad, corrección y control en cada etapa del desarrollo de un programa. La que nos permitirá una forma sistemática para poder obtener un producto correcto y libre de errores”
  12. Los métodos de desarrollo ágiles e iterativos pueden ser vistos como un retroceso a las prácticas observadas en los primeros años del desarrollo de software (aunque en ese tiempo no había metodologías formales). Inicialmente, los métodos ágiles fueron llamados métodos de "peso liviano".
  13. Al individuo y las interacciones del equipo de desarrollo sobre el proceso y las herramientas. La gente es el principal factor de éxito de un proyecto software. Es más importante construir un buen equipo que construir el entorno. Muchas veces se comete el error de construir primero el entorno y esperar que el equipo se adapte automáticamente. Es mejor crear el equipo y que éste configure su propio entorno de desarrollo en base a sus necesidades. Al individuo y las interacciones del equipo de desarrollo sobre el proceso y las herramientas. La gente es el principal factor de éxito de un proyecto software. Es más importante construir un buen equipo que construir el entorno. Muchas veces se comete el error de construir primero el entorno y esperar que el equipo se adapte automáticamente. Es mejor crear el equipo y que éste configure su propio entorno de desarrollo en base a sus necesidades. La colaboración con el cliente más que la negociación de un contrato. Se propone que exista una interacción constante entre el cliente y el equipo de desarrollo. Esta colaboración entre ambos será la que marque la marcha del proyecto y asegure su éxito. Responder a los cambios más que seguir estrictamente un plan. La habilidad de responder a los cambios que puedan surgir a los largo del proyecto (cambios en los requisitos, en la tecnología, en el equipo, etc.) determina también el éxito o fracaso del mismo. Por lo tanto, la planificación no debe ser estricta sino flexible y abierta.
  14. Luego de varias opiniones tanto a favor como en contra de las metodologías tradicionales se genera un nuevo enfoque denominado, métodos ágiles, que nace como respuesta a los problemas detallados anteriormente y se basa en dos aspectos puntuales, el retrasar las decisiones y la planificación adaptativa; permitiendo potenciar aún más el desarrollo de software a gran escala.
  15. La planificación adaptativa permite estar preparados para el cambio ya que lo hemos introducido en nuestro proceso de desarrollo, además hacer una planificación adaptativa consiste en tomar decisiones a lo largo del proyecto, estaremos transformando el proyecto en un conjunto de proyectos pequeños. Esta planificación a corto plazo nos permitirá tener software disponible para nuestros clientes y además ir aprendiendo del feedback para hacer nuestra planificación más sensible, sea ante inconvenientes que aceleren o retrasen nuestro producto.
  16. Desarrollar un buen software depende de un sinnúmero de actividades y etapas, donde el impacto de elegir la mejor metodología para un equipo, en un determinado proyecto es trascendental para el éxito del producto. El papel preponderante de las metodologías es sin duda esencial en un proyecto y en el paso inicial, que debe encajar en el equipo, guiar y organizar actividades que conlleven a las metas trazadas en el grupo.