Flujo de desarrollo
en Drupal
MY NAME IS
HELLO
Nacho
@isholgueras
1984
486 DX2 con 32MB de RAM
NES, SNES, GB
Basic, Logo, Pascal
Ingeniero Técnico en Informática
Front-end, Drupal y Javascript
idealista.com
El flujo actual
Agentes
Jefe de proyecto
Analista
Equipo de desarrollo
Cliente / usuario
Usuarios finales
Estimaciones
2 meses de concurso, oferta y aceptación
1 mes de definición de requisitos
2 meses de arquitectura
1 mes de diseño
3 meses de desarrollo
2 semanas de entrega
2 meses de “soporte”
Total: 9 meses para tener algo
Y 11 meses para tenerlo funcionando
Qué quiere el usuario
Seamos el
cliente
Soy usuario
Como paciente en un hospital
Como cliente en un taller
Como usuario en una web
+
loading...
Quiero
+
loading...
Operarme de la espalda
Cambiar los neumáticos
Comprar un vuelo
¿Seguro?
Realmente necesito
No tener dolor de espalda
Poder usar mi coche
Llegar a mi destino
+
loading...
Voy a un consultar
con un especialista
para obtener una
Solución
Soluciones,
no problemas
El niño del píxel
MUY BONITO TODO ESTO QUE DICES
¿Pero cómo?
12 principios
Valor
Simplicidad
Reflexión
Motivación
12
Entrega temprana y frecuente
Simplicidad
Los requisitos cambian
Confianza
Unidad de medida:
Producto funcionando
Ritmo constante
Comunicación cara a cara
Equipos
auto-organizados
http://agilemanifesto.org/iso/es/principles.html
Let's
GO!
Agentes
Cliente
Stakeholders
Product owner
Proveedor
Jefe de proyecto
Responsable de desarrollo
Equipo (UX, Diseño,...)
Coacher
Otros equipos
NECESIDADES
Obtengamos las necesidades del
cliente mediante requisitos,
pero en su mismo idioma
1. Tareas épicas
Taxonomía
Usuarios
Noticias
Eventos
Newsletter
...
2. Características
Entregables tangibles
Característica: Registro de usuario.
Como visitante
Yo quiero registrarme en el sistema
Para acceder a sus funciones
El registro funciona en tres etapas:
1. Solicitar el registro con un formulario en la página web. El solicitante
recibe un correo.
2. Seguir un enlace de confirmación en el correo para activar la cuenta.
3. Llenar la información del perfil. En esta etapa el usuario ya tiene una
cuenta pero tratamos de recolectar más información acerca de él.
3. Escenarios
Piezas de los entregables
Escenario 1: Solicitar una cuenta
Dado que no tengo una cuenta
Cuando sigo el enlace de registro de la página de inicio
Y lleno la forma con detalles válidos y la envío
Entonces debo ver un mensaje de confirmación diciéndome que revise mi
correo.
Escenario 2: Confirmar cuenta
…
Escenario 3: Llenar el perfil de la cuenta …
TIP: es una parte de BDD
Behavior Driven Development
¿Y esto a tareas?
1
2
3
4
Priorizar características y escenarios
Escenarios
Tareas
Estimar fibonacci, 2^n, e,...
Unidades: patatas, azucarillos... pero
nunca tiempo
Resultado
1
2
3
4
Listado de tareas
Prioridades
Estimaciones
Agrupaciones de sprints
Entrega contínua
MAR 2013
Sprint 1
Sprint 2
Sprint n
3 semanas
3 semanas
3 semanas
drupal base
entorno
registro usuarios
noticias
API REST noticias
eventos
API usuarios
RWD
Cada sprint
Características al 100%
Dar valor de producto
Cada 2 semanas - 1 mes
Características testadas
1500
LIKES
Repositorio de documentación
Accesible y modificable por todos
Listados de tareas, hitos, sprints,...
Función de buscar
Herramientas existentes:
OpenAtrium
Confluence
MediaWiki
...
Open Atrium
Notebook para características, escenarios, diseños,
prototipos,...
Case Tracker para tareas
Blog para acontecimientos
Calendar para hitos y sprints
Del manifiesto ágil
1 Comunicación cara a cara
2 Codo a codo entre negocio y desarrollo
3 Simplicidad
4 Confianza
5 Requisitos cambian
6 Entregas frecuentes
7 Valor
8 Unidad de medida: Producto funcionando
Entorno de desarrollo
F
Desarrollo
Producción
Wamp o Xampp
Apache 2.2.x
MySQL 5.5.x
PHP 5.3.x
Git 1.7
...
Apache 2.4.x
Percona SQL 5.5.x
PHP 5.4.x
Apache Solr 4.5
Memcache 1.4.15
ImageMagick 6.8.7-2
APC 3.1.13
Git 1.7
dompdf 0.5.2
...
Virtualización
Replicar entorno de PRO
en una máquina virtual
Virtualización mejorada
Distribuir configuración
de máquinas virtuales
Opciones en fichero
Puertos
IP e interfaces
Carpeta compartida
Opciones SSH
...
Virtualización
mejorada con 'asteroides'
Aprovisionador de paquetes
Configuración completa en código fuente
¿En serio?
¿En ficheros?
Aprovisionador
Ooosst...
¡Bua chaval!
El cojo-entorno de desarrollo
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
Y si le añades tu IDE preferido...
Autoformateado
Autocompletado
Debuggeo
Integración con Git
Desarrollo en Drupal
Desarrollo iterativo con
Features
Context
Display Suite
Profiles
(Drush Make)
Context para
Estructura
Navegación
Bloques
Regiones
DISPLAY SUITE
Vista de datos
Presentaciones
Regiones internas
Templates
Reutilización
FEATURES
Empaquetado
Por funcionalidad
Configuración a
fichero
Módulo
DRUSH MAKE
El botón de GO
Filosofía APT
Línea de comandos
Descriptor de módulos y
versiones
1 fichero y tienes el proyecto
Ventajas
Motivación
Confianza del cliente
Todo en código fuente
Menos código custom
Filosofía de reinstalar
Reutilizable y extensible
Fiabilidad y estabilidad
Sincronización con PRO
Desventajas
Disciplina
Constancia
Menos flexibilidad en código
Rendimiento de Vagrant
Curva Git VS svn
Coste inicial
Clientes difíciles u organismos
Mejoras a futuro
Phing
TDD
¿Es fácil?
NO
Pero merece la pena
porque ...
... al menos para mí ...
Las mejores arquitecturas,
requisitos y diseños emergen
de equipos auto-organizados
Undécimo principio del manifiesto ágil
Ignacio Sánchez Holgueras
@isholgueras
[email protected]
user/733162
Comentarios de: Flujo de desarrollo en Drupal (0)
No hay comentarios