Desarrollo Ágil
por Amanda Enríquez
1. ¿QUÉ ES UN PROCESO ÁGIL?
1.1. Cualquier proceso del software ágil se caracteriza por la forma en la que aborda cierto número de suposiciones clave acerca de la mayoría de proyectos de software.
1.2. Es difícil predecir qué requerimientos de software persistirán y cuáles cambiarán. También es difícil pronosticar cómo cambiarán las prioridades del cliente a medida que avanza el proyecto.
1.3. El análisis, el diseño, la construcción y las pruebas no son tan predecibles como nos gustaría (desde un punto de vista de planeación).
1.4. un proceso de software ágil debe adaptarse incrementalmente.
1.5. Es relativamente fácil efectuar un cambio cuando el equipo de software reúne los requerimientos (al principio de un proyecto). El escenario de uso tal vez tenga que modificarse, la lista de funciones puede aumentar, o editarse una especificación escrita. Los costos de hacer que esto funcione son mínimos, y el tiempo requerido no perjudicará el resultado del proyecto.
1.6. Deben entregarse incrementos de software (prototipos ejecutables o porciones de un sistema operativo) en periodos cortos de tiempo, de modo que la adaptación vaya a ritmo con el cambio (impredecible). Este enfoque iterativo permite que el cliente evalúe en forma regular el incremento de software.
2. LA AGILIDAD Y EL COSTO DEL CAMBIO
2.1. Pero, ¿qué pasa una vez transcurridos algunos meses? El equipo está a la mitad de las pruebas de validación (algo que ocurre cuando el proyecto está relativamente avanzado) y un participante de importancia solicita que se haga un cambio funcional grande Los costos aumentan con rapidez, y no son pocos el tiempo y el dinero requeridos para asegurar que se haga el cambio sin efectos colaterales no intencionados
2.1.1. Los defensores de la agilidad afirman que un proceso ágil bien diseñado “aplana” el costo de la curva de cambio como se lo ve en la imagen
3. Principios de agilidad
3.1. La prioridad más alta es satisfacer al cliente a través de la entrega pronta y continua de software valioso
3.2. Son bienvenidos los requerimientos cambiantes, aun en una etapa avanzada del desarrollo.
3.3. Los procesos ágiles dominan el cambio para provecho de la ventaja competitiva del cliente.
3.4. Las personas de negocios y los desarrolladores deben trabajar juntos, a diario y durante todo el proyecto.
3.5. Hay que desarrollar los proyectos con individuos motivados. Debe darse a éstos el ambiente y el apoyo que necesiten, y confiar en que harán el trabajo.
3.6. El equipo reflexiona a intervalos regulares sobre cómo ser más eficaz, para después afinar y ajustar su comportamiento en consecuencia
4. Valores XP
4.1. define un conjunto de cinco valores que establecen el fundamento para todo trabajo realizado como parte de XP: comunicación, simplicidad, retroalimentación, valentía y respeto. Cada uno de estos valores se usa como un motor para actividades, acciones y tareas específicas de XP.
4.2. El objetivo es crear un diseño sencillo que se implemente con facilidad en forma de código. Si hay que mejorar el diseño, se rediseñará en un momento posterior.
4.3. El grado en el que el software implementa la salida, función y comportamiento del caso de uso es una forma de retroalimentación.
4.4. La programación extrema usa un enfoque orientado a objetos como paradigma preferido de desarrollo, y engloba un conjunto de reglas y prácticas que ocurren en el contexto de cuatro actividades estructurales: planeación, diseño, codificación pruebas.
5. Conjunto de herramientas para el proceso ágil
5.1. Algunos defensores de la filosofía ágil afirman que las herramientas automatizadas de software (por ejemplo, las de diseño) deben verse como un complemento menor de las actividades del equipo, y no como algo fundamental para el éxito.
5.2. Algunas de estas herramientas son sociales y comienzan incluso en la etapa de reclutamiento. Otras son tecnológicas y ayudan a que los equipos distribuidos simulen su presencia física. Muchas herramientas son físicas y permiten que las personas las manipulen en talleres”.
6. Capítulo 3
6.1. Este pone énfasis en la satisfacción del cliente y en la entrega rápida de software incremental, los equipos pequeños y muy motivados para efectuar el proyecto, los métodos informales, los productos del trabajo con mínima ingeniería de software y la sencillez general en el desarrollo.
7. ¿QUÉ ES LA AGILIDAD?
7.1. la agilidad es algo más que una respuesta efectiva al cambio, pone el énfasis en la entrega rápida de software funcional y resta importancia a los productos intermedios del trabajo (lo que no siempre es bueno); adopta al cliente como parte del equipo de desarrollo y trabaja para eliminar la actitud de “nosotros y ellos” que todavía invade muchos proyectos de software; reconoce que la planeación en un mundo incierto tiene sus límites y que un plan de proyecto debe ser flexible.
8. Factores humanos
8.1. Los defensores del desarrollo de software ágil se toman muchas molestias para enfatizar la importancia de los “factores personales”
9. OTROS MODELOS ÁGILES DE PROCESO
9.1. • Desarrollo adaptativo de software • Scrum • Método de desarrollo de sistemas dinámicos (MDSD) • Cristal • Desarrollo impulsado por las características (DIC) • Desarrollo esbelto de software (DES) • Modelado ágil (MA) • Proceso unificado ágil (PUA)
10. Criterio personal
10.1. Todo este mundo busca las cosas rápidas pero a su vez que sean procesos maniobrales , adaptativos y líquidos que satisfagan las necesidades de los usuarios y el modelo ágil presenta algunas estas características. Los procesos ágiles fueron creados para la comunicación y colaboración entre los miembros del equipo y entre los profesionales y sus clientes, el reconocimiento de que el cambio representa una oportunidad y la insistencia en la entrega rápida de software que satisfaga al consumidor. La programación extrema (XP) es el proceso ágil de más uso. Organizada con cuatro actividades estructurales: planeación, diseño, codificación y pruebas, la XP sugiere cierto número de técnicas innovadoras y poderosas que permiten a un equipo ágil generar entregas frecuentes de software que posee características y funcionalidad que han sido descritas y clasificadas según su prioridad por los participantes.