tp ciclos de vida

42
Ciclos de Vida del Software

Upload: matias-pentreath

Post on 13-Aug-2015

73 views

Category:

Documents


0 download

TRANSCRIPT

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 VidaCaracterí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 queobtener 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 yposteriormente 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 laizquierda.

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 (recursosté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 venirprimero 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 lagestión de pedidos de una empresa. En este caso el clienteno tiene todavía muy claro qué es lo que quiere. Además,el personal informático va a utilizar un tecnología que leresulta completamente nueva. Discútase qué tipo de ciclode 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 laspruebas 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 sincambios el sistema.

e)En la actividad de análisis de los requisitos software los desarrolladoresobtienen de los futuros usuarios los requisitos que piden al sistema