Ingenieria de Software. Inventa, Perfecciona y Redefine la Vida Cotidiana

Page 1

Modelo de Ciclo de Vida Iterativo A. Ciclo de Vida Iterativo. Una derivación. B. Ciclo de Vida Iterativo vs Ciclo de Vida Incremental C. Beneficios de un Ciclos de Vida Iterativo D- Restricciones. Disponibilidad y Requisitos E. Ciclo Iterativo. Recomendaciones para un Trabajo Eficiente F. Caso Practico

Contenido Modelo de Ciclo de Vida de un Software - Ciclo de Vida Iterativo Punto A ............................... 2 Punto B ............................... 2

Metodología de Desarrollo de Software Ágil

Punto C ............................... 3 Punto D ............................... 4 Punto E ............................... 4

A. ¿Metodología de Desarrollo de Software Ágil. Eficacia y Producción B. Particularidades de la Metodología de Desarrollo de Software Ágil C. Principios del Manifiesto Ágil D. Metodología de Desarrollo Ágil. Pasos a seguir E. Metodología de Desarrollo de Software Ágil. Los Mas Usados. F. Caso Practico

Punto F ............................... 4

Metodología de Desarrollo de Software Ágil Punto A ............................... 5 Punto B ............................... 5 Punto C ............................... 6 Punto D ............................... 6 Punto E ............................... 7 Punto F ............................... 8


Ciclo de Vida Iterativo. Una derivación. Ciclo de Vida en Cascada: Un enfoque clásico Él método de la cascada es considerado como

el

enfoque

clásico para el ciclo de vida del desarrollo de sistemas, se puede decir que es un método puro que implica un desarrollo rígido. está es una secuencia de actividades(o etapas) que consisten en el análisis de requerimientos, él diseño ,la implementación, la integración y las pruebas

Es un modelo derivado del ciclo de vida en cascada el busca reducir el riesgo que surge entre las necesidades del usuario y el producto final por malos entendidos durante la etapa de recogida de requisitos mediante la iteración de varios ciclos de vida en cascada, donde al final de cada una se le entrega al cliente una versión mejorada o con mayores funcionalidades del producto para su evaluación y sugerencias. Estas iteraciones se repetirán hasta obtener un producto que satisfaga las necesidades del cliente.

Este modelo se suele utilizar en proyectos en los que los requisitos no están claros por parte del usuario, por lo que se hace necesaria la creación de distintos prototipos para presentarlos y conseguir la conformidad del cliente.

Modelo de Ciclo de Vida Iterativo Ciclo de Vida Incremental: Filosofía y Prototipos Combina elementos del modelo en cascada con la filosofía interactiva de construcción de prototipos, basado en la filosofía de construir incrementando las funcionalidades

del

programa

aplicando secuencias lineales de forma escalonada mientras progresa el tiempo en el calendario. Cada secuencia lineal produce un incremento del software.

2

Ciclo de Vida Iterativo vs Ciclo de Vida Incremental No se debe confundir estas dos técnicas en nuestros procesos. Con el ciclo de vida iterativo vamos obteniendo prototipos independientes al anterior, mientras que con el ciclo de vida incremental, vamos añadiendo funcionalidades a nuestro software. Por supuesto, el producto mejora al ser más completo. Trabajando con el ciclo iterativo e incremental, el software de nuestro proyecto tendrá vida propia, será estables y se podrá ir utilizando según vayamos obteniendo nuevas versiones en cada iteración. Existe un alto riesgo de quedarse en el incremental, olvidándonos del iterativo. Muchos equipos olvidan que cada versión debe mejorar en calidad al anterior, y se centran solo en añadir únicamente funcionalidades.


¿Qué gana una empresa con el Ciclo de Vida Iterativo? Aunque en principio fueron empleados

para

procesos

de

desarrollo de Software, las metodologías iterativas pueden ser aplicables a cualquier tipo de proyecto, siendo más oportunos para aquellos de carácter complejo o que no están del todo definidos. No obstante, actualmente son muchas las empresas que se mantienen fieles a otros modelos de desarrollo de trabajo. Estos son algunos de los beneficios que ofrecen los ciclos iterativos a las empresas en el momento de poner en marcha un proyecto: 1. Análisis de avances: al fraccionar el proyecto en etapas, el

Visualización de un Ciclo de Vida Iterativo

equipo de trabajo tiene la posibilidad de analizar los resultados en cada una de ellas e incorporar mejoras para la entrega final.

Beneficios de un Ciclos de Vida Iterativo

2. Manejo de riesgos: este modelo de planificación por sec-

1. Se puede gestionar las expectativas del cliente de manera regular, puede tomar decisiones en cada iteración.

ciones también permite la evalua-

2. El cliente puede comenzar el proyecto con requisitos de alto nivel de manera que se vayan refinando en sucesivas iteraciones. Sólo es necesario conocer con más detalle los requisitos de las primeras iteraciones, los que más valor aportan.

pir durante la ejecución del proce-

3. El cliente puede obtener resultados importantes y usables ya desde las primeras iteraciones.

fase propicia el diálogo entre el

4. Se puede gestionar de manera natural los cambios que van apareciendo durante el proyecto.

proyecto y, por supuesto, el clien-

5. La finalización de cada iteración es el lugar natural donde el equipo puede decidir cómo mejorar su proceso de trabajo, en función de la experiencia obtenida. 6. Permite conocer el progreso real del proyecto desde las primeras iteraciones y extrapolar si su finalización es viable en la fecha prevista. El cliente puede decidir priorizar los requisitos del proyecto, añadir nuevos equipos, cancelarlo, etc.

ción de riesgos que pueden irrumso. 3. Retroalimentación: Al plantear un desarrollo dosificado, cada equipo de trabajo, el líder del te. 4. Flexibilidad: no sólo en cuanto a la introducción de cambios, sino también en las situaciones en que los objetivos no hayan sido claramente definidos desde el inicio.

7. Permite gestionar la complejidad del proyecto. 8. Dado que cada iteración debe dar como resultado requisitos terminados, se minimiza el número de errores que se producen en el desarrollo y se aumentar la calidad.

3


Caso Practico Aplicado al desarrollo de una familia de compiladores para una familia de lenguajes de programación en una gama de arquitecturas de hardware, un ciclo iterativo aporta las mayores mejoras. Un conjunto de 17 versiones del sistema se desarrollaron en un lugar, generando 17 mil líneas de código fuente de lenguaje de alto nivel. El sistema posteriormente fue desarrollado en dos sitios diferentes, llegando a dos versiones diferentes del lenguaje base: una versión esencialmente se enfocaba en aplicaciones matemáticas y la otra se centró en añadir capacidades para escribir del compilador. Cada iteración fue

Restricciones. Disponibilidad y Requisitos 1. La disponibilidad del cliente debe ser alta durante todo el proyecto dado que participa de manera continua: 2. Cada iteración debe dar como resultado requisitos terminados, de manera que el resultado sea realmente útil para el cliente y no deje tareas pendientes para futuras iteraciones o para la finalización del proyecto. 3. Cada iteración ha de aportar un valor al cliente, entregar unos resultados cerrados que sean susceptibles de ser utilizados por él. 4. La relación con el cliente ha de estar basada en los principios de colaboración y ganar/ganar más que tratarse de una relación contractual en la cual cada parte únicamente defiende su beneficio a corto plazo. 5. Es necesario disponer de técnicas y herramientas que permitan hacer cambios fácilmente en el producto, de manera que pueda crecer en cada iteración de manera incremental sin hacer un gran esfuerzo adicional, manteniendo su complejidad minimizada y su calidad.

analizada desde dos puntos de vista: el de los usuarios, por lo que las capacidades del lenguaje fueron determinadas en parte por las necesidades del usuario, y el del desarrollador, por lo que el diseño evolucionó para ser más fácilmente modificable. Mediciones tales como acoplamiento y modularización fueron seguidas sobre múltiples versiones.

Ciclo Iterativo. Recomendaciones para un Trabajo Eficiente 1. Utilizar iteraciones cortas de 2 a 4 semanas incrementa la productividad del proyecto, dado que el equipo trabaja de forma más eficiente cuando tiene objetivos a corto plazo. Asimismo, con iteraciones cortas la precisión de las estimaciones aumenta. El tamaño depende de: 1.1. Los condicionantes del proyecto. 1.2. La necesidad de tener feedback más o menos rápido. 1.3. Que no se degrade la relación trabajo útil / gestión operativa (por ejemplo reuniones, actividades necesarias que no producen valor directo, etc.). 2. Utilizar iteraciones regulares, de manera que todas sean un timebox de la misma duración.

4


¿Metodología de Desarrollo de Software Ágil. Eficacia y Producción La Metodología Ágil o Agile es un marco metodológico de trabajo que plantea permitir mejorar la eficiencia en la producción y la calidad de los productos finales, tener la capacidad de respuesta al cambio en los productos y sus definiciones, y brindar la mayor satisfacción posible al cliente, a través de la entrega temprana y la retroalimentación continua durante la construcción del producto. Esta metodología trae consigo diversos beneficios, pues permite una mayor flexibilidad que las metodologías tradicionales, debido a que éstas son menos capaces a ajustarse

a las cambiantes necesidades de los clientes, del mercado, y de los nuevos desafíos que plantea la tecnología. Cada iteración del ciclo de vida incluye: planificación, análisis de requisitos, diseño, codificación, pruebas y documentación. Teniendo gran importancia el concepto de "Finalizado" (Done), ya que el objetivo de cada iteración no es agregar toda la funcionalidad para justificar el lanzamiento del producto al mercado, sino incrementar el valor por medio de "software que funciona" (sin errores).

Metodología de Desarrollo de Software Ágil Particularidades de la Metodología de Desarrollo de Software Ágil 1. Flexibilidad en el proceso y las definiciones de los productos: Permite que el equipo de desarrollo se adapte a los cambios y se beneficie de ellos en favor del cliente. 2. Realimentación continua con el cliente: De forma temprana el cliente recibe entregables de valor, lo que permite ver los constantes avances, logrando así, aportar en lo necesario para que el equipo vaya construyendo en la dirección correcta lo anterior, inmediatamente reduce de forma drástica los errores y la posibilidad de costosas correcciones, respondiendo a los cambios en requisitos de forma rápida y eficaz. 3. Interacción constante: Importante a la hora de dar tranquilidad al cliente sobre los avances del producto que recibirá (debido a que el producto se va analizando a medida que avanza), lo que sirve de gran valor cuando se ve en la necesidad de reportar a instancias superiores.

4. Calidad mejorada: Esto significa que las prácticas de desarrollo ágil y sus constantes interacciones, proporcionan la funcionalidad suficiente como para satisfacer las expectativas del cliente con una alta calidad. La clave se encuentra en la continuidad de la calidad, es decir, la calidad es integral al proceso, y no añadida (la vista clásica). 5. Cuando los proyectos no están claramente definidos: Esto apunta a que los requisitos del cliente se van clarificando a medida que el proyecto va avanzando, lo que permite la fácil adaptación del desarrollo para cumplir los nuevos desafíos. 6. Interacción y Comunicación: La interacción entre los diferentes diseñadores y participantes es clave, es especialmente propicia para entornos orientados al trabajo en equipo.

5


Principios del Manifiesto Ágil ¿Qué es un Manifiesto? Es un escrito breve que un grupo o movimiento político, religioso, filosófico, artístico o literario dirige a la opinión pública para exponer y defender su programa de acción considerado revolucionario o novedoso con respecto a lo establecido

1. Nuestra principal prioridad es satisfacer al cliente a través de la entrega temprana y continua del software de valor.

tiva de comunicar información de ida y vuelta dentro de un equipo de desarrollo es mediante la conversación cara a cara.

2. Son bienvenidos los requisitos cambiantes, aun llegando tarde al desarrollo. Los procesos ágiles se doblegan al cambio como ventaja competitiva para el cliente.

7. El software/producto/servicio que funcione es la principal medida de progreso.

3. Entregar con frecuencia software que funcione, en periodos de un par de semanas hasta un par de meses. 4. Las personas del negocio y los desarrolladores deben trabajar juntos de forma cotidiana a través del proyecto. 5. Construcción de proyectos en torno a individuos motivados. 6. La forma más eficiente y efec-

8. Los procesos ágiles promueven el desarrollo sostenido. Los desarrolladores, patrocinadores, y usuarios han de mantener un ritmo constante de forma indefinida. 9. La atención continua a la excelencia técnica ensalza la agilidad. 10. La simplicidad como arte de maximizar la cantidad de trabajo que se hace, es esencial. 11. Las mejores arquitecturas, requisitos y diseños emergen de equipos que se auto organizan.

Metodología de Desarrollo Ágil. Pasos a seguir El método de desarrollo de software ágil intenta reducir la complejidad de los proyectos de software actuales e incrementar su flexibilidad. El desarrollo de software ágil tiene muy en cuenta los cambios solicitados y responde de manera flexible a los nuevos requisitos surgidos durante el transcurso del proyecto. Los pasos del proceso Ágil son los siguientes: 1. Diagnóstico (Product Owner, StakeHolders, Agile Manager): Incluye el análisis de los requerimientos y la tormenta de ideas. 2. Diseño (Product Owner, StakeHolders, Scrum Master): Incluye la documentación del diseño y el prototipado. 3. Desarrollo (Scrum Master, Team Members): Incluye la construcción, las pruebas, la revisión y la clarificación. Es un proceso iterativo. 4. Aseguramiento de Calidad (Scrum Master, Team Members): Incluye la identificación y la resolución de defectos. 5. Despliegue (Team Members, Product Owner): Incluye la puesta en producción y el soporte post-venta.

6


Metodología de Desarrollo de Software Ágil. Los Mas Usados. 1. Scrum: Es una metodología que aporta una estrategia de desarrollo incremental, en lugar de la planificación y ejecución completa del producto. La calidad del resultado se basa principalmente en el conocimiento innato de las personas en equipos auto organizados, antes que en la calidad de los procesos empleados. Seguir los pasos del desarrollo ágil: Desde el concepto o visión general de la necesidad del cliente hasta la construcción del producto de forma incremental a través de iteraciones. Estas iteraciones (En scrum se llaman Sprint) se repiten de forma continua hasta que el cliente da por cerrada la evolución del producto.

Otra Metodología de Desarrollo de Software mas usada 3. XP (Xtreme Programming): Es una metodología ágil centrada en potenciar las relaciones interpersonales como clave para el éxito en desarrollo del software, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los desarrolladores y propiciando un buen clima de trabajo. XP se

basa

en

retroalimentación

continua entre cliente y el equipo de desarrollo. XP es especialmente adecuada para proyectos con requisitos imprecisos y muy cambiantes.

2. Kanban: Kanban es una palabra japonesa que significa “tarjetas visuales”. Esta técnica se utiliza para controlar el avance del trabajo, en el contexto de una línea de producción y actualmente es aplicada en la gestión de proyectos de software. Se basa en una idea muy simple, el trabajo en curso (Work In Progress, WIP)

7


Caso Practico

Datos Básicos de Interés ¿Qué es la Ingenieria? La ingeniería es el conjunto de conocimientos científicos y tecnológicos para la innovación, invención, desarrollo y mejora de técnicas y herramientas para satisfacer las necesidades y resolver los problemas de las empresas y la sociedad.

¿Que es la Ingeniería de Software? La Ingeniería de Software es aquella que abarca todos los aspectos

Un cliente se pone en contacto con una empresa que fabrica robots, y les realiza un pedido, este se reúne con el dueño del producto, quien toma nota de lo que tiene en su cabeza. El dueño del producto divide el proyecto en historias que son las que componen la pila de producto. El scrum master es un miembro del equipo que tiene el papel de comunicar y gestionar las necesidades del dueño de producto y la pila de sprint El dueño de producto le entrega la pila de producto para que estimen el coste de creación del producto. El equipo se reúne para estimar el coste de cada historia de la pila de producto. El cliente, una vez aprobado el presupuesto, reordena la pila de producto para que el equipo vaya trabajando según la prioridad del cliente.

de la producción de software, desde la especificación del sistema hasta el mantenimiento que se le debe brindar después de utilizarlo. También comprende la gestión de proyectos de software y el desarrollo de herramientas, métodos y teorías de apoyo a la producción de software.

¿Qué es Software? Software es un término informático que hace referencia a un programa o conjunto de programas de cómputo que incluye datos, procedimientos y pautas que permiten realizar distintas tareas en un sistema informático.

El equipo comienza su trabajo desglosando la primera historia de la pila de producto, la cual dividen en tareas menores para crear la pila de sprint, la cual tiene como utilidad fraccionar el trabajo de un periodo de 15 días en tareas más pequeñas, que tarden como mucho dos días. Estas tareas se colocan en una pila, la cual prioriza el dueño del producto, que ha consultado con el cliente antes de comenzar el sprint. El equipo comienza el sprint tomando las tareas priorizadas. Una vez concluida una se toma la siguiente de lista. Se convoca todos los días una reunión de equipo donde se cuentan las tareas realizadas el día anterior y cuales se van a realizar ese día. Una vez finalizado el sprint, el dueño del producto le muestra al cliente el resultado del trabajo realizado. El cliente ya tiene el primer contacto con su encargo y además puede volver a priorizar la pila de producto antes de que comience otro sprint.

INSTITUTO UNIVERSITARIO POLITECNICO SANTIAGO MARIÑO

Autores Andrea Ferro Esteban Ortegón Glamisleidys Chourio

06 de Febrero de 2019


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.