Documente Academic
Documente Profesional
Documente Cultură
1
Programación Extrema y Test Driver Development
.
garantizará que el producto final sea el deseado por el prueba unitaria, ejecutar la prueba para, implementar el
cliente. Según afirma Booch (2001), todas estas razones código mínimo para superar la prueba y ejecutar de nuevo
son las que hacen que los procesos indicados por las la prueba para ver que se supera.
comunidades de Extreme Programming y de Open Lo que se desea conseguir al ejecutar la prueba
Source hayan suscitado tanto interés. [1] después de crearla es ver que esta falla y que será
necesario hacer algo en el código para que este pase, y
así solo será necesario volver a aplicar el proceso descrito
anteriormente hasta haber resuelto la funcionalidad o
funcionalidades que se debían implementar.
2
Programación Extrema y Test Driver Development
.
3
Programación Extrema y Test Driver Development
.
4
Programación Extrema y Test Driver Development
.
5
Programación Extrema y Test Driver Development
.
5.3.1 PLANIFICACIÓN El mejor programa será aquel que cumpla con los
requisitos y sea más simple. Es importante proporcionar
El cliente (o su representante) escribirá sus un software que cubra las necesidades de un cliente. Ni
necesidades para definir concretamente las actividades más ni menos.
que el sistema debe realizar. En esta fase se creará un
documento que contendrá historias de usuario que 5.3.7 TESTEOS CONTINUOS
forman el plan de liberación, el cual define los tiempos de
entrega de la aplicación para poder recibir feedback por Lo primero que se debe hacer es establecer un
parte del cliente. período de pruebas de aceptación del programa, en el
cual se definirán las entradas y salidas del sistema.
5.3.2 ESTÁNDAR DE PROGRAMACIÓN Básicamente se define lo que debe hacer el software
desarrollado. Como si fuese una caja negra.
Se debe establecer un estándar de codificación
aceptado e implementado por todo el equipo. Se 5.3.8 REFACTORING
promueve la codificación en parejas, la propiedad
colectiva, el testeo continuo, la integración continua. Este término en esta parte está asociado a que el
código debe ser simple y claro. Con lo cual se pretende el
huir del código duplicado.
Sin los estándares de codificación, la
metodología eficaz de programación se Cuando implementamos nuevas características en
vendría abajo. nuestros programas nos planteamos la manera de
hacerlo lo más simple posible, después de implementar
Se relaciona con el sistema metafórico, esta característica, nos preguntamos cómo hacer el
dado que es necesario establecer un programa más simple sin perder funcionalidad, este
criterio fijo que proporcione reglas para la proceso se le denomina recodificar o refactorizar
(refactoring). [14]
creación de nombre para variables y
métodos. La duplicación de código complica la tarea de
programación por diversas causas, una de ellas es que
Establecer un estándar de codificación de “ensucia” el programa haciéndolo más largo de lo
tal forma que los programadores sigan los estrictamente necesario. Con esto aumenta las
mismos criterios para desarrollar código. posibilidades de tener errores, y hace incomprensible o
de difícil lectura el programa. En ciertas ocasiones,
cuando una nueva “historia de usuario” va a ser
Se gana eficacia al decidir de ante mano el
implementada, es normal que los objetos existentes
mejor estándar para satisfacer los deban ser estructuralmente cambiados o incluso
requerimientos propuestos por el cliente. debamos crear nuevos objetos.
5.3.3 PROGRAMACIÓN EN PAREJAS Para entonces, se discutirá la necesidad de
refactorizar por parte del equipo, que confirme la validez
Consiste en escribir código en parejas compartiendo o no de dicho proceso.
una sola máquina. Según los experimentos ya realizados
sobre este método, se producen mejores y más El Proceso a seguir es el siguiente:
consistentes aplicaciones a igual o menor coste. Una vez se empiece a trabajar en la nueva
estructura del objeto y cuando se esté conforme,
5.3.4 40 HORAS POR SEMANA será publicado al equipo de programación.
Los programadores cansados escriben peor código. Dada la aprobación, la pareja comenzara con la
Es importante minimizar las horas extras y mantener a los implementación del nuevo objeto, el código
programadores frescos y descansados. De esta manera, existente de ese nuevo será incluido de nuevo
se generará mejor código. Si es necesario hacer horas en el objeto, donde la nueva funcionalidad no
extras, quiere decir que el proyecto está mal planificado. está todavía incluida.
5.3.5 VERSIONES PEQUEÑAS
Una vez terminada la nueva funcionalidad, la
pareja comenzara con la fase de pruebas.
El producto es evaluado en un ambiente real
mediante la colocación de un sistema sencillo en
Se cambian todas las invocaciones y se ejecuta
producción el cual se actualizará rápidamente, es decir,
todos los métodos de integración de ambos
6
Programación Extrema y Test Driver Development
.
componentes, que serán analizados por la Permite tener conciencia en todo momento del
propia pareja de creación de la nueva trabajo que se lleva desarrollado y también
funcionalidad. permite tener a mano cuando el cliente solicite
una versión perfectamente funcional y con los
Las nuevas funcionalidades son adheridas al últimos avances.
proyecto y la secuencia de codificación y análisis
normal sigue en curso. La integración continua es introducir todos los
cambios producidos a lo largo del día a final de
Cabe señalar que la refactorización es la jornada.
indispensable en la fase de pruebas, los cambios que se
pueden someter a nuestro código no son decisiones 5.3.11 EL CLIENTE EN SU SITIO
aleatorias y cualquier fallo podría tener consecuencias
drásticas en cuanto a la operatividad de nuestro software. El cliente elabora especificaciones de los
requerimientos iniciales asi como las funcionalidades que
5.3.9 PROPIEDAD COLECTIVA DEL CÓDIGO debe cumplir el proyecto, aunque pueden que no queden
(COLLECTIVE OWNERSHIP) claras en un principio.
El código tiene propiedad compartida. Nadie es Así, se propone que el propio cliente pase a formar
propietario de nada, ni siquiera de lo que ha desarrollado. parte del proyecto, que se involucre en la producción del
Todos los programadores son "dueños" de todo el código. software desde sus posibilidades que no son escasas. El
Es decir, que cierto código que el equipo genere para equipo de producción debe estar continuamente en
llevar a cabo un proyecto es propiedad de cada uno de comunicación con el cliente, que deberá aclarar en la
los componentes del equipo. medida de lo posible los requerimientos que necesitara
utilizar.
Cualquier componente del equipo podrá
modificar un módulo o porción generada por otro Se soluciona o al menos se facilita la compresión de
componente si lo cree conveniente. las funcionalidades, que en ciertos casos suele ser la
etapa más difícil, más cara y más lenta del desarrollo del
En un equipo no existen derechos de autor ni proyecto.
prohibiciones de ningún tipo a la hora de
modificar el código de un compañero. 5.3.12 ESTÁNDARES DE CODIFICACIÓN
7
Programación Extrema y Test Driver Development
.
8
Programación Extrema y Test Driver Development
.
Ejemplo de un test:
9
Programación Extrema y Test Driver Development
.
Esta etapa se fundamenta en pasar la aplicación a Es cuando el cliente no tiene más historias para ser
producción cuando se alcancen las funcionalidades incluidas en el sistema. Esto requiere que se satisfagan
mínimas que aporten un valor real al negocio y una las necesidades del cliente en otros aspectos como
estabilidad confiable; esto nos hace que nuestra rendimiento y confiabilidad del sistema. Se genera la
aplicación aporte sus primeros frutos a la empresa en aún documentación final del sistema y no se realizan más
tempranas etapas de lo que es el proyecto de desarrollo. cambios en la arquitectura. La muerte del proyecto
también ocurre cuando el sistema no genera los
Para el ejemplo en desarrollo, esta etapa es beneficios esperados por el cliente o cuando no hay
después de la primera iteración, al entregar la primera presupuesto para mantenerlo. [12]
versión; esta versión es capaz de crear una consulta y
entregar resultados de acuerdo a unos pocos libros Cuando no se tienen más historias de usuario para
ingresados al sistema. Además en esta etapa se trabaja implementar en el sistema, solo queda que se cumplan
en las historias de menor prioridad (funcionalidades las necesidades del cliente en otros aspectos como
secundarias del software). rendimiento y confiabilidad. Se elabora la documentación
final del sistema y no se realizan más cambios en la
estructura. La muerte del proyecto también ocurre cuando
el sistema no genera los beneficios esperados por el
cliente o cuando no hay presupuesto para brindarle
mantenimiento.
10
Programación Extrema y Test Driver Development
.
5.5.2 DESVENTAJAS
11
Programación Extrema y Test Driver Development
.
6 CONCLUSIONES https://iswugaps2extremeprogramming.wordpress.com/201
5/09/14/ventajas-y-desventajas/
[14] Introducción a la Programación Extrema (XP)
La programación extrema como metodología de David Valverde © 2007 – 2015
desarrollo de software no se ajusta a cualquier proyecto, http://www.davidvalverde.com/blog/introduccion-a-la-
es el equipo de trabajo él debe cerciorarse de los programacion-extrema-xp/
[15] Programación Extrema,Exposición de Maestría
requerimientos que el cliente especifique y sus
2007
funcionalidades; además el administrador del proyecto https://www.slideshare.net/edgarespinoza/programaci
debe permitir un entorno adecuado para la comunicación on-extrema
priorizando aspectos importantes como lo es el trabajo en
parejas que disminuye considerablemente la
documentación pero a su vez simplifica y acelera el
desarrollo.
7 REFERENCIAS
[1] Metodologias agiles, obtenido de Noticias y
articulos:
[2] Jose Roldan (20011, Enero 11). [En línea].
Disponible en: https://www.paradigmadigital.com/dev/tdd-
como-metodologia-de-diseno-de-software/
[3] Lordudun (20011, Abril 18). [En línea]. Disponible
en: http://blog.lordudun.es/agile/2011/04/18/introduccion-a-
tdd-test-driven-development.html
[4] Fernandez, Javier (20012, Sept. 19). [En línea].
Disponible en:
http://www.pmoinformatica.com/2012/09/test-driven-
development-scrum.html
[5] Nilsson, J. Putting (20012, Dic. 3). [En línea].
Disponible en:
http://www.pmoinformatica.com/2012/12/test-driven-
development-ventajas-y.html
[6] Kent Benck, Extreme Programming Explained,
Embrace Change, Second Edtion Cap I pag 1-2
[7] https://geekytheory.com/programacion-extrema-
que-es-y-principios-basicos
[8] (20010, Junio 21). [En línea]. Disponible en:
https://parasitovirtual.wordpress.com/category/cursos-y-
articulos/ingenieria-del-software/metodologias-agiles-de-
desarrollo/programacion-extrema-xp/
[9] Sergio Alberto. (20015, Sept. 14). [En línea].
Disponible en:
https://iswugaps2extremeprogramming.wordpress.com/201
5/09/14/roles/
[10] Daniel Ochoa. (20014, Abril 21). [En línea].
Disponible en: https://es.slideshare.net/nataliahrey/extreme-
programming-33773657
[11] https://modulopoo.wordpress.com/unidad-iv/
[12] Aplicación de eXtreme Programming en ONess
http://oness.sourceforge.net/proyecto/html/ch05s02.html
[13] Ventajas y Desventajas. (Publicado el 14
septiembre, 2015 por sergioalbertoc )
12