Capítulo 1 Ciclo de vida del software Objetivo Al finalizar el capítulo, el alumno podrá: Sitúa su trabajo dentro del ciclo de vida de un proyecto. Verifica qué modelo de ciclo de vida emplean en su organización. Conoce el concepto y filosofía de las metodologías Ágiles. Conoce los principios y actividades principales de Scrum. Temas 1. 2. 3. Ciclo de vida de un proyecto de software Metodologías de desarrollo de software Metodologías Ágiles de software, el manifiesto Ágil, Scrum. Cibertec Perú S.A.C - Java 8.0 Advanced Developer Ciclo de vida del software 2 Importancia Un sistema de software es una entidad “viva”, es algo orgánico ya que no permanece estático en el tiempo; es por ello que podemos decir que un proyecto de software tiene siempre un ciclo de vida, su desarrollo está ligado, quiera o no, a un ciclo de vida. A lo largo de la historia del desarrollo de software, se han propuesto diferentes paradigmas o ciclos de vida para el software. Hemos tenido ciclos de vida tradicionales como el modelo en cascada o espiral, y recientemente con el auge de las metodologías ágiles, tenemos modelos de ciclos de vida para los proyectos ágiles. Como siempre ocurre con estos temas, las organizaciones profesionales, así como organismos internacionales de envergadura en el mundo de software, se han ido reuniendo para estudiar esto a fondo, publicando lo encontrado y normas para poder comprender los ciclos y poder manejarlos. Cibertec Perú S.A.C - Java 8.0 Advanced Application Developer Ciclo de vida del software 3 1. Ciclo de vida de un proyecto de software El ciclo de vida del software abarca toda la vida del sistema, comenzando en una idea y finalizando cuando ya no se utiliza: Definimos el ciclo de vida del software como la sucesión de etapas por las que pasa el sistema desde que el proyecto del sistema es concebido hasta que se deja de usar. En la norma ISO 12207-1 se establece que durante el ciclo de vida se pueden realizar actividades agrupadas en procesos principales, procesos de soporte y procesos generales, sin importar el modelo de ciclo de vida que se tenga en cuenta. Cibertec Perú S.A.C - Java 8.0 Advanced Developer Ciclo de vida del software 4 1.1. Modelos de ciclo de vida Los modelos son representaciones de las relaciones entre las etapas del ciclo de vida para que los equipos de desarrollo puedan atacar la problemática del sistema y lograr el cumplimiento de los objetivos planteados para el proyecto de software. La elección del modelo de ciclo de vida para proyecto es de vital importancia: se tiene que escoger uno acorde a la naturaleza del proyecto. C as En la actualidad existen dos tipos de proyecto según la metodología que se emplee: tradicionales y ágiles. Para estos tipos también se tienen sus correspondientes modelos de ciclo de vida. En el caso de los modelos tradicionales, tenemos el modelo en cascada, en espiral, entre otros. Las fases de estos modelos están bien definidas y son secuenciales. En el caso de los modelos ágiles, tenemos el modelo ágil de Unified Process (UP), Scrum y otros no muy conocidos basados en el Manifiesto Ágil. Cibertec Perú S.A.C - Java 8.0 Advanced Application Developer Ciclo de vida del software 5 Las fases que normalmente se consideran en los modelos de ciclo de vida son la captura de requerimientos, la implementación, el despliegue y el aseguramiento de calidad. El manifiesto Agile Conjunto de buenas prácticas e ideas orientadas al desarrollo de software. Toman como base la metodología de desarrollo de software Lean, basada en la metodología de manufactura Lean, esta última basada en el sistema de producción Toyota (TPS). El sistema de producción Toyota a diferencia del sistema de producción americano representado en esa época por Ford impulsa las siguientes directrices: Cibertec Perú S.A.C - Java 8.0 Advanced Developer Ciclo de vida del software 6 Todos los miembros de la cadena de desarrollo son responsables y participan en la toma de decisiones. A diferencia del método americano donde el conocimiento y decisiones se reducen a los mandos altos. Frente a la existencia de un problema se detiene la cadena de desarrollo y todos los miembros analizan juntos el problema. Se basa en el principio de eliminación de desperdicio. Entiéndase desperdicio como: - Pérdida de tiempo. - Mal uso de los recursos. - Documentación engorrosa que nadie sigue. - Defectos. - Tiempos muertos. Dado que las metodologías ágiles toman como base Lean, mantienen similitudes entre ellas, estas similitudes están fielmente representadas por el manifiesto ágil: Individuos e interacciones sobre procesos y herramientas. Software funcional sobre documentación extensiva. Colaboración con los clientes sobre contratos de negociación. Respuestas al cambio sobre un plan fijo a seguir. Las ideas del manifiesto son, a su vez, la síntesis de un conjunto de principios: Nuestra más alta prioridad es satisfacer a nuestros clientes a través de entrega de software con valor desde un inicio y de manera continua. Los cambios de requerimientos son bienvenidos, aun en etapas avanzadas del desarrollo. Entrega de software funcional frecuentemente, desde un par de semanas a un par de meses. Gente de negocios y desarrolladores deben trabajar juntos diariamente durante todo el proyecto. Construir proyectos alrededor de individuos motivados y confiar en su capacidad de entregar su trabajo terminado. El método más eficiente y efectivo para obtener información para y dentro de un equipo de desarrollo es la conversación cara a cara. Software funcionando es la medida primaria de progreso. Atención continua a la excelencia técnica y buen diseño, mejora la agilidad. Simplicidad es esencial. Las mejores arquitecturas, requerimientos y diseños emergen de equipos auto organizados. Durante cada intervalo de tiempo, el equipo reflexiona sobre cómo ser más efectivo, entonces tunea y ajusta sus acciones de manera concordante. De la gran variedad de metodologías ágiles la más aceptada y adoptada, tanto por la comunidad de desarrolladores como por organizaciones, es Scrum. Cibertec Perú S.A.C - Java 8.0 Advanced Application Developer Ciclo de vida del software 3. 7 SCRUM Es la certificación ágil más desarrollada a nivel empresarial, cuenta con gran mayoría de adeptos, así como de certificaciones internacionales. Scrum maneja una determinada terminología. Conocerla es de vital importancia para poder moverse con facilidad dentro de un proyecto Scrum. El proceso de desarrollo de un proyecto en Scrum es el siguiente: Roles que intervienen: - Product Owner: Es la persona con mayor conocimiento de negocio del proyecto. Por lo general es un miembro del cliente, aunque también podría serlo algún miembro del equipo de desarrollo con sólidos conocimientos del negocio. Es el encargado de dar las aprobaciones de los Sprint y los vistos buenos a las demos. - Scrum Master: Es el director de orquesta y facilitador en los proyectos Scrum siendo además quién guía las reuniones diarias. Ese rol lo juega, por lo general, un miembro del equipo de desarrollo. - Stakeholder: Cualquier persona interesada en el proyecto. Desarrolladores, personal del cliente, etc. El proceso de desarrollo Scrum empieza con definir el Product Backlog que contiene todas las User Stories a desarrollar a lo largo del proyecto. El desarrollo de un proyecto Scrum se divide en Sprints, cuya duración son entre 1 a 4 semanas. El tiempo recomendado y más utilizado es de 2 semanas. El Sprint inicia con una reunión de planificación de Sprint (Sprint Planning) donde se definen las User Stories que se desarrollarán en el Sprint; creándose Cibertec Perú S.A.C - Java 8.0 Advanced Developer Ciclo de vida del software el Sprint Backlog. El equipo procede a estimar y asignar las diferentes User Stories, la estimación se realiza, por lo general, en Story Points. Existe una equivalencia entre Story Points y una cantidad de horas que lo puede definir el propio equipo. Puede en este momento o más adelante definirse las tareas que compondrán cada User Story. El Product Owner aprueba el contenido del Sprint y se da inicio al desarrollo del Sprint. Durante el Sprint se realizan reuniones diarias (Daily Meetings) donde todos los miembros de equipo indican las tareas que hicieron el día anterior y lo que planifican hacer en el día; así también informan si están teniendo algún problema que pudiera poner en peligro el desarrollo del Sprint. La idea de estas reuniones es que todo el equipo esté enterado del trabajo de los demás y puedan solucionar problemas juntos. Una vez pasado el tiempo del Sprint, se procede con la reunión de entrega del Sprint o demo donde se muestra al Product Owner, la funcionalidad desarrollada y funcionando. El Product Owner procede con la aceptación o indica sus observaciones con lo realizado. Finalmente, el Sprint termina con una reunión de Restrospectiva, donde todo el equipo indica: - 8 Lo que se hizo bien. Lo que se hizo mal o se pudo hacer mejor. Acciones de corrección. Luego de la retrospectiva se da por concluido el Sprint y se inicia un nuevo Sprint Planning. Se repite este proceso hasta dar por concluido el proyecto. Cibertec Perú S.A.C - Java 8.0 Advanced Application Developer