Post on 06-Jan-2015
Desarrollo de software innovador con métodos
ágiles
http://ww
Definir requerimientos de clientes, dirección y alcance del ProductoInvestigar, definir visión del Producto
“Crear” el productoProgramación
Diseñar del ProductoEscribir especificaciones técnicas detalladas, definir fechas para las
siguientes fases
Corregir bugsPreparar el producto para su release
Vender el producto y darle soporteObtener feedback de los clientes
Planificación
Diseño
Implementación
Estabilización
Release
Desarrollo de software tradicional (en cascada)
La mayoría de los proyectos de desarrollo de software son COMPLEJOS . . .
Simple
ComplejoAnarquía
Complicado
Tecnología utilizada
Req
ueri
mie
nto
sLejos de Acuerdo
Cerca deAcuerdo
Cerc
a d
eC
ert
eza
Lejo
s d
eC
ert
eza
Fuente: Strategic Management and Organizational Dynamics by Ralph Stacey in Agile Software Development with Scrum by Ken Schwaber and Mike Beedle.
Tecnología utilizada
Req
ueri
mie
nto
s
Lejos de Acuerdo
Cerca deAcuerdo
Cerc
a d
eC
ert
eza
Lejo
s d
eC
ert
eza
Sere
s Hum
anos
. . . y las personas contribuimos a que esa complejidad aumente.
• Podemos adoptar con éxito un modelo pre-definido para controlar un proceso cuando entendemos bien los mecanismos subyacentes de ese proceso
• Pero el proceso de desarrollar software innovador es muy complejo y generalmente desconocido al comienzo de los proyectos
“. . . cuando un proceso es muy complejo, la mejor elección es aplicar conceptos y controles empíricos. “
Fuente: B. A. Ogunnaike and W. H. Ray, Process Dynamics, Modeling, and Control
Control Empírico de Procesos
Control Empírico de Procesos
Ejemplo: Code Review
Varios programadores codifican, conociendo los estándares de la industria
Codificadores experimentados revisan
Se hacen ajustes según los comentarios recibidos
Manifiesto Agil
•Scrum es un proceso ágil que nos permite centrarnos en ofrecer el más alto valor de negocio en el menor tiempo.
•Nos permite rápidamente y en repetidas ocasiones inspeccionar software real de trabajo (cada dos semanas o un mes).
•El negocio fija las prioridades. Los equipos se auto-organizan a fin de determinar la mejor manera de entregar las funcionalidades de más alta prioridad.
•Cada dos semanas o un mes, cualquiera puede ver el software real funcionando y decidir si liberarlo o seguir mejorandolo en otro sprint.
Scrum
• Equipos auto-organizados
• El producto avanza en una serie de “Sprints" de dos semanas a un mes de duración
• No hay prácticas de ingeniería prescritas
• Pero sí reglas (pocas y muy claras) que se aplican con férrea disciplina
• Existe una lista priorizada de requerimientos (“Product Backlog”)
• Formato de user stories
• Ordenados por valor de negocios
• El “Team” define el cómo y estima los tiempos
Características de Scrum
Roles
Product Owner
Define las funcionalidades del producto
Decide sobre las fechas y contenidos de los releases
Es responsable por la rentabilidad del producto (ROI)
Prioriza funcionalidades de acuerdo al valor del mercado/negocio
Ajusta funcionalidades y prioridades en cada iteración si es necesario
ScrumMaster
Representa a la gestión del proyecto
Responsable de promover los valores y prácticas de Scrum
Remueve impedimentos
Se asegura de que el equipo es completamente funcional y productivo
Permite la estrecha cooperación en todos los roles y funciones
Escudo del equipo de interferencias externas
Team
Típicamente de 5 a 9 personas
Multi-funcional: Programadores, testers, analistas, diseñadores, etc.
Integrantes full-timePuede haber excepciones
Los equipos son auto-organizativos
Idealmente, no existen títulos pero a veces se utilizan de acuerdo a la organización
Reuniones
• Planificación del Sprint
• Stand-up meeting (Daily Scrum)
• Qué hice ayer / Qué voy a hacer hoy / Impedimentos
• Sprint Demo (Review)
• Sprint Retrospective
Fuente: www.mountaingoatsoftware.com/scrum
Principios de Lean Software Development
a) Investigar en Internet acerca de los siguientes métodos ágiles de desarrollo de software:
• Peer Programming (Programación de a pares)
• XP – Extreme Programming
• TDD – Test-Driven Development
• BDD – Business-Driven Development
• Kanban
b) Para cada método ágil mencionado escribir una definición breve que permita explicarlo a otra persona en 2 minutos
• Test del elevador
c) Elegir uno de los métodos y explicarlo a través de un dibujo, diagrama, infografía, foto, collage de imágenes, o similar.
Trabajo práctico de métodos ágiles