La programación extrema, más conocida como Extreme Programming, es una metodología ágil dentro del desarrollo de la ingeniería del software. Encontramos que su creación y evolución comienza en 1999, llevado a cabo por Kent Beck en su libro Extreme Programming Explained: Embrace Change.
Esta metodología ágil surge como cambio ante los desarrollos tradicionales que se venían produciendo, de tal manera que se centra en la adaptabilidad, dándole el énfasis necesario a que los cambios de los requisitos se deben realizar durante la evolución del proyecto, tratando de adaptarse a cualquier cambio que se deba realizar, ya que esto nos lleva a una aproximación más realista en cualquier punto del ciclo de vida del software.
Programación Extrema
Extreme Programming - XP es un marco de desarrollo de software ágil, el cuál usamos con el objetivo de producir un software de calidad y sobre todo centrarse en la mejora de la eficiencia del grupo de trabajo. Por tanto, las variables a tener en cuenta son las mismas que podemos valorar en cada metodología ágil, las cuales son:
-
Coste
-
Tiempo
-
Calidad
-
Alcance
De ese modo, podemos valorar que Extreme Programming - XP que en cuanto a las variables para poder valorar, cualquiera de ellas dependerá de los factores externos al equipo de desarrollo, ya que hay que tener en cuenta los responsables de proyecto y a los clientes, y como hemos mencionado anteriormente en lo que se fundamenta este desarrollo software es en la énfasis que se realiza en el ciclo de vida, en cómo se adapta la producción a los cambios. Esto nos lleva a tener que analizar los valores, los principios y cómo se organiza un equipo de trabajo mediante una programación extrema.
Valores de Extreme Programming
Aparte de las variables con las que podemos calificar la usabilidad y rendimiento de una metodología ágil, también debemos hablar de los valores que la definen, en este caso encontramos que los valores de Extreme Programming han tenido dos ediciones, una primera edición en la cual se centraron básicamente en: simplicidad, comunicación, retroalimentación (feedback) y coraje. Posteriormente fue añadida una segunda edición, la cuál añadió más detalles y mejoras a la primera edición, tratando de hacer una metodología más completa y útil, dando a ser definidos los siguientes valores:
-
Comunicación
La comunicación es uno de los aspectos más importantes dentro del desarrollo software, ya que el equipo tiene que estar en constante interacción para poder saber cómo continúan las distintas partes de la producción. Pero aparte de la comunicación en el desarrollo, también es importante este ámbito con el cliente, de tal manera que la información recolectada y desarrollada, además de todos los requisitos cumplidos se irán informando al cliente.
-
Simplicidad
La simplicidad trata de ajustarse a realizar las necesidades de hoy, y no de mañana, ya que debemos codificar y llevar a cabo el producto que se necesita en este momento y no en el futuro, dándole la importancia a tener en cuenta todos los detalles del presente para poder tratar los fallos inmediatamente y de una manera más sencilla.
-
Retroalimentación
Mediante la retroalimentación o feedback, podemos conocer la opinión de los desarrolladores y del cliente, de cómo se está llevando a cabo el desarrollo del producto, de su propio funcionamiento, esto nos lleva a entender la filosofía del ciclo de vida de una mejor manera, y a entender la producción de una manera ágil en la cuál los desarrolladores pueden centrarse en las cosas importantes.
-
Respeto
El respeto es la clave de cualquier equipo en cualquier ámbito, ya que mediante el respeto podemos trabajar de una manera más eficiente y productiva. Esto nos lleva a poder mantener un mayor ritmo de producción, ya que los errores, fallos, o inconvenientes se tratarán de una mejor manera intentando que todo el equipo esté en las mejores condiciones posibles.
-
Valentía
La valentía se trata de llevar a cabo el proyecto de modo que se traten los errores y fallos nada más detectarlos, de manera correcta aplicando los ciclos de vida cortos. Esto es intentar que cada miembro del equipo no tenga miedo a realizar fallos, ni a cometer errores, ya que esto lleva a que el equipo de producción y desarrollo sea más compacto y conjunto, que se puedan superar errores de manera más ágil.
Características de Extreme Programming
El Extreme Programming - XP como mencionamos anteriormente es una metodología ágil que se basa en iteraciones cortas en el ciclo de vida de producción, lo que nos permite realizar pruebas del producto cada período de tiempo pequeño, así podemos realizar análisis de fallos y errores pequeños y evitar que se hagan muy grandes e inevitables.
Así, podemos describir una serie de características de este tipo de desarrollo software:
-
Desarrollo iterativo e incremental
-
Pruebas unitarias continuas
-
Integración del equipo de programación con el cliente
-
Corrección de todos los errores
-
Refactorización del código
-
Propiedad del código compartida
-
Simplicidad en el código
A partir de estas características principales, las cuales intercalamos junto con los valores que hemos comentado anteriormente, podemos desarrollar una buena programación extrema durante nuestro proyecto. De este modo llevaremos a cabo el uso de la metodología ágil y podremos realizar la producción más eficientemente, eficaz y productiva.
Principios de Extreme Programming
Como toda metodología ágil, en su definición encontramos unos valores, una características principales y además unos principios básicos para poder seguir la correcta implementación.
En este caso encontramos los principios que tenemos en Extreme Programming que las podemos ver resumidas en la siguiente imágen.
Baby steps⟶ Es el modo que usamos para poder realizar grandes cambios en pequeñas partes.
Flow⟶ Extreme Programming está basado en un flujo continuo de iteraciones.
Reflection⟶ Centrarse no solo en el trabajo, sino en el por qué se hace y cómo hacerlo.
Improvement⟶ El seguimiento de un desarrollo correcto y la mejora de la producción.
Mutual benefits⟶ Buscar el beneficio de todos los integrantes y no únicamente el propio.
Failure⟶ El fallo es lo que hace saber como realizar correctamente las tareas, por ello no tomar los fallos como algo malo.
Redundancy⟶ No todos los problemas por muy parecidos que sean van a ser resueltos de la misma forma.
Roles en Extreme Programming
En todo equipo encontramos distintos roles y cada metodología podemos ver distintos papeles y cómo desempeñarse, por tanto en Extreme Programming encontramos los siguientes:
Clientes: Establecen cuales son los puntos a seguir para poder llegar al producto final y como se debe realizar, en función a sus necesidades y requerimientos.
Programadores: Son los encargados de llevar a cabo todo el Extreme Programming, ya que serán entre ellos los que tendrán que distribuir el trabajo y toda la carga total de información a analizar para poder producir o solucionar fallos.
Testers: Son los encargados de ayudar al cliente a guiar y decidir de cómo se deben realizar diferentes gestiones.
Coach: Asesoran al grupo de programadores y desarrolladores para poder realizar correctamente la producción y desarrollo del proyecto solicitado por clientes y analizado y gestionado por los testers.
Manager: Encargado de todo el proyecto, será el responsable de proveer a todo el grupo los recursos necesarios, las plataformas donde se desarrollará, y todo lo requerido para poder llevar a cabo la producción del proyecto de una manera correcta y ágil, ya que además de proveer también gestiona.
Add new comment