domingo, 28 de febrero de 2016

Programación Extrema


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:
  1. Codificar
  2. Hacer pruebas
  3. Escuchar
  4. 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.

    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

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/


No hay comentarios.:

Publicar un comentario