Sei sulla pagina 1di 80

Metodologas para desarrollo en comunidad

Jos e Dapena Paz


Metodologas para desarrollo en comunidad p. 1/80
Presentacin
Jos Dapena, ingeniero en informtica por FIC
Socio fundador de Igalia
Miembro del Fisterra Team
Comunicador de software libre
Metodologas para desarrollo en comunidad p. 2/80
Objetivo
Objetivo: Descripcin de buenas prcticas y
herramientas para el desarrollo de software libre, en
comunidad.
Las buenas prcticas de desarrollo de software son
aquellas que nos llevarn a obtener aplicaciones y
sistemas bien construidos.
Veremos cmo aplicar estas prcticas en el peculiar
desarrollo en comunidad, propio del software libre.
Metodologas para desarrollo en comunidad p. 3/80
Temas
Introduccin
eXtreme Programming
Proceso de desarrollo
Mtricas
Comunidad
Herramientas
Metodologas para desarrollo en comunidad p. 4/80
Introduccin
Introduccin
eXtreme Programming
Proceso de desarrollo
Mtricas
Comunidad
Herramientas
Metodologas para desarrollo en comunidad p. 5/80
Introduccin
Mitos sobre el software libre
Desarrollado por accionados.
Desarrollo hacker, soluciones ad hoc. Ausencia de
metodologa.
El xito es casualidad.
Imposible implantar medidas para control de
calidad.
En resumen, es imposible hacer Ingeniera del
software libre, y productos profesionales.
Metodologas para desarrollo en comunidad p. 6/80
Cosa de accionados?
Los productos de ms xito del software libre no
se hacen por amor al arte.
Los ncleos de los principales proyectos son
llevados por profesionales, nanciados por
universidades o empresas, y se dedican a ellos a
tiempo completo.
Fundaciones y organizaciones sin nimo de lucro
pueden actuar de mediadoras para mantener y
nanciar los proyectos.
Ejemplos: Apache (IBM, Sun, . . . ), Gnome (Novel,
HP, IBM, Sun, . . . ).
Metodologas para desarrollo en comunidad p. 7/80
Sin metodologa?
No es casualidad que el software libre incorpore
en multitud de ocasiones construcciones y
arquitecturas propias de la mejor ingeniera del
software.
El desarrollo en comunidad ha permitido que el
software libre incorpore como normales tcnicas y
herramientas metodolgicas hoy altamente
consideradas en las teoras de ingeniera del
software.
Metodologas para desarrollo en comunidad p. 8/80
Sim metodologa? (2)
El control de versiones, gestin de requisitos,
documentacin y repositorios de incidencias,
patrones de diseo, comunicacin entre
desarrolladores, etc, son habituales en la gran
mayora de proyectos de software libre de xito.
Hay un fuerte componente ad hoc en las
soluciones iniciales, pero las comunidades de
desarrolladores con necesidades heterogneas
consiguen refactorizaciones excelentes.
Metodologas para desarrollo en comunidad p. 9/80
xito = Suerte?
El xito de un proyecto de software libre se basa
principalmente en conseguir una comunidad activa
de desarrolladores y de usuarios.
Este xito no es casual, y hay mtodos para
facilitar que suceda.
Las tcnicas que facilitan el incremento de la base
de usuarios y desarrolladores son una mezcla de
Marketing y la gestin de una infraestructura
adecuada.
Hay que saber vender el proyecto, y hay que
cuidar a los interesados.
Metodologas para desarrollo en comunidad p. 10/80
Imposible controlar la calidad?
El hecho es que hay muchsimos proyectos de
software libre que responden mejor a los requisitos
de calidad que productos propietarios validados.
El software libre ha desarrollado tcnicas que
gestionan de forma transparente la calidad, a
travs de gestin de errores, control de versiones,
mtricas, autodocumentacin o pruebas.
En los principales proyectos de software libre
podemos encontrar la implantacin de las mejores
tcnicas de control de calidad.
Metodologas para desarrollo en comunidad p. 11/80
Hoy hablaremos de. . .
Un enfoque metodolgico para construir software
libre.
Herramientas que ofrece el software libre las
necesidades para gestionar la calidad de sus
proyectos.
Algunas tcnicas para cultivar una comunidad
activa.
Algunas de estas tcnicas se estn aplicando en
el Fisterra Team.
Metodologas para desarrollo en comunidad p. 12/80
eXtreme Programming
Introduccin
eXtreme Programming
Proceso de desarrollo
Mtricas
Comunidad
Herramientas
Metodologas para desarrollo en comunidad p. 13/80
Qu es eXtreme Programming?
http://www.extremeprogramming.org
Conjunto de tcnicas y prcticas para desarrollo
de software
Metodologa ligera, trata de buscar mtodos
sencillos de obtener software de calidad
Incide en mejorar la comunicacin con los
usuarios, la retroalimentacin en el proceso.
Cuanto antes haya algo funcionando, mejor. Ya le
iremos aadiendo cosas a medida que hagan
falta.
Metodologas para desarrollo en comunidad p. 14/80
XP y Software Libre
Coinciden los objetivos a solucionar.
Las soluciones tambin.
La mejora de la comunicacin es una forma
excelente de cuidar a la comunidad de usuarios y
desarrolladores.
Es ms fcil conseguir adeptos cuando hay algo
que usar e instalar. Por tanto, cuanto antes haya
algo funcionando, mejor.
Metodologas para desarrollo en comunidad p. 15/80
Tcnicas de XP
Cuatro mbitos:
Planicacin
Diseo
Codicacin
Pruebas
Metodologas para desarrollo en comunidad p. 16/80
Planicacin
Historias de usuarios
Sacar nuevas versiones con frecuencia.
Evolucin por iteraciones
Trabajo en equipo
Metodologas para desarrollo en comunidad p. 17/80
Historias de usuarios
Descripciones informales de necesidades de
usuarios. Sobre dos o tres frases.
Orientan el proceso de desarrollo, y las pruebas
de aceptacin.
Parecidos a los casos de uso, pero en este caso
no estn atados a establecer interfaces de usuario.
Metodologas para desarrollo en comunidad p. 18/80
Sacar nuevas versiones con
frecuencia
Crear un plan de versiones. Se encajan las
historias de usuarios en diferentes plazos
temporales.
Se separa la visin de los usuarios de la de los
desarrolladores. Mientras unos jan tiempo para
cada historia, otros establecen las prioridades.
Este plan guiar los objetivos de las iteraciones.
Metodologas para desarrollo en comunidad p. 19/80
Iteraciones
Proceso iterativo. Objetivo inicial de obtener algo
que haga algo. A partir de ah en sucesivas
iteraciones se van implementando ms y ms
historias de usuarios.
Las historias que se implementan en cada
iteracin se deciden al principio de estas. Se
establecen plazos para realizar cada iteracin, y
se realizan de forma secuencial.
No es recomendable estar pendiente de historias
a implementar en futuras iteraciones. Preocuparse
de cumplir el plan de versiones es la prioridad.
Esto da un mejor soporte al cambio de requisitos
de usuarios.
Metodologas para desarrollo en comunidad p. 20/80
Trabajo en equipo
Al asignar las tareas de cada historia de usuario,
es recomendable fomentar la movilidad de los
desarrolladores, para mejorar el conocimiento
global del proyecto, y evitar prdidas de
conocimiento.
Combinar a los desarrolladores en diferentes
equipos a lo largo del proyecto, fomenta la
cohesin y el aprendizaje. Esto da tambin mayor
exibilidad al equipo, ya que cualquiera estar
ms preparado para trabajar en otras partes del
proyecto.
Metodologas para desarrollo en comunidad p. 21/80
Tcnicas para el diseo
Regla KISS
Cuidado con la nomenclatura
No aadir funcionalidades antes de lo planicado.
Refactorizar es ms ecaz
Metodologas para desarrollo en comunidad p. 22/80
Regla KISS
Keep It Simple, Stupid!
Evita soluciones complejas.
Si hay algo complejo, y puede ser sustituido por
algo simple cubriendo las funcionalidades
necesarias actuales, sustityelo.
Una solucin exactamente tan ecaz como
necesitemos nos ahorrar dicultades en el
mantenimiento.
Metodologas para desarrollo en comunidad p. 23/80
Nomenclatura
La comunicacin del equipo necesita un
vocabulario comn.
Mantener un adecuado diccionario de datos.
Buscar un espacio de nombres que facilite la
rpida comprensin de los conceptos
involucrados.
Los patrones son una buena estrategia para
facilitar la comunicacin de decisiones tcnicas.
Metodologas para desarrollo en comunidad p. 24/80
Nada ms all del Plan
El Plan es el Amo.
Solo implementaremos lo que mande el Plan,
NADA ms.
Mejor soporte del cambio de especicaciones.
Mayor enfoque en solucionar correctamente los
objetivos actuales del Plan.
Metodologas para desarrollo en comunidad p. 25/80
Pero refactoricemos
Cuando encontremos puntos en comn de una
historia con otras implementadas, refactoricemos.
Obtener una solucin comn que cubra ambos
casos, partiendo de la historia ya implementada.
Reducir y simplicar el cdigo, obtener una
solucin ms general a partir de requisitos reales.
Cuidado con la complejidad de la solucin
refactorizada.
Metodologas para desarrollo en comunidad p. 26/80
Tcnicas de codicacin
El usuario siempre disponible.
Utilizar estndares de codicacin.
Orientacin a pruebas de unidad. Integracin
frecuente.
Programacin en pareja. Propiedad del cdigo
colectiva.
La optimizacin al nal.
Horarios razonables.
Metodologas para desarrollo en comunidad p. 27/80
Relacin cercana al usuario
Cuanto mejor la comunicacin con el usuario,
mejor.
Si es posible, involucrarlo en todas las etapas de
desarrollo.
En cualquier caso, mejorar la comunicacin.
Mejor saber al momento si estamos haciendo o no
lo que el usuario realmente desea.
Metodologas para desarrollo en comunidad p. 28/80
Estndares de codicacin
Al comenzar el proyecto, deben decidirse los
estndares de codicacin.
Se establecen los parmetros sobre
documentacin, indentacin, estructura de cdigo,
nombrado y localizacin de cheros, etc.
El objetivo es mejorar la comunicacin y facilidad
de mantenimiento de cdigo por todo el equipo.
Todos los lenguajes y entornos de desarrollo
suelen tener denidos estndares para la
codicacin.
Metodologas para desarrollo en comunidad p. 29/80
Pruebas de unidad
Todo el cdigo desarrollado debera tener mdulos
de prueba automtica.
Las pruebas de unidad comprueban que mdulos
concretos cumplen las funcionalidades esperadas.
Una posibilidad es desarrollar las pruebas de
unidad antes que el desarrollo. Solo estar
completo cuando pase las pruebas de unidad.
Estn orientadas a las historias de usuario.
Metodologas para desarrollo en comunidad p. 30/80
Programacin en pareja
Idea polmica
Programar en pareja. Dos personas por cada
ordenador.
Una persona codica, y se enfoca a problemas de
implementacin.
La otra persona mantiene una visin de conjunto.
Facilita la transmisin de conocimiento (modelo
maestro-aprendiz).
La teora dice que es ms ecaz que cada uno
desarrollando de forma individual.
Metodologas para desarrollo en comunidad p. 31/80
Integracin
El repositorio central siempre compila y cumple
con el conjunto de pruebas de unidad establecido.
Minimiza los efectos laterales.
Integrar con frecuencia. Nunca mantener cambios
durante ms de un da fuera del repositorio.
Cuanto ms se tarde en integrar, ms difcil ser
evitar efectos laterales.
Metodologas para desarrollo en comunidad p. 32/80
Propiedad colectiva del cdigo
Cualquier miembro del equipo puede aportar
ideas, corregir bugs, o refactorizar cdigo de otros.
Por tanto, nadie ser un cuello de botella para
introducir nuevos cambios.
La integracin continua y las pruebas de unidad
facilitan que cualquiera pueda tocar cualquier
parte del cdigo.
Funciona as: un programador desarrolla un
mdulo con sus pruebas de unidad. Otro si aade
funcionalidades, sabr si sigue funcionando el
mdulo porque pasa las pruebas de unidad.
Metodologas para desarrollo en comunidad p. 33/80
Pasa de la optimizacin. . . por ahora
La optimizacin debe estar guiada por objetivos.
Por tanto, trabajar en optimizar es tirar el tiempo si
no es necesario.
Primero hay que cumplir con los objetivos
previstos
No intentes adivinar dnde estn los cuellos de
botella. Mdelo!
Haz que funcione, hazlo bien, y slo entonces,
haz que sea rpido.
Metodologas para desarrollo en comunidad p. 34/80
No te pases de las horas
Las horas extra minan la motivacin de un grupo.
Perjudican de forma considerable el rendimiento.
Los proyectos que requieren horas extra para ser
acabados, requerirn prcticamente el mismo
tiempo adicional en la planicacin.
Es preferible revisar el Plan y los objetivos del
proyecto.
Metodologas para desarrollo en comunidad p. 35/80
Pruebas
Tcnicas aplicadas para las pruebas.
Pruebas de unidad.
Pruebas de aceptacin.
Metodologas para desarrollo en comunidad p. 36/80
Pruebas de unidad
Pruebas de caja negra sobre mdulos y funciones
del cdigo.
Deben ser automatizables, por ejemplo, formando
parte del proceso de compilacin.
Verican que un mdulo cumple las
especicaciones previstas.
Un enfoque ms agresivo es crear las pruebas de
unidad antes que el cdigo a probar
(programacin orientada a pruebas).
Metodologas para desarrollo en comunidad p. 37/80
Pruebas de unidad
Todo el cdigo debe tener sus correspondientes
pruebas de unidad.
El cdigo debe pasar todas sus pruebas de unidad
antes de ser liberado o publicado.
Cuando se encuentra un bug, se hacen pruebas
de unidad adicionales para l.
Metodologas para desarrollo en comunidad p. 38/80
Pruebas de aceptacin
Las historias de usuarios dan lugar a pruebas de
aceptacin.
Los resultados de estas pruebas deben ser
pblicos. Un mdulo no estar completo mientras
no haya pasado las pruebas de aceptacin.
Son denidos por el usuario o cliente. Pruebas de
caja negra que consisten en la denicin de una
operacin del sistema y un resultado esperado.
El xito de una iteracin se mide por los mdulos
completados, y por tanto, signica haber pasado
un conjunto de pruebas de aceptacin superadas.
Metodologas para desarrollo en comunidad p. 39/80
XP y Software Libre
Cmo encaja esta metodologa, enfocada a la
relacin de un equipo de desarrolladores con clientes,
en el Software Libre pblico?
Puntos clave:
Dimensin del proyecto
Qu es el cliente?
Dnde entra el voluntariado?
Metodologas para desarrollo en comunidad p. 40/80
Dimensin del proyecto
XP se aplica a proyectos que involucran a un
equipo de desarrollo medio-grande, y la solucin
no trivial de un problema.
Algunas medidas tienen sentido para proyectos
ms pequeos. Si alguna de las medidas es un
estorbo, scala!
Un umbral mnimo interesante sera sobre 2 o 3
meses persona.
Metodologas para desarrollo en comunidad p. 41/80
El cliente del software libre
A veces no existe la gura del cliente, ya que son
proyectos orientados a comunidades de usuarios.
Si se quiere industrializar este tipo de desarrollos,
la frmula habitual es la de las fundaciones o
organizaciones sin nimo de lucro, que
representan los intereses de usuarios, y actan
como mediadores y clientes.
Si no existe una gura representativa como
cliente, se recomienda seguir muy de cerca el
inters de los usuarios por ciertos requisitos
(votos, listas de correo, . . . ).
Metodologas para desarrollo en comunidad p. 42/80
Voluntariado
Una gura fundamental en el software libre es la
del voluntario.
No puede exigirle hacer algo que no le gusta, ni
plazos estrictos salvo que desee comprometerse a
ellos.
Por tanto, las planicaciones no deben contar con
ellos sin su peticin explcita.
Por tanto, el voluntario es un elemento que puede
dar valor adicional a los resultados. As, casi
siempre sumar valor al proyecto, y pocas veces
lo restar.
Metodologas para desarrollo en comunidad p. 43/80
Temas
Introduccin
eXtreme Programming
Proceso de desarrollo
Mtricas
Comunidad
Herramientas
Metodologas para desarrollo en comunidad p. 44/80
El proceso de desarrollo
Un ejemplo de proceso de desarrollo:
Captura de requisitos
Arquitectura
Especicacin de casos de uso
Modelos de datos
Diseo de componentes e interfaz
Implementacin
Integracin
Pruebas y despliegue
Metodologas para desarrollo en comunidad p. 45/80
Captura de requisitos
Se captura y documenta las necesidades del
cliente, as como todo el conocimiento posible
sobre las actividades.
Descripcin no tcnica, pero muy concreta de lo
que se desea implementar.
Es la fuente de las pruebas de aceptacin.
Debe ser aprobado por el cliente y estar
disponible.
Da lugar a las historias de usuario en XP, y a la
descripcin de las pruebas de aceptacin.
Metodologas para desarrollo en comunidad p. 46/80
Arquitectura
Decisin de la infraestructura tecnolgica que dar
soporte al mdulo.
Debe ser tan compleja como el proyecto requiera,
y no ms.
Decisin cardinal en el proyecto, no es fcil
cambiar sin tirar abajo buena parte del trabajo.
Puede dar lugar a requisitos de desarrollo
adicionales, en los que el cliente ser el equipo
desarrollador.
Metodologas para desarrollo en comunidad p. 47/80
Especicacin de casos de uso
Dene la interaccin del software con el exterior.
En particular con el usuario.
Tambin debe ser altamente visible por el usuario
o cliente, y fcilmente comprensible.
Una buena idea es que incluya borradores de la
interfaz de usuario.
Se derivan de las historias de usuario. Una
historia da lugar a un conjunto de casos de uso
que lo soportan.
Metodologas para desarrollo en comunidad p. 48/80
Modelos de datos
Eleccin de un modelo de clases, objetos, tablas
de bases de datos, que soporten los requisitos
funcionales.
Se deben denir los tipos de datos
cuidadosamente para cada historia de usuario, de
forma que encajen en un modelo de datos global.
Los patrones de anlisis de Martin Fowler sealan
algunas estrategias sobre cmo hacer este
modelado de forma ecaz y eciente.
Al acabar este punto, podremos denir con
precisin las pruebas de unidad para nuestro
mdulo.
Metodologas para desarrollo en comunidad p. 49/80
Diseo de componentes e interfaz
Diseo de los componentes software y la interfaz
de usuario que soportarn las especicaciones.
Las interfaces deben ser diseadas siguiendo
precisin las guas de estilo correspondientes al
entorno que utilicemos (HIG, lnea de comando
GNU, . . . ).
Diseo utilizando patrones de diseo, as como
las guas de diseo de componentes del proyecto
(estructuras de componentes de Fisterra, EJBs en
J2EE, . . . ).
Se pueden disear pruebas de unidad adicionales.
Metodologas para desarrollo en comunidad p. 50/80
Implementacin
Siguiendo estndares claros de codicacin.
Podemos orientarlos a pruebas de unidad.
Recomendacin: una infraestructura de
integracin contnua, sobre el repositorio del
cdigo.
Metodologas para desarrollo en comunidad p. 51/80
Integracin
Integracin contnua. Incorporar al sistema de
integracin contnua pruebas de unidad para los
mdulos.
Una correcta gestin de las pruebas de unidad
reducir considerablemente los efectos laterales
de incorporacin de nuevas caractersticas.
Obtenemos una versin instalable y funcional
desde el primer momento. Fundamental para la
comunidad de usuarios, tener algo que tocar y
probar.
Metodologas para desarrollo en comunidad p. 52/80
Pruebas y despliegue
Las pruebas de unidad reducen de forma drstica
la necesidad de pruebas al nalizar un mdulo.
Es fundamental crear una infraestructura
adecuada para la gestin de incidencias y bugs.
Tambin una infraestructura que permita gestionar
correctamente las instalaciones realizadas
(sistemas de paquetes de las distribuciones por
ejemplo).
Metodologas para desarrollo en comunidad p. 53/80
El proceso con Software Libre
Facilitar el uso de herramientas que den soporte a
la metodologa.
Establecer pruebas de calidad que comprueben
que nuestros mdulos estn cumpliendo con los
requisitos necesarios.
No podemos exigir a un voluntario cumplir con
todos estos puntos. Pero algunos s (gestin de
bugs, criterios de codicacin, etc). En cualquier
caso deben estar documentados, para reducir la
dicultad de entrada en el proyecto.
La gura del mentor.
Metodologas para desarrollo en comunidad p. 54/80
Temas
Introduccin
eXtreme Programming
Proceso de desarrollo
Mtricas
Comunidad
Herramientas
Metodologas para desarrollo en comunidad p. 55/80
Mtricas
Deseamos crear software con alta calidad. La calidad
es bsicamente la reduccin de la probabilidad de
que el software no se comporte como est previsto.
Como tal, la calidad no es medible. Pero la gestin de
la calidad s debe estar basada en medidas objetivas.
Por tanto, lo que haremos ser establecer medidas
del cumplimiento de un conjunto de normas y
parmetros deseables para la obtencin de un
producto de calidad.
Metodologas para desarrollo en comunidad p. 56/80
Mtricas en el proceso de desarrollo
El proyecto debe denir y documentar una serie de
objetivos y herramientas que mejoren la calidad del
proyecto. El cumplimiento de los objetivos debe ser
medible.
Se puede incorporar al proceso de compilacin e
integracin un conjunto de medidas sobre la calidad
del cdigo y su documentacin. Al sistema de control
de incidencias medidas sobre el tiempo de resolucin
de incidencias, etc.
Las mtricas de calidad deben ser visible, al menos,
para el equipo de desarrollo.
Metodologas para desarrollo en comunidad p. 57/80
Mtricas sobre el cdigo
Varios ejemplos:
Longitud de lnea media.
Proporcin de comentarios signicativos.
Nmero de mtodos documentados.
Porcentaje de cdigo indentado correctamente.
Cumplimiento de los requisitos de nombrado.
Metodologas para desarrollo en comunidad p. 58/80
Mtricas sobre los errores
Frecuencia de error por mdulo.
Tiempo de resolucin media de error.
Frecuencia de fallo en integracin contnua.
Metodologas para desarrollo en comunidad p. 59/80
Mtricas en proyectos de software
libre
La implantacin de mtricas y criterios debe
realizarse por los ncleos de desarrolladores de los
proyectos. Tambin su implantacin.
Una vez liberado a los voluntarios de la implantacin
de los mecanismos necesarios para comprobar la
calidad del proyecto, las mtricas funcionan como
incentivo para que mejoren la calidad de sus
contribuciones.
Tambin facilita la explicacin de decisiones de
rechazo para aceptar contribuciones, cuando el
cdigo no cumple con unos mnimos requisitos.
Metodologas para desarrollo en comunidad p. 60/80
Temas
Introduccin
eXtreme Programming
Proceso de desarrollo
Mtricas
Comunidad
Herramientas
Metodologas para desarrollo en comunidad p. 61/80
Comunidad
Debemos cuidar a nuestros desarrolladores y
usuarios.
Para ello, la mejor herramienta es la mejora de la
comunicacin, en ambas direcciones.
Metodologas para desarrollo en comunidad p. 62/80
Visibilidad del proyecto para el
usuario
Un proyecto no solo debe desarrollarse, si no
tambin parecer que lo hace.
Fundamental informar de forma contnua de qu
se est haciendo, y cmo.
El desarrollo no debe ser annimo. Est hecho por
personas con nombre y apellidos.
Importante publicar plazos para versiones, y
cumplirlos.
Importante lanzar versiones nuevas con
frecuencia. Utilizar todos los medios posibles para
que el usuario se entere.
Metodologas para desarrollo en comunidad p. 63/80
Visibilidad para el desarrollador
Amplia documentacin de los desarrollos, a nivel
de anlisis, diseo y documentacin de cdigo.
Establecer claramente el proceso para colaborar,
y publicarlo.
No ocultar las discusiones y debates tecnolgicos
sobre el proyecto. Permite adems que entren en
debate.
Metodologas para desarrollo en comunidad p. 64/80
Escuchemos al usuario
Responder rpido a las preguntas, peticiones,
bugs.
Un usuario olvidado es un usuario perdido, y
adems, cabreado.
Permitir mecanismos cmodos y organizados de
recoger los deseos de usuarios y reportes de
error.
Organizar y priorizar la implementacin de las
tareas de los usuarios. Permitir y facilitar la
nanciacin de la implementacin.
Metodologas para desarrollo en comunidad p. 65/80
Escuchemos al desarrollador
Incorporar a desarrolladores externos al debate
tecnolgico.
Tener muy en cuenta y en serio las ideas externas.
Dos cabezas piensan mejor que una.
Fomentar el debate, pero tener tacto para evitar
las guerras entre desarrolladores.
Metodologas para desarrollo en comunidad p. 66/80
Temas
Introduccin
eXtreme Programming
Proceso de desarrollo
Mtricas
Comunidad
Herramientas
Metodologas para desarrollo en comunidad p. 67/80
Herramientas
En este apartado describiremos el conjunto de
herramientas que utilizamos en el proyecto Fisterra, y
cmo encajan dentro de las medidas descritas.
Tinderbox (integracin contnua y prueba en entornos
heterogneos), CVS (repositorio de cdigo y gestin
de conguracin), Bugzilla (recepcin de bugs y
solicitudes), tWiki y Docbook (documentacin de
anlisis y diseo), XP tracker (planicacin), Bonsai
(indexacin del cdigo disponible), Test (pruebas de
unidad), Autoconf y Automake (portabilidad y gestin
del rbol de compilacin), Umbrello (diagramas UML),
listas de correo e irc (comunicacin de la comunidad),
web (documentacin general y noticias). . .
Metodologas para desarrollo en comunidad p. 68/80
CVS
Repositorio de cdigo con control de versiones,
mdulos y ramas.
Almacenamos el cdigo, y documentacin del
proyecto.
Permite llevar la gestin de releases, y de
versiones estables e inestables.
Repositorio centralizado de cdigo, tambin
permite que desarrolladores tengan repositorios
para mdulos sin integrar.
Metodologas para desarrollo en comunidad p. 69/80
Bugzilla
Base de datos de informes de error, clasicados
por mdulos y diversos criterios de importancia, y
su estado de resolucin.
Existen herramientas integradas para introducir
informes desde las aplicaciones, y un frontal web.
Tambin se puede utilizar para gestionar tareas
pendientes.
Metodologas para desarrollo en comunidad p. 70/80
Tinderbox
Estructura de clientes y servidores. Los clientes
actualizan, prueban, compilan y obtienen logs del
repositorio CVS en diferentes entornos.
Los servidores recogen los resultados de las
compilaciones de los clientes, y los agregan en
tablas visibles por web.
Desarrollado para el proyecto mozilla.
Podemos incorporar pruebas de unidad o mtricas
en las compilaciones automticas. Nos permite
implantar integracin contnua.
Se integra con bonsai y bugzilla.
Metodologas para desarrollo en comunidad p. 71/80
tWiki y docbook
Proceso de redaccin de documentacin: primero
en el wiki, despus al estabilizarse se pasa a
docbook.
Un wiki es una buena solucin para la
comparticin de conocimiento. Reduce el escaln
para escribir informacin sobre el desarrollo.
Con docbook tenemos manuales integrables en
mltiples formatos, incluyendo los navegadores de
ayuda de Gnome.
Fundamental documentar y catalogar toda la
informacin posible de desarrollo.
Metodologas para desarrollo en comunidad p. 72/80
XP tracker
Mdulo para tWiki. Conjunto de plantillas para
realizar el seguimiento de un proyecto XP.
Permite coordinar de forma cmoda grandes
equipos de desarrollo. Reeja y documenta tareas
e iteraciones, pudiendo integrarlo dentro del tWiki
con documentacin de desarrollo general.
Permite realizar seguimientos del estado de
realizacin de diversas tareas, e ir modicando
dinmicamente las iteraciones, de forma cmoda.
Metodologas para desarrollo en comunidad p. 73/80
Bonsai
Herramienta que explota la informacin del CVS.
Permite realizar consultas sobre las actuaciones
en CVS, alimentando una base de datos con los
logs de los commits.
Permite, por ejemplo, saber qu cambios han sido
realizados por una persona, ver las diferencias
entre varias versiones de un chero, la
responsabilidad de una lnea en particular, . . .
Aplicacin web.
Metodologas para desarrollo en comunidad p. 74/80
Pruebas de unidad
Se utilizan libreras especiales que crean entornos
de ejecucin aislados.
Para C tenemos Check. Para Java JUnit. Para
Python PyUnit, para C++ cppunit, etc.
Se integran los programas de prueba de
funcionalidad, dentro de la compilacin. As,
fallar la compilacin no solo con incorrecciones
sintcticas, si no funcionales.
Metodologas para desarrollo en comunidad p. 75/80
Autoconf y Automake
Gestin de conguracin. Congura de forma
automtica qu mdulos se compilan, y si se
cumplen las dependencias necesarias para
hacerlo.
Libtool sirve de apoyo, ocultando la complejidad
del uso de libreras compartidas.
PkgCong tambin simplica el proceso de
enlazado de libreras con dependencias
complejas, incluso sin usar scripts complejos de
compilacin.
Metodologas para desarrollo en comunidad p. 76/80
Umbrello
Herramienta para realizar diagramas UML.
Soporta un conjunto bastante amplio de
diagramas UML: casos de uso, secuencia, clases,
colaboracin, estados, actividad, componentes y
despliegue.
Tambin soporta generacin de cdigo (en
mltiples lenguajes) e ingeniera inversa (en C++).
Metodologas para desarrollo en comunidad p. 77/80
Listas de correo e IRC
Es importante responder rpidamente a los
requerimientos de informacin de la comunidad.
Tener listas de correo activas, y responder a las
dudas en IRC da una capacidad muy elevada de
resolver esta necesidad.
Cuidado con los idiomas.
Si es posible y adecuado, mantener logs de las
conversaciones y guardar e indexar las listas de
correo.
La lista de correo es el mecanismo central de
comunicacin dentro del equipo de programacin.
Metodologas para desarrollo en comunidad p. 78/80
Webs de contenidos
Necesaria una buena presencia web para dar
publicidad al proyecto.
Web viva, mostrando las novedades del estado del
proyecto.
Tiene que ser el punto de introduccin suciente
para poder colaborar con el proyecto o usarlo.
Una buena idea es integrarlo de forma apropiada
con el resto de herramientas web (tinderbox,
bonsai, listas de correo, wiki, . . . ).
Metodologas para desarrollo en comunidad p. 79/80
Metodologas para desarrollo en comunidad
Jos e Dapena Paz
Metodologas para desarrollo en comunidad p. 80/80

Potrebbero piacerti anche