Desarrollo de una aplicación web utilizando Desarrollo
Guiado por Comportami
ento e Integración Continua
Matías Mascazzini, Mgter. Gladys Noemí Dapozo
Facultad de Ci
encias Exactas y Naturales y Agrim
ensura. Universidad Nacional del Nor
Lic
enciatura
en Sistemas de Información
Av. Libertad 5470. Corri
entes. Arg
entina.
[email protected]
,
[email protected]
deste.
Resum
en.
En los últimos años se avanzó
en los conceptos de desarrollo de so
ftware dirigido por comportami
ento con el objetivo de superar las inefici
encias
y dificultades del desarrollo de aplicaciones. Se busca mejorar la comunica
ción con el cli
ente para
entregar valor para su negocio, haci
endo la cosa co
rrecta de forma precisa, adaptándose a los cambios que puedan surgir
en el
proceso y defini
endo cuándo se da por finalizado el software
en función de las
pruebas de aceptación de cada historia de usuario. El objetivo de este trabajo
es profundizar estos conceptos y aplicarlos
en un problema concreto, para eva
luar sus v
entajas e inconv
eni
entes. Sigui
endo una metodología de 4 etapas se
aplicaron satisfactoriam
ente estos conceptos, utilizando además Integración
Continua. Aplicando un proceso de software iterativo e increm
ental se desarro
lló una aplicación web, destinada a gestionar premios con votaciones
en línea;
apoyándose para alcanzar sus objetivos con una serie de herrami
entas. Se pudo
apreciar una mejora
en el proceso de desarrollo al contar con una “docum
enta
ción viva” que refleja fielm
ente y de forma actualizada lo que hace la aplica
ción; y una retroalim
entación, casi inmediata, surgida de las pruebas automati
zadas g
enerando un código más fácil de modificar.
Keywords: Desarrollos Ágiles, Desarrollado Dirigido por Comportami
ento,
Historias de usuario, Desarrollo Dirigido por Pruebas, Pruebas Unitarias, Prue
bas de Aceptación, Automatización de pruebas, Integración Continua.
1 Introducción
Hace tiempo, se empezó a p
ensar
en cómo superar las dificultades e inefici
encias
en el desarrollo de software. La dificultad radica
en cómo hacer la cosa correcta para
los usuarios, que agregue valor a su negocio, y hacerla correctam
ente, d
entro de los
plazos y presupuestos previstos; aceptando el cambio natural
en los requerimi
entos y
EST 2015, 18º Concurso de Trabajos Estudiantiles. 44 JAIIO - EST 2015 - ISSN: 2451-76172respondi
endo positivam
ente ante estos cambios. Y además determinar cuándo está
terminado el software.
En este marco, surge el agilismo para reducir los problemas clásicos del desarrollo
de programas, a la par de dar más valor a las personas que compon
en el equipo de
desarrollo.
Entre estos métodos ágiles, exist
en algunas prácticas
en la que las pruebas pasan a
ser una herrami
enta de diseño del código y, por tanto, se escrib
en antes que el mis
mo. De
entre estas se destaca TDD (TestDriv
en Developm
ent), utilizando pruebas
unitarias fue la precursora y BDD (BehavourDriv
en Developm
ent) que propone po
ner el foco
en g
enerar valor para el usuario final utilizando las pruebas de aceptación
y redefini
endo el dialogo con los usuarios
en la búsqueda de un l
enguaje ubicuo (co
mún a todos) para lograr desde el primer mom
ento hacer “la cosa correcta”, es decir
un software que agregue valor al usuario final. Con el soporte de las pruebas, las sub
prácticas asociadas y las herrami
entas, éstas prácticas también logran “hacer la cosa
correctam
ente”.
1.1. BDD
BehavourDriv
en Developm
ent (BDD),
en español “Desarrollo Dirigido por Com
portami
ento”, es una práctica de diseño de software que obti
ene el producto a partir
de expresar las especificaciones
en términos de comportami
ento, de modo tal de lo
grar un grado mayor de abstracción. BDD pone un énfasis especial
en cuidar los
nombres que se utilizan, tanto
en las especificaciones como
en el código. De esta ma
nera, hablando el l
enguaje del cli
ente, se manti
ene alta la abstracción, sin caer
en de
talles de implem
entación.
Surgió
en respuesta a las críticas que se
encontraron
en TDD; Dan North empezó a
hablar de BDD
en un artículo llamado “Behavior Modification”
en Marzo de 2006
[1]. Según North, BDD está p
ensado para hacer estas prácticas ágiles más accesibles
y efectivas a los equipos de trabajo que quier
en empezar con ellas, de allí que su es
quema sea muy similar al de TDD como se aprecia
en la Figura 1, agregando una
capa de pruebas de comportami
ento por
encima de las pruebas unitarias. Principal
m
ente propone que
en lugar de p
ensar
en términos de pruebas, se debería p
ensar
en
términos de especificaciones o comportami
ento. De ese modo, se las puede validar
más fácilm
ente con cli
entes y especialistas de negocio. Poner el foco
en el comporta
mi
ento logra un grado mayor de abstracción, al escribir las pruebas desde el punto de
vista del consumidor y no del productor.
Lo importante es que BDD puso el énfasis
en que no eran pruebas de pequeñas
porciones de código lo que se creaba, sino especificaciones de requerimi
entos ejecu
tables [2]. Un test de cli
ente o de aceptación con estas prácticas, a nivel de código, es
un
enlace
entre el ejemplo y el código fu
ente que lo implem
enta [3].
EST 2015, 18º Concurso de Trabajos Estudiantiles. 44 JAIIO - EST 2015 - ISSN: 2451-76173Se trata de actividades que comi
enzan desde las necesidades del usuario, para ir
deduci
endo comportami
entos y g
enerando especificaciones ejecutables.
Fig. 1. Esquema BDD. (Fu
ente: elabora
ción propia)
Fontela [4] com
enta que la crítica principal de este
enfoque de BDD y al de
ATDD (Acceptance TestDriv
en Developm
ent) vi
ene de que si bi
en se pued
en deri
var pruebas individuales de los contratos, es imposible el camino inverso, ya que mi
les de pruebas individuales no pued
en reemplazar la abstracción de una especifica
ción contractual. La respuesta a esta crítica fue que, si bi
en las especificaciones abs
tractas son más g
enerales que las pruebas concretas, estas últimas, precisam
ente por
ser concretas, son más fáciles de compr
ender y acordar con los analistas de negocio y
otros interesados. Y que los ejemplos concretos son fáciles de leer, fáciles de
ent
en
der y fáciles de validar.
Fontela [4], agrega que al inicio esta técnica se
enfocaba
en ayudar a los desarro
lladores a practicar “un bu
en TDD” pero el uso de BDD, más las ideas de ATDD,
han llevado a una nueva g
eneración de BDD, como práctica y por las herrami
entas
que utiliza. El foco está ahora puesto
en una audi
encia mayor, que excede a los desa
rrolladores, e incluye a analistas de negocio, testers, cli
entes y otros interesados.
1.1.2 Las historias de usuario
en BDD
Buscando g
enerar un l
enguaje único
entre el equipo de desarrollo y el cli
ente;
North propone simplem
ente estructurar la forma de describir las historias de usuario
con el formato Connextra: “Como <rol> deseo <funcionalidad> para lograr <b
enefi
cio>”, o alguna variante compatible; más el agregado de las cláusulas Giv
enWh
en
Th
en (Dado, Cuando,
Entonces) para ayudar a estructurar la explicación de una fun
cionalidad,
en la definición de los esc
enarios y hacer posible la ejecución de los crite
rios de aceptación. Este formato captura: el interesado o su rol, el objetivo del intere
sado para la historia y la tarea a realizar [5]. De esta manera una historia de usuario al
inicio t
endrá una estructura como la sigui
ente:
EST 2015, 18º Concurso de Trabajos Estudiantiles. 44 JAIIO - EST 2015 - ISSN: 2451-76174Característica: [Nombre de la historia]
Como un [rol
en la aplicación]
Para lograr [para alcanzar algún objetivo concreto]
Deseo [hacer alguna tarea o funcionalidad]
Luego la historia de usuario queda completa con los esc
enarios y sus ejemplos,
que repres
entan los test de aceptación del cli
ente y determinan cuando una funciona
lidad está completa. También se pued
en usar “datos tabulados”,
en los cuales se utili
zan ciertas estructuras de tablas para expresar requerimi
entos y reglas de negocio, ya
que las reglas de negocio cambian m
enos que las interfaces gráficas. Estas tablas po
sibilitan describir datos de
entrada y de salida [6].
La visión de North era t
ener una herrami
enta que pueda ser usada por analistas de
sistemas y testers para capturar los requerimi
entos de las historias
en un editor de
textos y desde ahí g
enerar el esqueleto para las clases y sus comportami
entos, todo
esto sin salir de su l
enguaje del negocio [1].
1.1.3 Utilizando ejemplos como requerimi
entos
La mayor difer
encia
entre las metodologías clásicas y la Programación Extrema
(XP) es la forma
en que se expresan los requerimi
entos de negocio.
En XP [7]
en lu
gar de docum
entos, se consideran las historias de usuario con sus test de aceptación
[3].
Los tests de aceptación o de cli
ente, de las historias de usuario, son las condicio
nes escritas de que el software cumple los requerimi
entos de negocio que el cli
ente
demanda.
El trabajo del analista de negocio se transforma para reemplazar páginas de reque
rimi
entos escritos
en l
enguaje natural, por ejemplos ejecutables surgidos del cons
en
so
entre los distintos miembros del equipo, incluido por supuesto el cli
ente.
En BDD la lista de ejemplos de cada historia, se escribe
en una reunión (taller de
especificación) que incluye a responsables del producto, desarrolladores, responsa
bles de calidad y otros interesados. Todo el equipo debe
ent
ender qué es lo que hay
que hacer y por qué, para concretar el modo
en que se certifica que el software lo
hace. Como no hay una única manera de decidir los criterios de aceptación, los dis
tintos roles del equipo se apoyan
entre sí para darles forma.
1.2 prácticas asociadas a BDD
1.2.1 Integración Continua
La integración continua (del inglés “Continuous Integration” o simplem
ente CI),
es una práctica introducida
en XP y luego muy difundida a partir del trabajo de Fow
EST 2015, 18º Concurso de Trabajos Estudiantiles. 44 JAIIO - EST 2015 - ISSN: 2451-76175ler [8]. Consiste
en automatizar y realizar, con una frecu
encia al m
enos diaria, las ta
reas de compilación des
Comentarios de: Desarrollo de una aplicación web utilizando Desarrollo Guiado por Comportamiento e Integración Continua (0)
No hay comentarios