Problemática
La
empresa el Pato Volador en la que usted labora ha sido contratada por una
Agencia Espacial para desarrollar el software de un satélite que
se desarrollará en 3 meses como máximo, ya que es el tiempo en que será
el lanzamiento del satélite para ponerlo en órbita. El satélite auxiliará el
retorno de una las naves espaciales que regresan a la tierra.
La
Agencia Espacial ha puesto a su disposición a los ingenieros encargados de
proporcionar los requerimientos del software de tiempo completo, así como los
recursos e instalaciones necesarios para
lograr el desarrollo del software en el tiempo establecido.
El
Pato Volador ha propuesto a los
directivos de la Agencia Espacial la metodología de Programación Extrema (XP
por sus siglas en ingles) para la realización del software, ya que es
indispensable terminar en tiempo el proyecto.
Usted
debe utilizar la metodología XP para organizar a su equipo de trabajo y a los
ingenieros de la Agencia, explicándoles la metodología XP y las funciones que
deben realizar en las diferentes fases del proceso de desarrollo del software.
1.¿Qué
es la Programación Extrema?
La programación extrema se
basa en una serie de reglas y principios los
cuales se complementan para minimizar los tópicos problemas que pueden surgir
en todo desarrollo de proyectos software. Como dice el el autor de la
XP, Kent Beck:
"Todo en el software cambia. Los requisitos cambian. El diseño cambia. El negocio cambia. La tecnología cambia. El equipo cambia. Los miembros del equipo cambian. El problema no es el cambio en sí mismo, puesto que sabemos que el cambio va a suceder; el problema es la incapacidad de adaptarnos a dicho cambio cuando éste tiene lugar"
Por lo tanto, uno de los objetivos de la programación extrema es responder rápidamente a las necesidades del
cliente, aunque realice cambios en fases avanzadas del proyecto pero también buscando involucrar a todo el equipo en el desarrollo.
2.¿Cuáles
son los valores y principios de la
Programación Extrema?
Para
garantizar el éxito de un proyecto, los autores de XP han considerado como
fundamentales cuatro valores:
- Comunicación. Debido a que uno de los objetivos de la XP es el trabajo en equipo, este valor es fundamental para evitar problemas entre los integrantes del grupo de trabajo: jefes de proyecto, clientes y desarrolladores.
- Sencillez. Los programas deben ser los más sencillos posibles y tener la funcionalidad necesaria que se indican en los requisitos. No hay que añadir algo que no se necesite hoy.
- Retroalimentación. Las pruebas que se le realizan al software nos mantiene informados del grado de fiabilidad del sistema.
- Valentía. Asumir retos, ser valientes ante los problemas y afrontarlos. El intentar mejorar algo que ya funciona,
Los
principios fundamentales se apoyan en los valores y también son cuatro.
Se
busca.
- Realimentación veloz: Como lo mencionamos las pruebas son importantes, pero hay que tener en cuenta que éstas se deben estar realizando constantemente.
- Modificaciones incrementales: De los objetivos más importantes de la programación extrema está en dar al cliente lo que quiere y cuando quiere, así que es importante no detener el desarrollo del proyecto.
- Trabajo de calidad: Esencial para satisfacer las necesidades de los clientes
- Asunción de simplicidad: Como lo mencionamos, el proyecto debe ser lo más
3.¿Cuáles son las actividades, recursos y prácticas de la Programación Extrema?
12 son
las prácticas de la XP:
- El
juego de la planificación: De vital importancia ya que, si
no se piensa previamente lo que se quiere hacer, nuestro equipo estará
confundido y posiblemente ni siquiera conozca el objetivo del proyecto.
- Pequeñas
entregas Cada
versión debe de ser tan pequeña como fuera posible, conteniendo los
requisitos de negocios más importantes para que de esta manera nuestro cliente
pueda apreciar los avances.
- Metáfora Una metáfora es una
historia que todo el mundo puede contar acerca de cómo funciona el sistema,
lo cual sirve de mucho para que el equipo puede entender de una manera
sencilla lo que se pretende hacer.
- Diseño
sencillo: Es
importante no perder de vista que en un proyecto el objetivo siempre va a
ser cumplir una necesidad por lo que está demás el buscar un diseño
elaborado.
- Pruebas. Muy importantes pues no debe
existir ninguna característica en el programa que no haya sido probada
para así obtener un programa seguro que conforme pasa el tiempo es capaz
de aceptar nuevos cambios.
- Refactorización: Es el proceso de hacer
nuestro programa lo más simple posible sin perder la funcionalidad.
- Programación
por parejas Todo
el código de producción lo escriben dos personas frente al ordenador, con
un sólo ratón y un sólo teclado. Cada miembro de la pareja juega su papel:
uno codifica en el ordenador y piensa la mejor manera de hacerlo, el otro
piensa más estratégicamente
- Propiedad
colectiva Cualquiera
que crea que puede aportar valor al código en cualquier parcela puede
hacerlo, ningún miembro del equipo es propietario del código. Si alguien
quiere hacer cambios en el código puede hacerlo.
- Integración
continua El
código se debe integrar como mínimo una vez al día, y realizar las pruebas
sobre la totalidad del sistema.
- 40
horas semanales: Es
importante el descanso por lo que la programación extrema propone que sólo
se trabajen 40 horas a la semana.
- Cliente
en casa: Es
una buena práctica el buscar que el cliente nos ceda una persona que
conozca el negocio para que se integre en el equipo ya que normalmente
estos elementos son muy valiosos, pero debemos de hacerles ver que será
mejor para su negocio tener un software pronto en funcionamiento, y esto
no implica que el cliente no pueda realizar cualquier otro trabajo.
- Estándares de codificación Si los programadores van a estar tocando partes distintas del sistema, intercambiando compañeros, haciendo refactoring, debemos de establecer un estándar de codificación aceptado e implantado por todo el equipo.
También hay cuatro actividades
básicas que son:
- Codificar
- Hacer pruebas
- Escuchar
- Diseñar
Por último los recursos de la programación
extrema son:
- Tiempo: es necesario dedicar suficiente tiempo a la terminación de un proyecto sin embargo el tiempo se asigna a actividades separadas. Se debe buscar tiempo para escuchar al cliente, tiempo para diseñar, tiempo para codificar y tiempo para probar.
- Costo: el costo es la segunda variable que podemos ajustar a las actividades de codificar, diseñar, probar y escuchar están sobrecargando el proyecto y los recursos que pusimos en tiempo alcance y calidad no son suficientes para equilibrar el proyecto, a pesar de haber asignado una cantidad al costo.
4.¿Cuál
son las fases del proceso de desarrollo de XP?
El
ciclo de vida ideal de XP consiste de seis fases:
Fase
I: Exploración
En
esta fase, los clientes plantean a grandes rasgos las historias de usuario que
son de interés para la primera entrega del producto. Al mismo tiempo el equipo
de desarrollo se familiariza con las herramientas, tecnologías y prácticas que
se utilizarán en el proyecto. (:..) La fase de exploración toma de pocas
semanas a pocos meses, dependiendo del tamaño y familiaridad que tengan los
programadores con la tecnología.
Fase
II: Planificación de la Entrega
En
esta fase el cliente establece la prioridad de cada historia de usuario, y
correspondientemente, los programadores realizan una estimación del esfuerzo
necesario de cada una de ellas. Se determina un cronograma en conjunto con el
cliente. Una entrega debería obtenerse en no más de tres meses. Esta fase dura
unos pocos días.
Fase
III: Iteraciones
Esta
fase incluye varias iteraciones sobre el sistema antes de ser entregado. El
Plan de Entrega está compuesto por iteraciones de no más de tres semanas. Al
final de la última iteración el sistema estará listo para entrar en producción.
Los
elementos que deben tomarse en cuenta durante la elaboración del Plan de la
Iteración son: historias de usuario no abordadas, velocidad del proyecto,
pruebas de aceptación no superadas en la iteración anterior y tareas no
terminadas en la iteración anterior. Todo el trabajo de la iteración es
expresado en tareas de programación, cada una de ellas es asignada a un programador
como responsable, pero llevadas a cabo por parejas de programadores. Wake en
proporciona algunas guías útiles para realizar la planificación de la entrega y
de cada iteración.
Fase
IV: Producción
La
fase de producción requiere de pruebas adicionales y revisiones de rendimiento
antes de que el sistema sea trasladado al entorno del cliente. Al mismo tiempo,
se deben tomar decisiones sobre la inclusión de nuevas características a la
versión actual, debido a cambios durante esta fase.
Fase
V: Mantenimiento
Mientras
la primera versión se encuentra en producción, el proyecto XP debe mantener el
sistema en funcionamiento al mismo tiempo que desarrolla nuevas iteraciones.
Para realizar esto se requiere de tareas de soporte para el cliente.
Fase
VI: Muerte del Proyecto
Es cuando el cliente no tiene más historias para ser incluidas en el sistema. Esto requiere que se satisfagan las necesidades del cliente en otros aspectos como rendimiento y confiabilidad del sistema. Se genera la documentación final del sistema y no se realizan más cambios en la arquitectura. La muerte del proyecto también ocurre cuando el sistema no genera los beneficios esperados por el cliente o cuando no hay presupuesto para mantenerlo.
Es cuando el cliente no tiene más historias para ser incluidas en el sistema. Esto requiere que se satisfagan las necesidades del cliente en otros aspectos como rendimiento y confiabilidad del sistema. Se genera la documentación final del sistema y no se realizan más cambios en la arquitectura. La muerte del proyecto también ocurre cuando el sistema no genera los beneficios esperados por el cliente o cuando no hay presupuesto para mantenerlo.
5. ¿Qué
es una historia de usuario?
Las
historias de usuario son la técnica utilizada en XP para especificar los
requisitos del software. Se trata de tarjetas de papel en las cuales el cliente
describe brevemente las características que el sistema debe poseer. En
cualquier momento historias de usuario pueden romperse, reemplazarse por otras
más específicas o generales, añadirse nuevas o ser modificadas y cada historia
de usuario es lo suficientemente comprensible y delimitada para que los
programadores puedan implementarla en unas semanas.
Beck
en su libro presenta un ejemplo de ficha en la cual pueden reconocerse los
siguientes contenidos: fecha, tipo de actividad, prueba funcional, número de
historia, prioridad técnica y del cliente, referencia a otra historia previa,
riesgo, estimación técnica, descripción, notas y una lista de seguimiento con
la fecha, estado cosas por terminar y comentarios.
A continuación presentamos un mapa conceptual que representa todo lo que presentamos anteriormente:
Por último mostramos una presentación donde damos una solución al problema
Bibliography
A continuación presentamos un mapa conceptual que representa todo lo que presentamos anteriormente:
Por último mostramos una presentación donde damos una solución al problema
Bibliography
Penadés, P. L.-M. (n.d.). Métodologías ágiles
para el desarrollo de software: eXtreme Programming (XP). Retrieved from
Cyta: http://www.cyta.com.ar/ta0502/v5n2a1.htm
Robles, G. (2002, Octubre 10). Programación
eXtrema y Software Libre. Retrieved from
http://es.tldp.org/Presentaciones/200211hispalinux/ferrer/robles-ferrer-ponencia-hispalinux-2002.html
Silverio, E. E. (2008, Julio 13). Programacion
Extrema. Retrieved from SlideShare:
http://es.slideshare.net/edgarespinoza/programacion-extrema
Valverde, D. (n.d.). Introdución a la
Programación Extrema. Retrieved from
http://www.davidvalverde.com/blog/introduccion-a-la-programacion-extrema-xp/