Documente Academic
Documente Profesional
Documente Cultură
Kent Beck ingeniero de software estadounidense, uno de los creadores de las metodologías de
desarrollo de software de programación extrema (eXtreme Programming o XP) y el desarrollo
guiado por pruebas (Test-Driven Development o TDD), también llamados metodología ágil. Autor
del primer libro sobre la materia, Extreme Programming Explained: Embrace Change (1999).
Los autores (o mejor dicho, los propulsores como el propio Kent Beck, Ward
Cunningham o Ron Jeffries entre otros) de la Programación Extrema, fueron a la
web Portland Pattern Repository y empezaron a hablar de ella y promocionarla, de
lo que era y cómo realizarla. Estos propulsores de la XP hablaban de ella en cada
ocasión que tenían y en cada página que, poco o mucho hablara de temas de
programación.
Este hecho, llegó a molestar a buena parte de la comunidad que intentaba discutir
sobre temas de programación. Fue tanta esta molestia que nació el fenómeno XP
Free Zone (zona libre de XP) en determinadas webs como petición de no hablar de
Programación Extrema en ella.
La discusión sobre temas de diseño de modelos de programación sobre los cambios
recientes se hizo tema difícil porque la mayoría de la actividad fue relacionada con
la Programación Extrema. Eventualmente, y debido a esto, la mayoría de la gente
que solía discutir sobre los temas de diseño de modelos de programación fue
apartándose de este ambiente para discutir sus ideas en otros ambientes más
"reservados". La comunidad empezó a referirse a estos sitios como a Salas Wiki
(Wards Wiki).
DEFINICIÓN
La metodología XP o Programación
Extrema (Extreme Programming) es
una metodología ágil para el desarrollo
de software y consiste básicamente en
ajustarse estrictamente a una serie de
reglas que se centran en las
necesidades del cliente para lograr un
producto de buena calidad en poco tiempo, centrada en potenciar las relaciones
interpersonales como clave para el éxito del desarrollo de software.
La filosofía de XP es satisfacer al completo las necesidades del cliente, por eso lo
integra como una parte más del equipo de desarrollo. Promueve el trabajo en
equipo, preocupándose en todo momento del aprendizaje de los desarrolladores y
estableciendo un buen clima de trabajo.
Este tipo de programación es la adecuada para los proyectos con requisitos
imprecisos, muy cambiantes y donde existe un alto riesgo técnico.
XP está diseñada para el desarrollo de aplicaciones que requieran un grupo de
programadores pequeño, dónde la comunicación sea más factible que en grupos de
desarrollo grandes. La comunicación es un punto importante y debe realizarse entre
los programadores, los jefes de proyecto y los clientes.
Es habitual relacionarla con scrum, y la combinación de ambas asegura un mayor
control sobre el proyecto, y una implementación más efectiva y eficiente.
A continuación se muestra un gráfico estadístico sobre el uso de las metodologías
agiles, en la cual destaca la programación XP:
Figura 1: Datos Estadísticos
CARACTERÍSTICAS
VALORES XP
Kent Beck 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. A fin de lograr la
comunicación eficaz entre los ingenieros de software y otros participantes (por
ejemplo, para establecer las características y funciones requeridas para el
software), XP pone el énfasis en la colaboración estrecha pero informal (verbal)
entre los clientes y los desarrolladores, en el establecimiento de metáforas para
comunicar conceptos importantes, en la retroalimentación continua y en evitar la
documentación voluminosa como medio de comunicación.
Valentía: Requiere que los desarrolladores vayan a la par con el cambio, porque
sabemos que este cambio es inevitable, pero el estar preparado con una
metodología ayuda a ese cambio. Programa para hoy y no para mañana.
Respeto: El equipo debe trabajar como uno, sin hacer decisiones repentinas.
Extreme Programming promueve el trabajo del equipo. Cada integrante del proyecto
(cliente, desarrolladores, etc.) forman parte integral del equipo encargado de
desarrollar software de calidad. El equipo debe trabajar como uno, sin hacer
decisiones repentinas.
Figura 3: Valores XP
VENTAJAS Y DESVENTAJAS DE LA METODOLOGÍA XP
VENTAJAS:
DESVENTAJAS:
2ª : Diseño
Diseños simples: La metodología X.P sugiere que hay que conseguir diseños
simples y sencillos. Hay que procurar hacerlo todo lo menos complicado posible
para conseguir un diseño fácilmente entendible e impleméntable que a la larga
costará menos tiempo y esfuerzo desarrollar. Glosarios de términos: Usar
glosarios de términos y un correcta especificación de los nombres de métodos y
clases ayudará a comprender el diseño y facilitará sus posteriores ampliaciones
y la reutilización del código. Riesgos: Si surgen problemas potenciales durante
el diseño, X.P sugiere utilizar una pareja de desarrolladores para que investiguen
y reduzcan al máximo el riesgo que supone ese problema.
Funcionalidad extra: Nunca se debe añadir funcionalidad extra al programa
aunque se piense que en un futuro será utilizada. Sólo el 10% de la misma es
utilizada, lo que implica que el desarrollo de funcionalidad extra es un
desperdicio de tiempo y recursos. Refactorizar: Refactorizar es mejorar y
modificar la estructura y codificación de códigos ya creados sin alterar su
funcionalidad. Refactorizar supone revisar de nuevo estos códigos para procurar
optimizar su funcionamiento. Es muy común rehusar códigos ya creados que
contienen funcionalidades que no serán usadas y diseños obsoletos. Esto es un
error porque puede generar código completamente inestable y muy mal
diseñado; por este motivo, es necesario refactorizar cuando se va a utilizar
código ya creado.
Tarjetas C.R.C. El uso de las tarjetas C.R.C (Class, Responsabilities and
Collaboration) permiten al programador centrarse y apreciar el desarrollo
orientado a objetos olvidándose de los malos hábitos de la programación
procedural clásica.
Las tarjetas C.R.C representan objetos; la clase a la que pertenece el objeto se
puede escribir en la parte de arriba de la tarjeta, en una columna a la izquierda
se pueden escribir las responsabilidades u objetivos que debe cumplir el objeto
y a la derecha, las clases que colaboran con cada responsabilidad.
3ª : Codificación.
4ª : pruebas
-Un punto importante es crear test que no tengan ninguna dependencia del
código que en un futuro evaluará. Hay que crear los test abstrayéndose del
futuro código, de esta forma aseguraremos la independencia del test
respecto al código que evalúa.
-Como se comentó anteriormente los distintos test se deben subir al
repositorio de código acompañados del código que verifican. Ningún código
puede ser publicado en el repositorio sin que haya pasado su test de
funcionamiento, de esta forma, aseguramos el uso colectivo del código
(explicado en el apartado anterior).
-El uso de los test es adecuado para observar la refactorización. Los test
permiten verificar que un cambio en la estructura de un código no tiene
porqué cambiar su funcionamiento.
Fases de la Metodología XP
Si bien el ciclo de vida de un proyecto XP es muy dinámico, se puede separar en
las siguientes Fases:
Exploración,
Iteraciones,
Producción,
Mantenimiento y
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.
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. En la
primera iteración se puede intentar establecer una arquitectura del sistema que
pueda ser utilizada durante el resto del proyecto. Esto se logra escogiendo las
historias que fuercen la creación de esta arquitectura, sin embargo, esto no siempre
es posible ya que es el cliente quien decide qué historias se implementarán en cada
iteración (para maximizar el valor de negocio). 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:
Es posible que se rebaje el tiempo que toma cada iteración, de tres a una semana.
Las ideas que han sido propuestas y las sugerencias son documentadas para su
posterior implementación (por ejemplo, durante la fase de mantenimiento).
Fase V: Mantenimiento
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.
ROLES
Aunque en otras fuentes de información aparecen algunas variaciones y
extensiones de roles XP, en este apartado describiremos los roles.
Cliente. - El cliente escribe las historias de usuario y las pruebas funcionales para
validar su implementación. Además, asigna la prioridad a las historias de usuario y
decide cuáles se implementan en cada iteración centrándose en aportar mayor valor
al negocio. El cliente es sólo uno dentro del proyecto, pero puede corresponder a
un interlocutor que está representando a varias personas que se verán afectadas
por el sistema.
Determina cuándo es necesario realizar algún cambio para lograr los objetivos de
cada iteración.
NOTACIÓN
Historias de Usuario
Historia de Usuario
Prioridad en Negocio:
Puntos Estimados:
(Alta / Media / Baja)
Riesgo en Desarrollo:
Puntos Reales:
(Alto / Medio / Bajo)
Descripción:
Observaciones:
Estas deben proporcionar sólo el detalle suficiente como para poder hacer
razonable la estimación de cuánto tiempo requiere la implementación de la historia,
difiere de los casos de uso porque son escritos por el cliente, no por los
programadores, empleando terminología del cliente. "Las historias de usuario son
más "amigables" que los casos de uso formales".
Nombre:
Descripción:
Condiciones de Ejecución:
Resultado Esperado:
Evaluación de la Prueba:
Task Card
Tarea de Ingeniería
Número
Historia de Usuario (Nro. y Nombre):
Tarea:
Nombre Tarea:
Tipo de Tarea :
Programador Responsable:
Descripción:
Estas tarjetas se dividen en tres secciones que contienen la información del nombre
de la clase, sus responsabilidades y sus colaboradores. En la siguiente figura se
muestra cómo se distribuye esta información.
Los pasos a seguir para llenar las tarjetas son los siguientes:
- Encontrar clases
- Encontrar responsabilidades
- Definir colaboradores
- Disponer las tarjetas
BIBLIOGRAFÍA
http://www.diegocalvo.es/metodologia-xp-programacion-extrema-metodologia-agil/
http://managementplaza.es/blog/sabes-como-funciona-xp/
https://ingsotfwarekarlacevallos.wordpress.com/2015/05/08/metodologia-de-
desarrollo-agil-xp-y-scrum/
https://sites.google.com/site/xpmetodologia/home/introduccion
https://ingenieriadesoftware.blogia.com/2008/090201-historia-de-la-programacion-
extrema.php
https://iswugaps2extremeprogramming.wordpress.com/2015/09/13/sabemos-que-
todo-tiene-un-origen-conoce-como-surgio-la-maravilla-xp/
Libros Consultados: