Este documento propone un flujo de desarrollo para sistemas de gestión de contenidos basado en Drupal que utiliza herramientas como Vagrant, Chef, Git, NetBeans y pruebas automatizadas para mejorar la comunicación, homogeneizar entornos y aumentar la productividad y calidad del desarrollo. El flujo propone un entorno común de comunicación, desarrollo local idéntico a producción, integración continua automatizada y técnicas ágiles como desarrollo guiado por pruebas.
Flujo de desarrollo Drupal para gestión contenidos
1. DEFINICIÓN DE UN FLUJO DE
DESARROLLO PARA UN SISTEMA DE
GESTIÓN DE CONTENIDOS
Trabajo de Final de Carrera
Ingeniería Técnica en Informática de Gestión
Universidad de Alcalá
por Ignacio Sánchez Holgueras
2. Objetivo
• Reducir los fallos en la comunicación entre agentes
• Homogeneizar los diferentes entornos (desarrollo,
producción)
• Aumentar la productividad y calidad en el desarrollo
4. Agentes
• Cliente
– Stakeholders
– Product Owner
• Proveedor
– Jefe de Proyecto
– Responsable de desarrollo
– Equipo de desarrollo
• Coacher
5. Entorno común, OpenAtrium
• Blog: Incluir novedades del
proyecto
• Book: Incluir la información
de negocio
• Case Tracker: Gestión de
tareas e incidencias
• Calendar: Hitos
Entorno común de comunicación y gestión de
información:
6. Entornos
• Entorno de producción:
– Linux 2.6, Debian 6,
– Apache 2.2 + MySQL
5.5,
– varnish, memcache, apc
,...
• Entorno de desarrollo:
– Windows 7,
– Wamp,
– Apache 2.4
– ,...
7. Vagrant + Chef
• Producción = Local
• Debian 6 (kernel 2.6)
• Apache 2.0.x
• Varnish 3.0.4,
• APC 3.1.11,
• xDebug
• ...
8. NetBeans + xDebug
• IDE funcional básico con autoformateado y
autocompletado
• Posibilidad de debuggear el código fuente
9. Git
• Gestor de código fuente distribuido.
– Utilizado en proyectos grandes (kernel, apache,...)
– Pensado en comunidades de Software Libre
• Historial de código fuente sin conexión
• Potencia de Ramas + Forks
• Revisión de pull requests
10. Tests (TDD)
• Realización de Tests con filosofía TDD (Test
Driven Development)
– Muy unidos a los requisitos
– Se programan primero, y se hacen fallar
– Se validan con código fuente "sucio"
– Se refactoriza el código fuente validando los tests
11. Integración contínua
• Unido a herramientas que automatizan el
proceso como
• se obtiene un sistema
que instala, comprueba, valida y testea la
aplicación automáticamente
12. Desarrollo en Drupal
Siguiendo los estándares de Drupal se ha
desarrollado un pequeño Drupal con:
• Un tipo de contenido "noticias"
• Un módulo personalizado "messages"
• Un tema integado
• Un perfil personalizado
14. Técnicas de desarrollo
• Sistema de templates
• Funcionamiento de módulos
• Sistema de hooks
hook_form_alter($form, &form_state);
hook_menu();
hook_theme();
template_preprocess();
15. Conclusiones
• Comunicación en un único sitio.
• El pensamiento de stakeholders lo tiene el equipo.
• El responsable de desarrollo tiene el control del código
• Permite la reinstalación e integración contínua.
• Muy poco código fuente duplicado
• Toda la configuración de BD está en código fuente
• El equipo de desarrollo trabaja bajo condiciones
similares
• El equipo desarrolla sus propios estándares.