Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Development
Lecture 1
Lectura 1
1
Topicos cubiertos
• Métodos ágiles
• Desarrollo ágil y basado en planes.
• Programación extrema
• Gestión de proyectos ágiles
• Escalando métodos ágiles
Desarrollo de software rapido
• El desarrollo rápido y entrega ahora es a menudo el requisito más importante para los
sistemas de software.
• Las empresas operan con un requisito de cambio rápido y es prácticamente imposible
producir un conjunto de requisitos de software estables.
• El software tiene que evolucionar rápidamente para reflejar las cambiantes necesidades
comerciales.
• Desarrollo rápido de software
• Las especificaciones, el diseño y la implementación están entrelazados
• El sistema se desarrolla como una serie de versiones con partes interesadas involucradas
en la evaluación de versiones
• Las interfaces de usuario a menudo se desarrollan utilizando un IDE y un conjunto de
herramientas gráficas.
Métodos ágiles
• La insatisfacción con los gastos generales involucrados en los métodos de
diseño de software de los años ochenta y noventa condujo a la creación de
métodos ágiles. Estos métodos:
• Centrarse en el código en lugar del diseño
• Se basan en un enfoque iterativo para el desarrollo de software.
• Están destinados a entregar software de trabajo rápidamente y
evolucionar esto rápidamente para cumplir con los requisitos cambiantes.
• El objetivo de los métodos ágiles es reducir los gastos generales en el
proceso del software (por ejemplo, limitando la documentación) y poder
responder rápidamente a los requisitos cambiantes sin un trabajo excesivo
Manifiesto ágil
• Estamos descubriendo mejores formas de desarrollar software
haciéndolo y ayudando a otros a hacerlo. A través de este trabajo
hemos llegado a valorar:
• Individuos e interacciones sobre procesos y herramientas Software de
trabajo sobre documentación integral Colaboración del cliente sobre
negociación de contratos Responder al cambio sobre seguir un plan
• Es decir, si bien hay valor en los elementos de la derecha, valoramos
más los elementos de la izquierda.
Los principios de los métodos ágiles
• Involucramiento del cliente :
• Los clientes deben participar estrechamente en todo el proceso de desarrollo. Su función es proporcionar y priorizar los
nuevos requisitos del sistema y evaluar las iteraciones del sistema.
• Entrega incremental:
• El software se desarrolla en incrementos con el cliente especificando los requisitos que se incluirán en cada incremento.
• La gente no procesa:
• Las habilidades del equipo de desarrollo deben ser reconocidas y explotadas. Se debe dejar que los miembros del equipo
desarrollen sus propias formas de trabajo sin procesos prescriptivos.
• Aceptar el cambio:
• Espere que los requisitos del sistema cambien y, por lo tanto, diseñe el sistema para acomodar estos cambios.
• Mantener la simplicidad:
• Concéntrese en la simplicidad tanto en el software que se está desarrollando como en el proceso de desarrollo. Siempre
que sea posible, trabaje activamente para eliminar la complejidad del sistema
Aplicabilidad de los métodos ágiles
• Desarrollo de productos donde una compañía de software está
desarrollando un producto pequeño o mediano para la venta.
• Desarrollo de sistemas personalizados dentro de una organización,
donde existe un compromiso claro del cliente para involucrarse en el
proceso de desarrollo y donde no hay muchas reglas y regulaciones
externas que afecten el software.
• Debido a su enfoque en equipos pequeños y estrechamente
integrados, existen problemas para escalar métodos ágiles a sistemas
grandes
Problemas con los métodos ágiles
• Puede ser difícil mantener el interés de los clientes que participan en
el proceso.
• Los miembros del equipo pueden ser inadecuados para la intensa
participación que caracteriza los métodos ágiles.
• Dar prioridad a los cambios puede ser difícil cuando hay múltiples
partes interesadas.
• Mantener la simplicidad requiere un trabajo extra.
• Los contratos pueden ser un problema como con otros enfoques para
el desarrollo iterativo.
Métodos ágiles y mantenimiento del
software
• La mayoría de las organizaciones gastan más en el mantenimiento del software
existente que en el desarrollo de software nuevo. Por lo tanto, para que los
métodos ágiles sean exitosos, deben soportar el mantenimiento y el desarrollo
original.
• Dos cuestiones clave:
• ¿Se pueden mantener los sistemas que se desarrollan utilizando un enfoque ágil,
dado el énfasis en el proceso de desarrollo de minimizar la documentación formal?
• ¿Se pueden usar métodos ágiles de manera efectiva para desarrollar un sistema en
respuesta a las solicitudes de cambio de los clientes?
• Pueden surgir problemas si no se puede mantener el equipo de desarrollo original.
Desarrollo ágil impulsado por plan
• Desarrollo impulsado por el plan
• Un enfoque basado en planes para la ingeniería de software se basa en etapas
de desarrollo separadas con los resultados que se producirán en cada una de
estas etapas planificadas de antemano.
• No necesariamente un modelo en cascada: es posible un desarrollo incremental
basado en planes
• La iteración ocurre dentro de las actividades.
• Desarrollo ágil
• La especificación, el diseño, la implementación y las pruebas se entrelazan y los
resultados del proceso de desarrollo se deciden mediante un proceso de
negociación durante el proceso de desarrollo de software.
Desarrollo ágil impulsado por plan
Problemas técnicos, humanos,
organizativos.
• La mayoría de los proyectos incluyen elementos de procesos ágiles y basados en planes.
Decidir sobre el saldo depende de:
• ¿Es importante tener una especificación y un diseño muy detallados antes de pasar a la
implementación? Si es así, probablemente necesite usar un enfoque basado en un plan.
• ¿Es realista una estrategia de entrega incremental, en la que entregas el software a los
clientes y obtienes retroalimentación rápida de ellos? Si es así, considere usar métodos
ágiles.
• ¿Qué tan grande es el sistema que se está desarrollando? Los métodos ágiles son más
efectivos cuando el sistema se puede desarrollar con un pequeño equipo de ubicación
conjunta que puede comunicarse informalmente. Es posible que esto no sea posible
para sistemas grandes que requieren equipos de desarrollo más grandes, por lo que
puede ser necesario utilizar un enfoque basado en un plan.
Problemas técnicos, humanos,
organizativos
• ¿Qué tipo de sistema se está desarrollando?
• Se pueden requerir enfoques basados en planes para sistemas que requieren mucho análisis antes
de la implementación (por ejemplo, sistema en tiempo real con requisitos de tiempo complejos).
• ¿Cuál es la vida útil esperada del sistema?
• Los sistemas de larga duración pueden requerir más documentación de diseño para comunicar las
intenciones originales de los desarrolladores del sistema al equipo de soporte.
• ¿Qué tecnologías están disponibles para apoyar el desarrollo del sistema?
• Los métodos ágiles se basan en buenas herramientas para realizar un seguimiento de un diseño en
evolución.
• ¿Cómo se organiza el equipo de desarrollo?
• Si el equipo de desarrollo se distribuye o si parte del desarrollo se subcontrata, es posible que
necesite desarrollar documentos de diseño para comunicarse entre los equipos de desarrollo.
Problemas técnicos, humanos,
organizativos
• Existen problemas culturales u organizativos que pueden afectar el desarrollo del sistema?
• Las organizaciones de ingeniería tradicionales tienen una cultura de desarrollo basado en
planes, ya que esta es la norma en ingeniería.
• ¿Qué tan buenos son los diseñadores y programadores en el equipo de desarrollo?
• A veces se argumenta que los métodos ágiles requieren mayores niveles de habilidad que
los enfoques basados en planes en los que los programadores simplemente traducen un
diseño detallado en código
• ¿El sistema está sujeto a regulación externa?
• Si un sistema tiene que ser aprobado por un regulador externo (por ejemplo, el software de
aprobación de la FAA que es crítico para la operación de una aeronave), probablemente se
le solicitará que presente documentación detallada como parte del caso de seguridad del
sistema.
Programación extrema
• Quizás el método ágil más conocido y más utilizado.
• Extreme Programming (XP) adopta un enfoque "extremo" para el
desarrollo iterativo.
• Se pueden construir nuevas versiones varias veces al día;
• Los incrementos se entregan a los clientes cada 2 semanas;
• Todas las pruebas deben ejecutarse para cada compilación y la
compilación solo se acepta si las pruebas se ejecutan correctamente.
XP y principios ágiles
• El desarrollo incremental es compatible a través de lanzamientos de
sistema pequeños y frecuentes.
• La participación del cliente significa el compromiso del cliente a
tiempo completo con el equipo.
• Las personas no procesan a través de la programación en pareja, la
propiedad colectiva y un proceso que evita largas horas de trabajo.
• Cambio admitido a través de versiones regulares del sistema.
• Mantener la simplicidad a través de la refactorización constante del
código.
El ciclo de lanzamiento de
programación extrema
Prácticas de programación extremas
(a)
• Planificación incremental
• Los requisitos se registran en las tarjetas de historias y las historias que se incluirán en un lanzamiento están
determinadas por el tiempo disponible y su relativa prioridad. Los desarrolladores dividen estas historias en
"Tareas" de desarrollo. Ver Figuras 3.5 y 3.6.
• Pequeños lanzamientos
• Primero se desarrolla el conjunto útil mínimo de funcionalidades que proporciona valor comercial. Las
versiones del sistema son frecuentes y agregan gradualmente funcionalidad a la primera versión.
• Diseño simple
• Suficiente diseño se lleva a cabo para cumplir con los requisitos actuales y no más.
• Prueba de primer desarrollo
• Se utiliza un marco de prueba de unidad automatizado para escribir pruebas para una nueva pieza de
funcionalidad antes de que se implemente esa funcionalidad.
• Refactorización
• Se espera que todos los desarrolladores refactoricen el código continuamente tan pronto como se
encuentren posibles mejoras en el código. Esto mantiene el código simple y mantenible.
Prácticas de programación extremas
(b)
• Programación en pareja
• Los desarrolladores trabajan en parejas, verifican el trabajo de los demás y brindan el apoyo para hacer siempre un buen trabajo.
• Propiedad colectiva
• Los pares de desarrolladores trabajan en todas las áreas del sistema, por lo que no se desarrollan islas de experiencia y todos los
desarrolladores se hacen responsables de todo el código. Cualquiera puede cambiar cualquier cosa.
• Integración continua
• Tan pronto como se completa el trabajo en una tarea, se integra en todo el sistema. Después de dicha integración, todas las pruebas
unitarias en el sistema deben pasar.
• Marcha sostenible
• Grandes cantidades de horas extras no se consideran aceptables ya que el efecto neto es a menudo reducir la calidad del código y la
productividad a mediano plazo.
• Cliente en el sitio
• Un representante del usuario final del sistema (el cliente) debe estar disponible a tiempo completo para el uso del equipo de XP. En un
proceso de programación extremo, el cliente es miembro del equipo de desarrollo y es responsable de llevar los requisitos del sistema al
equipo para su implementación.
Escenarios de requisitos
• Los gerentes de proyecto que no tienen experiencia en métodos ágiles pueden ser
reacios a aceptar el riesgo de un nuevo enfoque.
• Las grandes organizaciones a menudo tienen procedimientos y estándares de
calidad que se espera que todos los proyectos sigan y, debido a su naturaleza
burocrática, es probable que sean incompatibles con los métodos ágiles.
• Los métodos ágiles parecen funcionar mejor cuando los miembros del equipo
tienen un nivel de habilidad relativamente alto. Sin embargo, dentro de las
grandes organizaciones, es probable que haya una amplia gama de habilidades y
capacidades.
• Puede haber resistencia cultural a los métodos ágiles, especialmente en aquellas
organizaciones que tienen una larga historia de uso de procesos de ingeniería de
sistemas convencionales.
Puntos clave