Programación XP
Programación XP
Programación XP
XP es una abreviación en inglés que significa programación extrema, esta metodología es una
de las primeras en aparecer y es una de las mas exitosas en estos tiempos.
Inició por los años 90, es una de las pioneras en la parte de las metodologías ágiles, la persona
que lidera es Kent Beck, él es uno de los organizadores del manifiesto ágil.
XP ya tiene variantes, una de ellas es el IXP o llamada XP industrial que es una variante para
organizaciones más grandes.
XP
Xp es una de las pioneras de las metodologías ágiles. ¿Qué quiere decir una metodología ágil?
Es una metodología que te permite adaptar el proyecto a las distintas condiciones de trabajo,
es muy usada por las empresas ya que gestionan sus proyectos de una manera más flexible y
eficaz aumentando su productividad con unos costos más reducidos.
----------------------
DEFINICIÓN
Una vez explicado que es una metodología ágil podemos explicar que es el xp,
Esta metodología se basa en las necesidades del cliente para poder brindarles un muy buen
producto de buena calidad en el menor tiempo posible.
Cabe recalcar que es muy importante la comunicación fluida entre todos los participantes.
XP se adecua para proyectos con requisitos imprecisos y muy cambiantes, y donde existe un
alto riesgo técnico.
NOTA: El XP se basa en las interacciones cortas, de aproximadamente una semana, en las que
el equipo de trabajo reducido (máximo 12 personas) ejecuta unas tareas concretas. Una vez
finalizado el período, se hace el test y se evalúan los resultados obtenidos.
VALORES
EL XP Incorpora cinco valores que son fundamentales para afrontar este tipo de metodología.
Cualquier grupo de trabajo que quiera implementar XP tiene que cultivar esos valores, tiene
que practicarlos
1) La comunicación
Tiene que ser constante entre todos los participantes del proyecto, sea la persona que
es el líder del proyecto, sea el cliente, etc tiene que haber una comunicación eficaz
entre todos.
La comunicación con el cliente tiene que ser fundamental, recordemos que el cliente
es una parte esencial de la metodología xp, por eso debe haber una comunicación
constante pues el proyecto se basa netamente en que él sea parte del equipo de
desarrollo y que vea cómo se está trabajando el software que al final va hacer utilizado
por él y sus empleados, la empresa u organización.
Aquí a nivel profesional hay que quitarse esa parte de que a mi me da miedo hablar en
público o mejor me quedo callado y no pregunto, porque por lo menos en ingeniería
de software o en lo que es el ámbito informático si usted no hace las preguntas en el
momento adecuado es probable que vaya directo a un fracaso en el proyecto de
software. (Establezcamos una comunicación eficaz)
2) Simplicidad: Como decía Einstein que lo más difícil es lograr volver simple a lo
complejo, tiene toda la razón, entre más simple o fácil se vean las cosas será más fácil
para la persona que lo esté utilizando. Si bien es cierto que nosotros elaboramos el
proyecto, tenemos que dar facilidades a la persona que va a usar nuestro programa o
proyecto ya que quizá no sepa mucho de tecnología, es por eso que el diseño que se
haga tiene que ser algo fácil, simple y sencillo.
Por lo tanto lo que la simplicidad busca es agilizar el desarrollo del proyecto, facilitar el
mantenimiento y usar un método simple y ágil.
4) Valentía: Todas las metodologías ágiles rompen el esquema, y al hacerlo siempre está
el miedo al cambio, por la valentía significa asumir retos, ser valiente ante los
problemas y afrontarlos
Refactorización del código, es decir, rescribir ciertas partes del código para aumentar
su legibilidad y mantenibilidad, pero sin modificar su comportamiento. Las pruebas
han de garantizar que en la refactorización no se ha introducido ningún fallo.
CICLO DE VIDA
Los ciclos de vida son relativamente cortas ya que se piensa que entre más
rápido se le entreguen desarrollos al cliente, más retroalimentación se va
a obtener y esto va a representar una mejor calidad del producto a largo
plazo. Existe una fase de análisis inicial orientada a programar las
iteraciones de desarrollo y cada iteración incluye diseño, codificación y
pruebas, fases superpuestas de tal manera que no se separen en el
tiempo.
El ciclo de vida esta conformado con una serie de fases:
Fase de exploración: Consta en entender lo que el cliente necesita,
además el usuario determina que funcionalidades va a tener el sistema
elaborado.
Fase de Planificación:
Aquí se hace una proforma y una estimación de los costos, además se
coordina el plan de entrega.
Fase de Iteraciones:
Cabe recalcar que todo el proyecto se divide en iteraciones de un tiempo
máximo de 3 semanas y se detalla cada tarea a realizar.
utilizadas para medir el progreso del proyecto. Una iteración terminada
sin errores es una medida clara de avance
Fase de Producción:
El usuario decide si se pone en ejecución el proyecto o chechea si hacen
falta funcionalidades. La fase de producción requiere de pruebas adicionales
y revisiones de rendimiento antes de que el sistema sea trasladado al
entorno del cliente.
Fase de mantenimiento
La fase de mantenimiento puede requerir nuevo personal dentro del equipo y cambios en su
estructura.
Fase de muerte
Esta fase se da cuando el cliente no tiene más requerimientos por incluir dentro del sistema.
Esto requiere que las necesidades del cliente se satisfagan. Se genera la documentación final
del sistema y no se realizan más cambios en la arquitectura. También puede ocurrir cuando el
proyecto no cumple las expectativas del cliente o no hay dinero para cubrir el proyecto.
Estas fases trabajan como un ciclo, todas las fases están integradas y cada vez que hacen ese
giro realizan una entrega, que es el incremente de software, que es como un avance, y
nuevamente se sigue trabajando para construir el siguiente incremento.
Estas historias de usuario, es como una breve narración, nada del otro mundo
y por lo general se hace en una hoja o en un post it, y ahí se dice lo que el
cliente quiere para que se desarrolle el software. Prácticamente es una frase.
Ejm: yo como facturador del sistema quiero poder ingresar un nuevo cliente. Yo
como cliente… PERO también, existen historias escritas por el equipo de
trabajo, donde detallan funcionalidades internas del software. Y cada historia
tiene un valor y una prioridad (urgente normal o baja) y a ellas se les asigna un
costo en tiempo.
En esta fase resalta más la práctica de los 5 valores antes mencionados, sobre
todo el valor que es la comunicación, una comunicación asertiva tanto con el
cliente como con todo el grupo de trabajo en el momento de establecer esas
historias de usuario, manteniendo el respeto, esa valentía de poder afrontar los
procesos, etc.
Aquí también vemos el plan de iteracción, en este plan se ven los diferentes
avances del proyecto. Aquí definimos el plazo del proyecto hasta su
lanzamiento, también se pueden ver otros factores como la velocidad del
proyecto y la división del grupo de trabajo(para realizar la programación en
pareja), osea en la planificación en si se define todo lo que se va hacer en
adelante y hasta el final del proyecto y todo lo que se va necesitar implementar
o requerir para realizar este proyecto.
Diseño:
La metodología sugiere ser diseño simple y sencillo, ¿porque diseño simple?
pues para hacerlo menos complicado y seguir con el diseño más fácil y
entendible.
Aquí podemos encontrar dos casos, uno es cuando encontramos una historia
de usuario muy simple, o lo otro es cuando es usuario solicita algo más
complicado, en este caso el programador tal vez ya lo ha aplicado en otras
partes y sabe cómo desarrollarla, cuanto tiempo se demorará.
Codificación:
● Aquí cuando llegamos a la codificación podemos darnos cuenta si es
que faltó algo en el diseño o no, en todo caso si es que hay algo por modificar.
De ser así, lo agregamos o lo modificamos.
Es por ello que las actividades a realizar las tienen que afrontar los dos
programadores al mismo tiempo, no es que los dos se parten el trabajo no sino,
ambos realizan el mismo proyecto con su diseño previamente elaborado y
cuando ya lo tengan terminado ellos se reúnen y hacen unas pruebas y
deciden cuál de las dos es la que se va a entregar, o en todo caso deciden
fusionarla y construyen un proyecto más elaborado y ese es el que se va a
entregar al cliente, ahí se practica lo que se conoce como la prueba unitaria,
esta prueba es una prueba que te asegura que esta completamente
desarrollada y que esta lista para ser presentada al cliente.
Pruebas:
● En conclusión se hacen test en diferentes partes del código para verificar
que no haya redundancia de datos, cabe recalcar que las pruebas o test se
tiene que realizar en un ambiente real y te permiten detectar un error lo más
pronto posible.
● Ejm yo entrego los datos del cliente , luego el sistema cuando consulte,
me tiene que aparecer ese cliente.
LANZAMIENTO
● Es cuando ya el proyecto está terminado y va a ser entregado al cliente.
ROLES
PROGRAMADOR(PROGRAMER)
Como todos conocemos, simplemente es aquella persona que
escribe el código y realiza las pruebas unitarias, las pruebas
unitarias son pruebas, como su propio nombre lo dice, osea que
ciertas unidades de códigos van hacer probadas una a la vez para
ver su funcionalidad.
En concreto el programador es el responsable de las decisiones
técnicas, es también el responsable de construir el sistema, de
diseñar, programar y realizar las pruebas
CLIENTE (CUSTOMER)
El cliente elabora los requerimientos, es el que va a encargar el trabajo va
a escribir las historias de usuario y va a priorizar las tareas a realizar.
ENTRENADOR (COUCH)
Es el responsable del equipo en XP, ósea se encarga de que este
siga el proceso correctamente.
Podemos decir que él es: el líder del equipo - toma las decisiones
importantes, es también el principal responsable del proceso y
tiende a estar en un segundo plano a medida que el equipo
madura. Asesora al resto de componentes del equipo y marcan
el rumbo del proyecto.
RASTREADOR (TRACKER)
Es el que mide el progreso del proyecto y lo compara con lo
estimado.
Es la persona que monitorear el progreso del desarrollo del
proyecto, verificando que esto se de en el tiempo estimado y
detectar a tiempo los problemas ocurridos.
En simples palabras se encarga del seguimiento del proyecto.
PROBADOR (TESTER)
Él se va a encargar de verificar si las pruebas unitarias van a estar
bien oh no, algo parecido que el programador, solo que el
probador va a difundir de cierta manera los resultados
obtenidos.
La calidad del producto final depende en gran medida de su
trabajo.
MANAGER (BIGBOSS)
Es la persona más cercana entre el cliente y los programadores es
Dentro de sus responsabilidades está obtener todos los recursos
necesarios para la realización del proyecto.
-Ejm: Todas las herramientas que el equipo de desarrollo necesita
para poder empezar a trabajar.
- Además se encarga de administrar las reuniones y su principal
labor pues es la coordinación del equipo y la coordinación del
proyecto.
ACTIVIDADES
Codificar: Es la única actividad de la que no podremos prescindir. Sin
código fuente no hay programa, aunque hay gente que cuenta que existe
software en producción del que se perdió el código fuente. Por tanto,
necesitamos codificar y plasmar nuestras ideas a través del código. En una
programación en PX en pareja el código expresa tu interpretación del
problema, así podemos utilizarlo para comunicar, para hacer mías tus ideas, y
por tanto para aprender y mejorar.