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.
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.
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
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.
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
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
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.
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.
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.
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)
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.
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).
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.
De nada sirven buenas notaciones y
herramientas si no se proveen directivas para su aplicación
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.
“ 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”
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".
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.
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.
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.
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.