La Programación Extrema

7
 LA PROGRAMACIÓN EXTREMA Es una metodología de desarrollo ligera (o ágil) basada en una serie de valores y de prácticas de buenas maneras que persigue el objetivo de aumentar la  productividad a la hora de desarrollar programas. Este modelo de programación se basa en una serie de metodologías de desarrollo de software en la que se da  prioridad a los trabajos que dan un resultado directo y que reducen la burocracia que hay alre dedor de la programación. na de las caracter ísticas principales de este m!todo de programación" es que sus ingredientes son conocidos desde el principio de la informática. #os autores de $% han seleccionado aquellos que han considerado mejores y han profundi&ado en sus relaciones y en cómo se refuer&an los unos con los otros. El resultado de esta selección ha sido esta metodología 'nica y compacta. %or esto" aunque no está basada en principios nuevos" sí que el resultado es una nueva manera de ver el desarrollo de software. El objetivo que se perseguía en el momento de crear esta metodología era la b'squeda de un m!todo que hiciera que los desarrollos fueran más sencillos. plicando el sentido com'n. Dónde encajan las pruebas del sistea en XP!  no de los pilares de la e$treme %rogramming ($% a partir de ahora) es el proceso de pruebas. $% anima a probar constantemente tanto como sea  posible. Esto permite aumentar la calidad de los sistemas reduciendo el n'mero de errores no detectados y disminuyendo el tiempo transcurrido entre la aparición de un error y su detección. *ambi!n permite aumentar la seguridad de evitar efectos colaterales no deseados a la hora de reali&ar modificaciones y refactori&aciones. $% divide las pruebas del sistema en dos grupos+ pruebas unitarias" encargadas de verificar el código y dise,ada por los programadores" y  pruebas de aceptación o pruebas funcionales destinadas a evaluar si al final de una iteración se consiguió la funcionalidad requerida dise,adas por el cliente final. -on solo dos opciones a elegir" dónde encajan las pruebas funcionales o prueban del sistema. ntes de responder a esta pregunta vamos a definir el concepto de prueba del sistema. #as pruebas del sistema tienen como objetivo verificar la funcionalidad del sistema a trav!s de sus interfaces e/ternas comprobando que dicha funcionalidad sea la esperada en función de los requisitos del sistema. 0eneralmente las pruebas del sistema son desarrolladas por los  programadores para verificar que su sistema se comporta de la manera esperada" por lo que podrían encajar dentro de la definición de pruebas unitarias que  propone $%. 1in embargo" las pruebas del sistema tienen como objetivo verificar que el sistema cumple los requisitos establecidos por el usuario por lo qu e tambi!n pueden encajar dentro de la categoría de pruebas de aceptación. En este artículo consideramos que las pruebas del sistema forman parte de las pruebas de aceptación" aunque no todas las pruebas de aceptación son pruebas del sistema.  Por ejemplo  " pruebas de usabilidad de la interfa& de usuario o pruebas de implantación del sistema en su entorno de producción entrarían en la categoría de pruebas de aceptación y no son pruebas del s istema. "ALORE# #os valores originales de la programación e/trema son+ simplicidad" comunicación" retroalimentación (  feedback ) y coraje. n quinto valor" respeto" fue a,adido en la segunda edición de Extreme P rogramming Explained . #os cinco valores se detallan a continuación+

description

O:)

Transcript of La Programación Extrema

Page 1: La Programación Extrema

7/18/2019 La Programación Extrema

http://slidepdf.com/reader/full/la-programacion-extrema-56d55638641b1 1/9

LA PROGRAMACIÓN EXTREMA

Es una metodología de desarrollo ligera (o ágil) basada en una serie de valores y de prácticas de buenas maneras que persigue el objetivo de aumentar la

 productividad a la hora de desarrollar programas. Este modelo de programación se basa en una serie de metodologías de desarrollo de software en la que se da

 prioridad a los trabajos que dan un resultado directo y que reducen la burocracia que hay alrededor de la programación. na de las características principales de

este m!todo de programación" es que sus ingredientes son conocidos desde el principio de la informática. #os autores de $% han seleccionado aquellos que han

considerado mejores y han profundi&ado en sus relaciones y en cómo se refuer&an los unos con los otros. El resultado de esta selección ha sido esta

metodología 'nica y compacta. %or esto" aunque no está basada en principios nuevos" sí que el resultado es una nueva manera de ver el desarrollo de software.

El objetivo que se perseguía en el momento de crear esta metodología era la b'squeda de un m!todo que hiciera que los desarrollos fueran más sencillos.

plicando el sentido com'n.

Dónde encajan las pruebas del sistea en XP! 

no de los pilares de la e$treme %rogramming ($% a partir de ahora) es el proceso de pruebas. $% anima a probar constantemente tanto como sea

 posible. Esto permite aumentar la calidad de los sistemas reduciendo el n'mero de errores no detectados y disminuyendo el tiempo transcurrido entre la

aparición de un error y su detección. *ambi!n permite aumentar la seguridad de evitar efectos colaterales no deseados a la hora de reali&ar modificaciones y

refactori&aciones. $% divide las pruebas del sistema en dos grupos+ pruebas unitarias" encargadas de verificar el código y dise,ada por los programadores" y

 pruebas de aceptación o pruebas funcionales destinadas a evaluar si al final de una iteración se consiguió la funcionalidad requerida dise,adas por el cliente

final. -on solo dos opciones a elegir" dónde encajan las pruebas funcionales o prueban del sistema. ntes de responder a esta pregunta vamos a definir el

concepto de prueba del sistema. #as pruebas del sistema tienen como objetivo verificar la funcionalidad del sistema a trav!s de sus interfaces e/ternas

comprobando que dicha funcionalidad sea la esperada en función de los requisitos del sistema. 0eneralmente las pruebas del sistema son desarrolladas por los

 programadores para verificar que su sistema se comporta de la manera esperada" por lo que podrían encajar dentro de la definición de pruebas unitarias que

 propone $%. 1in embargo" las pruebas del sistema tienen como objetivo verificar que el sistema cumple los requisitos establecidos por el usuario por lo que

tambi!n pueden encajar dentro de la categoría de pruebas de aceptación. En este artículo consideramos que las pruebas del sistema forman parte de las pruebas

de aceptación" aunque no todas las pruebas de aceptación son pruebas del sistema. Por ejemplo

" pruebas de usabilidad de la interfa& de usuario o pruebas de

implantación del sistema en su entorno de producción entrarían en la categoría de pruebas de aceptación y no son pruebas del sistema.

"ALORE#

#os valores originales de la programación e/trema son+ simplicidad" comunicación" retroalimentación ( feedback ) y coraje. n quinto valor" respeto" fue a,adido

en la segunda edición de Extreme Programming Explained . #os cinco valores se detallan a continuación+

Page 2: La Programación Extrema

7/18/2019 La Programación Extrema

http://slidepdf.com/reader/full/la-programacion-extrema-56d55638641b1 2/9

#iplicidad

#a simplicidad es la base de la programación e/trema. 1e simplifica el dise,o para agili&ar el desarrollo y facilitar el mantenimiento. n dise,o complejo del

código junto a sucesivas modificaciones por parte de diferentes desarrolladores hacen que la complejidad aumente e/ponencialmente.

%ara mantener la simplicidad es necesaria la refactori&ación del código" !sta es la manera de mantener el código simple a medida que crece.

*ambi!n se aplica la simplicidad en la documentación" de esta manera el código debe comentarse en su justa medida" intentando eso sí que el código est!

autodocumentado. %ara ello se deben elegir adecuadamente los nombres de las variables" m!todos y clases. #os nombres largos no decrementan la eficiencia del

código ni el tiempo de desarrollo gracias a las herramientas de autocompletado y refactori&ación que e/isten actualmente.

plicando la simplicidad junto con la autoría colectiva del código y la programación por parejas se asegura que cuanto más grande se haga el proyecto" todo el

equipo conocerá más y mejor el sistema completo.

C$unicación

#a comunicación se reali&a de diferentes formas. %ara los programadores el código comunica mejor cuanto más simple sea. 1i el código es complejo hay que

esfor&arse para hacerlo inteligible. El código autodocumentado es más fiable que los comentarios ya que !stos 'ltimos pronto quedan desfasados con el código

a medida que es modificado. 2ebe comentarse sólo aquello que no va a variar" por ejemplo el objetivo de una clase o la funcionalidad de un m!todo.

#as pruebas unitarias son otra forma de comunicación ya que describen el dise,o de las clases y los m!todos al mostrar ejemplos concretos de cómo utili&ar su

funcionalidad. #os programadores se comunican constantemente gracias a la programación por parejas. #a comunicación con el cliente es fluida ya que el

cliente forma parte del equipo de desarrollo. El cliente decide qu! características tienen prioridad y siempre debe estar disponible para solucionar dudas.

Realientación %

 feedback&

l estar el cliente integrado en el proyecto" su opinión sobre el estado del proyecto se conoce en tiempo real.

Page 3: La Programación Extrema

7/18/2019 La Programación Extrema

http://slidepdf.com/reader/full/la-programacion-extrema-56d55638641b1 3/9

l reali&arse ciclos muy cortos tras los cuales se muestran resultados" se minimi&a el tener que rehacer partes que no cumplen con los requisitos y ayuda a los

 programadores a centrarse en lo que es más importante.

-onsid!rense los problemas que derivan de tener ciclos muy largos. 3eses de trabajo pueden tirarse por la borda debido a cambios en los criterios del cliente o

malentendidos por parte del equipo de desarrollo. El código tambi!n es una fuente de retroalimentación gracias a las herramientas de desarrollo. %or ejemplo"

las pruebas unitarias informan sobre el estado de salud del código. Ejecutar las pruebas unitarias frecuentemente permite descubrir fallos debidos a cambios

recientes en el código.

C$raje $ 'alent(a

3uchas de las prácticas implican valentía. na de ellas es siempre dise,ar y programar para hoy y no para ma,ana. Esto es un esfuer&o para evitar 

empantanarse en el dise,o y requerir demasiado tiempo y trabajo para implementar el resto del proyecto. #a valentía le permite a los desarrolladores que se

sientan cómodos con reconstruir su código cuando sea necesario. Esto significa revisar el sistema e/istente y modificarlo si con ello los cambios futuros se

implementaran más fácilmente. 4tro ejemplo de valentía es saber cuando desechar un código+ valentía para quitar código fuente obsoleto" sin importar cuanto

esfuer&o y tiempo se invirtió en crear ese código. demás" valentía significa persistencia+ un programador puede permanecer sin avan&ar en un problemacomplejo por un día entero" y luego lo resolverá rápidamente al día siguiente" sólo si es persistente.

Respet$

El respeto se manifiesta de varias formas. #os miembros del equipo se respetan los unos a otros" porque los programadores no pueden reali&ar cambios que

hacen que las pruebas e/istentes fallen o que demore el trabajo de sus compa,eros. #os miembros respetan su trabajo porque siempre están luchando por la alta

calidad en el producto y buscando el dise,o óptimo o más eficiente para la solución a trav!s de la refactori&ación del código. #os miembros del equipo respetan

el trabajo del resto no haciendo menos a otros" una mejor autoestima en el equipo eleva su ritmo de producción.

Caracter(sticas )undaentales

#as características fundamentales del m!todo son+

• Desarr$ll$ iterati'$ e increental+ peque,as mejoras" unas tras otras.

Page 4: La Programación Extrema

7/18/2019 La Programación Extrema

http://slidepdf.com/reader/full/la-programacion-extrema-56d55638641b1 4/9

• Pruebas unitarias c$ntinuas" frecuentemente repetidas y automati&adas" incluyendo pruebas de regresión. 1e aconseja escribir el código de la prueba

antes de la codificación. 5!ase" por ejemplo" las herramientas de prueba 6nit orientada a 6ava" 2nit orientada a 2elphi" 7nit para la

 plataforma.7E* o %8%nit para %8%. Estas tres 'ltimas inspiradas en 6nit" la cual" a su ve&" se insipiró en 1nit" el primer framewor9 orientado a

reali&ar tests" reali&ado para el lenguaje de programación 1malltal9.

• Pr$*raación en parejas+ se recomienda que las tareas de desarrollo se lleven a cabo por dos personas en un mismo puesto. #a mayor calidad del

código escrito de esta manera :el código es revisado y discutido mientras se escribe: es más importante que la posible p!rdida de productividad

inmediata.

• ;recuente inte*ración del e+uip$ de pr$*raación c$n el cliente o usuario. 1e recomienda que un representante del cliente trabaje junto al equipo de

desarrollo.

• C$rrección de t$d$s l$s err$res antes de a,adir nueva funcionalidad. 8acer entregas frecuentes.

• Re)act$ri,ación del códi*$" es decir" reescribir ciertas partes del código para aumentar su legibilidad y mantenibilidad pero sin modificar su

comportamiento. #as pruebas han de garanti&ar que en la refactori&ación no se ha introducido ning'n fallo.

• Pr$piedad del códi*$ c$partida+ en ve& de dividir la responsabilidad en el desarrollo de cada módulo en grupos de trabajo distintos" este m!todo

 promueve el que todo el personal pueda corregir y e/tender cualquier parte del proyecto. #as frecuentes pruebas de regresión garanti&an que los

 posibles errores serán detectados.

• #iplicidad en el códi*$+ es la mejor manera de que las cosas funcionen. -uando todo funcione se podrá a,adir funcionalidad si es necesario. #a

 programación e/trema apuesta que es más sencillo hacer algo simple y tener un poco de trabajo e/tra para cambiarlo si se requiere" que reali&ar algo

complicado y qui&ás nunca utili&arlo.

#a simplicidad y la comunicación son e/traordinariamente complementarias. -on más comunicación resulta más fácil identificar qu! se debe y qu! no se debe

hacer. -uanto más simple es el sistema" menos tendrá que comunicar sobre !ste" lo que lleva a una comunicación más completa" especialmente si se puede

reducir el equipo de programadores.

CARACTERI#TICA# RELE"ANTE#

 

En esta plata)$ra XP c$nstru-e un pr$ces$ de dise.$ e'$luti'$ +ue se basa en re)act$rar % es una técnica de la ingeniería

de software para reestructurar un código fuente, alterando su estructura interna sin cambiar su comportamiento externo & unsistea siple en cada iteración/ T$d$ el dise.$ se centra en la iteración actual - n$ se 0ace nada anticipadaente paranecesidades )uturas/ El resultad$ es un pr$ces$ de dise.$ disciplinad$1 l$ +ue es 2s1 c$bina la disciplina c$n laadaptabilidad de una anera +ue indiscutibleente la 0ace la as desarr$llada entre t$das las et$d$l$*(as adaptables/

Page 5: La Programación Extrema

7/18/2019 La Programación Extrema

http://slidepdf.com/reader/full/la-programacion-extrema-56d55638641b1 5/9

 

3na de las 2s llaati'as1 as( c$$ inicialente atracti'a1 es su )uerte 4n)asis en las pruebas/ Mientras t$d$s l$s pr$ces$s

enci$nan la c$pr$bación1 la a-$r(a l$ 0ace c$n u- p$c$ 4n)asis/ #in ebar*$ la XP p$ne la c$pr$bación c$$ el)undaent$ del desarr$ll$1 c$n cada pr$*raad$r escribiend$ pruebas cuand$ escriben su códi*$ de pr$ducción/ Laspruebas se inte*ran en el pr$ces$ de inte*ración c$ntinua - c$nstrucción l$ +ue rinde una plata)$ra altaente establepara el desarr$ll$ )utur$/

Page 6: La Programación Extrema

7/18/2019 La Programación Extrema

http://slidepdf.com/reader/full/la-programacion-extrema-56d55638641b1 6/9

PROCE#O PARA TRA5A6AR CON PROGRAMACION EXTREMA

Page 7: La Programación Extrema

7/18/2019 La Programación Extrema

http://slidepdf.com/reader/full/la-programacion-extrema-56d55638641b1 7/9

Page 8: La Programación Extrema

7/18/2019 La Programación Extrema

http://slidepdf.com/reader/full/la-programacion-extrema-56d55638641b1 8/9

3TILIDAD DE LA PROGRAMACION EXTREMA 7 "ENTA6A#/

Page 9: La Programación Extrema

7/18/2019 La Programación Extrema

http://slidepdf.com/reader/full/la-programacion-extrema-56d55638641b1 9/9

IMPORTANCIA

XP 0a desarr$llad$ un lidera,*$ apli$1 uc0$s de ell$s pr$'eniente del pr$-ect$ )undaental C8/ %C8 9 C:; es un lenguaje de

 programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma&/ C$$ resultad$ 0a-

uc0as )uentes para 2s in)$ración/ <ent 5ec= escribió E>tree Pr$*rain* E>plained1 el ani)iest$ cla'e de la XP +uee>plica las ra,$nes detr2s de la et$d$l$*(a - bastante e>plicación c$$ para +ue la*ente pueda saber si se interesan en se*uirla/