• No se han encontrado resultados

MÉTODOS ÁGILES

MEJORA AL PROCESO SOFTWARE

3.5 MÉTODOS ÁGILES

76

• Define las características de los procesos.

• Provee un análisis cuantitativo.

• Hace evidentes las fortalezas y debilidades.

• Identifica las áreas de mejora.

• Provee recomendaciones.

• Sugiere un plan de implementación.

Para cumplir con las tareas antes mencionadas BOOTSTRAP se compone de: un modelo, un proceso de evaluación, una base de datos de soporte, un proceso de mejora y de los instrumentos de evaluación.

3.4.2. VENTAJAS DE BOOTSTRAP

• Proporcionar soporte para la evaluación de la capacidad de los procesos utilizando un conjunto de prácticas de Ingeniería del Software.

• Incluye estándares de Ingeniería del Software reconocidos internacionalmente como fuentes para la identificación de las prácticas a considerar.

• Da soporte a la evaluación, indicando cómo el estándar de referencia ha sido aplicado en la organización evaluada.

• Identifica las fortalezas y debilidades de los procesos de la organización evaluada.

• Da soporte a la creación y aplicación de un plan de mejora que genere resultados aceptables y fiables, de forma que las acciones del plan de mejora permitan alcanzar los objetivos de la organización.

3.4.3. DESVENTAJAS DE BOOTSTRAP

• Existe poca documentación para el usuario y no existen herramientas que soporten su aplicación [Cabo & Moralejo, 2008].

• Problemas para ajustar el modelo de evaluación a las necesidades particulares del proyecto [Jarvinen, Hamann & Van Solingen, 1999]

• Suficiencia de recursos para soportar la implantación [Stienen, 1999].

• Genera documentación excesiva [Cabo & Moralejo, 2008].

• No existe evidencia de su adaptación para el entorno de SE.

MEJORA AL PROCESO SOFTWARE

• La prioridad es satisfacer al cliente mediante entregas de software tempranas y continuas que le aporten un valor.

• Dar la bienvenida a los cambios. Se capturan los cambios para que el cliente tenga una ventaja competitiva.

• Entregar frecuentemente software que funcione desde un par de semanas hasta un par de meses, con el menor intervalo de tiempo posible entre entregas.

• La gente del negocio y los desarrolladores deben trabajar juntos a lo largo del proyecto.

• Construir el proyecto alrededor de individuos motivados. Darles el entorno y el apoyo que necesitan y confiar en ellos para finalizar el trabajo.

• El diálogo cara a cara es el método más eficiente y efectivo para comunicar información dentro de un equipo de desarrollo.

• El software que funciona es la medida principal de progreso.

• Los procesos ágiles promueven un desarrollo sostenible. Los promotores, desarrolladores y usuarios deberían ser capaces de mantener una paz constante.

• La atención continua a la calidad técnica y al buen diseño mejora la agilidad.

• La simplicidad es esencial.

• Las mejores arquitecturas, requisitos y diseños surgen de los equipos que se organizan por sí mismos.

• En intervalos regulares, el equipo reflexiona respecto a cómo llegar a ser más efectivo, y según esto ajusta su comportamiento.

De acuerdo a [Sommerville, 2010], existen muchos enfoques para el desarrollo rápido de software que se fundamentan en las siguientes características:

• Los procesos de especificación, diseño e implementación son concurrentes. No existe una especificación detallada del sistema, el documento de requisitos del usuario define solamente las características más importantes del sistema. La documentación del diseño es minimizada o generada automáticamente por el entorno de programación.

• El sistema se desarrolla en una serie de incrementos. En cada incremento se pueden proponer cambios en el software o nuevos requisitos.

En esta reunión participó un grupo de 17 expertos de la industria del software, incluyendo algunos de los creadores o impulsores de metodologías de software. Su objetivo fue esbozar los valores y principios que deberían permitir a los equipos desarrollar software rápidamente y responder a los cambios que pudieran surgir a lo largo del proyecto.

Los métodos ágiles establecen que el software no sea desarrollado y utilizado en su totalidad sino en una serie de incrementos, por lo que propone el desarrollo del software en cortos lapsos de tiempo, minimizando posibles riesgos. Cada una de esas unidades de tiempo se denomina “iteración”, la cual debe durar entre una y cuatro semanas. Cada iteración del ciclo de vida incluye: planificación, análisis de requerimientos, diseño, codificación, revisión y documentación. Cada iteración no debe añadir demasiada funcionalidad, para justificar el lanzamiento del producto al mercado, sino que la meta debe ser conseguir una versión funcional sin errores. Al final de cada iteración, el equipo volverá a evaluar las prioridades del proyecto. Algunas de las principales características de los métodos ágiles son las siguientes:

78

• A menudo se desarrollan las interfaces de usuario del sistema utilizando un sistema de desarrollo interactivo que permita un diseño rápido.

Las metodologías ágiles están mostrando su efectividad en proyectos con requisitos muy cambiantes y cuando se exige reducir drásticamente los tiempos de desarrollo pero manteniendo una alta calidad. Tales metodologías se enfocan en la gente y en los resultados. Probablemente el método más conocido es la Programación Extrema (eXtreme Programming, XP), que a continuación se describe. Sin embargo, otros enfoques ágiles son: SCRUM, Cristal, desarrollo de software adaptable, entre otros. Así, las metodologías ágiles están revolucionando la manera de producir software.

3.5.1. PROGRAMACIÓN EXTREMA

Es una metodología ágil centrada en potenciar las relaciones interpersonales como clave para el éxito del desarrollo de software, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los desarrolladores, y propiciando un buen clima de trabajo. El nombre fue acuñado por Beck debido a que el enfoque fue desarrollado utilizando buenas prácticas reconocidas, como el desarrollo iterativo, y con la participación del cliente en niveles “extremos”. En XP, todos los requisitos se expresan como escenarios (llamados historias de usuario), los cuales se implementan directamente como una serie de tareas. Los programadores trabajan en parejas y desarrollan pruebas para cada tarea antes de escribir el código. Todas las pruebas se deben ejecutar satisfactoriamente cuando el código nuevo se integra al sistema [Sommerville, 2005].

XP involucra varias prácticas (véase Tabla 3.5), las cuales han sido reconocidas por la industria como mejores prácticas durante el paso de los años. Dichas prácticas son llevadas al extremo para obtener más que la suma de las partes. Estas prácticas hacen de XP, un método ágil, especialmente adecuado para proyectos con requisitos imprecisos y muy cambiantes y donde existe un alto riesgo técnico. Es importante mencionar que las herramientas más importantes de soporte a XP están bajo alguna licencia libre y que, al basarse en el recurso humano, clasifica a las personas en las siguientes categorías: cliente, programador, encargado de pruebas (tester), encargado de seguimiento (tracker), entrenador, consultor, gestor.

3.5.2. PROPÓSITO DE LOS MÉTODOS ÁGILES

Los métodos ágiles pretenden ser una alternativa a los procesos de desarrollo tradicionales caracterizados por su total rigidez centrada en el control del proceso, actividades, artefactos, y en las herramientas y notaciones a usar. Los métodos ágiles son métodos de desarrollo iterativo que se centran en la especificación, diseño e implementación del sistema forma incremental y que implican directamente a los usuarios en el proceso de desarrollo [Sommerville, 2010]. Todo esto con el propósito de reducir los tiempos de ciclo y proporcionar mayor valor a todos los actores clave involucrados en el desarrollo de software [Srinivasan, Dobrin & Lundqvist, 2009]. De acuerdo con [Anacleto, 2005], el diseño ágil busca: mantener el código tan claro y simple como sea posible;

realizar mejoras en cualquier momento; establecer la forma de comunicar el diseño a la gente que necesita entenderlo, usando código, diagramas y, sobre todo, la conversación.

MEJORA AL PROCESO SOFTWARE

Principio o práctica Descripción

Planificación incremental

Los requisitos se registran en tarjetas de historias y las historias a incluir en una entrega se determinan según el tiempo disponible y su prioridad relativa. Los desarrolladores dividen estas historias en tareas de desarrollo.

Entregas pequeñas Se desarrolla primero el mínimo conjunto útil de funcionalidad que proporcione valor de negocio. Las entregas del sistema son frecuentes e incrementalmente añaden funcionalidad a la primera entrega.

Diseño sencillo Sólo se lleva a cabo el diseño necesario para cumplir los requisitos actuales.

Desarrollo previamente

probado Se utiliza un sistema de pruebas unitarias automatizado para escribir pruebas para nuevas funcionalidades antes de que éstas se implementen.

Refactorización Se espera que todos los desarrolladores refactoricen el código continuamente tan pronto como encuentren posibles mejoras. Esto conserva el código sencillo y mantenible.

Programación en parejas Los trabajadores trabajan en pareja, verificando cada uno el trabajo del otro y proporcionando la ayuda necesaria para hacer siempre un buen trabajo.

Propiedad colectiva

Las parejas de desarrolladores trabajan en todas las áreas del sistema, de modo que no desarrollen islas de conocimiento y todos los desarrolladores posean todo el código. Cualquiera puede cambiar cualquier cosa.

Integración continua En cuanto acaba el trabajo en una tarea, se integran en el sistema entero. Después de la integración, se deben pasar al sistema todas las pruebas de unidad.

Ritmo sostenible No se consideran aceptables grandes cantidades de horas extras, ya que a menudo el efecto que tienen es reducir la calidad del código y la productividad a mediano plazo.

Cliente presente

Debe estar disponible al equipo de la XP un representante de los usuarios finales del sistema (el cliente) debe tener disponibilidad de tiempo completo para con el equipo. En un proceso de XP, el cliente es miembro del equipo de desarrollo y es el responsable de formular al equipo los requisitos del sistema para su implementación.

Tabla 3.5. Prácticas de la programación extrema [Sommerville, 2010]

3.5.3. VENTAJAS DE LOS MÉTODOS ÁGILES

Los métodos ágiles se han adoptado para el desarrollo de SE dado que se centran en la adaptabilidad y el trabajo en equipo, lo cual resulta útil en el codiseño de hardware y software.

Algunas de las particularidades que hacen adecuadas las metodologías ágiles para desarrollar SE, son las siguientes:

• El software de aplicación para SE grandes requiere de comunicación exhaustiva y mecanismos de verificación.

80

• El software es una parte importante del desarrollo de los SE, sin embargo es difícil de realizar debido a que estos sistemas forman parte de un entorno físico cuya dinámica compleja, además del calendario y los requisitos, debe ser satisfecha. Esto puede ser solventado con las metodologías ágiles pues ayudan a construir aplicaciones rápidamente en entornos en los que los requisitos cambian con frecuencia basados en la idea de que “por la alta frecuencia en el cambio que sufren los requisitos, se requiere una menor necesidad de diseño y planificación inicial y mayor necesidad de desarrollos incrementales e iterativos”, así las metodologías ágiles se centran en desarrollar software funcional.

• El desarrollo del hardware de los SE se realiza mediante lenguajes de descripción hardware (VHDL, Verilog, etc), así como la verificación del hardware (OpenVera) y el modelado (SystemC) que ayudan a la obtención de prototipos rápidos.

• Ciclos de desarrollo cortos, los metodos ágiles tienen como propósito la realimentación rápida [Abrahamsson, 2005].

• Permiten a los desarrolladores centrarse en el software mismo en vez de en su diseño y documentación [Sommerville, 2005].

• En el artículo [Srinivasan, Dobrin& Lundqvist, 2009], se manifiesta el uso de XP en el desarrollo de SE a través de un estudio sobre el estado actual de la práctica, así como algunas directrices entre las que se pueden resumir las siguientes:

• Los métodos ágiles requieren de la infraestrucutura adecuada, incluyendo las herramientas adecuadas para apoyar el ciclo de vida del software, así como la creación de un entorno que fomente la comunicación y colaboración.

• Los métodos ágiles requieren del intercambio y la transferencia de conocimiento para su adopción exitosa.

3.5.4. DESVENTAJAS DE LOS MÉTODOS ÁGILES

• Falta de documentación del diseño.

• Fuerte dependencia de las personas.

• Falta de procesos de revisión del código.

3.6 COMPARACIÓN EMPÍRICA SOBRE LOS MODELOS Y ESTÁNDARES DE