Este documento presenta un marco para la mejora de procesos ágiles. Propone un Modelo de Madurez de Proyectos Ágiles (MMAP) basado en ISO/IEC 15504, con prácticas ágiles y base organizadas en categorías de procesos. El MMAP define 4 niveles de madurez. También presenta un método de evaluación basado en Express Process Appraisal para medir el nivel de madurez alcanzado por un proyecto. El objetivo es permitir que proyectos ágiles se beneficien de métodos de mejora
4. Desarrollo de software “tradicional” (1)
● “The quality of a system is highly influenced
by the quality of the process used to
acquire, develop, and maintain it”. [1]
● Procesos estándar y bien definidos.
● Planeación y documentación extensas.
● Mediciones de rendimiento cuantitativas.
[1] Jalote P. An integrated approach to software engineering: Springer Verlag; 1997
7. Mejora de procesos (1)
● “The quality of a system is highly influenced
by the quality of the process used to
acquire, develop, and maintain it”.
8. Mejora de procesos (2)
● “Entender los procesos existentes y
cambiarlos para incrementar la calidad del
producto y/o reducir costos y tiempo de
desarrollo”. [2]
● Proceso: actividades, roles, artefactos, flujos
de trabajo.
● Ejemplos: Requerimientos, definición de
arquitectura, PSP, TSP.
[2] Sommerville I. Software Engineering. 10th, 2015
9. Mejora de procesos (3)
MEDIR
ANALIZARCAMBIAR
Sommerville I. Software Engineering. 10th, 2015
10. Mejora de procesos (4)
Frameworks:
● Colección de prácticas que describen la
forma de desarrollar software.
● Utilizados para establecer objetivos y
prioridades.
● Usados con un método de evaluación para
analizar el estado actual de las prácticas de
una empresa.
12. ISO/IEC 15504
Capability Level Process Attributes
Level 5: Optimizing 5.1 Process Innovation
5.2 Process Optimization
Level 4 – Predictable 4.1 Process Measurement
4.2 Process Control
Level 3 – Established 3.1 Process Definition
3.2 Process Deployment
Level 2 – Managed 2.1 Performance Management
2.2 Work Product
Management
Level 1 – Performed 1.1 Process Performance
Level 0 – Incomplete
13. Desarrollo de software ágil (1)
● 2001 surge el movimiento ágil.
● Valores, filosofía y esencia se encuentra en:
○ Manifesto of the agile alliance [3].
○ Principles that support the values [4].
● Series de metodologías y prácticas: Scrum,
Extreme Programming (XP), Kanban.
[3] Manifesto for Agile Software Development. 2016; http://agilemanifesto.org
[4] Principles behind the Agile Manifesto. 2016;http://agilemanifesto.org/principles.html
15. Principios
1. Entregas tempranas y continuas de software
2. Aceptación de cambios para ventaja del cliente
3. Entregas de software frecuentemente
4. Personas de negocio y desarrolladores trabajan juntos
5. Equipos motivados, apoyo y confianza
6. La conversación cara a cara es la mas efectiva
7. La medida principal es software
8. Mantener un ritmo sustentable de trabajo
9. Enfoque continuo en excelencia técnica
10. Simplicidad para minimizar trabajo desperdiciado
11. Equipos auto organizados
12. Reflexionar regularmente, ajustar para ser más efectivos
http://agilemanifesto.org/principles.html
19. Marco para la mejora de procesos ágiles
● Motivos
● Restricciones / Requerimientos
● Marco para la mejora de procesos ágiles
● Evaluación de proyecto
● Resultados
20. Motivos (1)
[5] Performance Results of CMMI-Based Process Improvement
http://resources.sei.cmu.edu/library/asset-view.cfm?assetID=8065
Categoría de rendimiento Media en mejora
Costo 34%
Calendario 50%
Productividad 61%
Calidad 48%
Satisfacción del cliente 14%
ROI 4.0:1
Beneficios de SPI:
21. Motivos (2)
● Métodos ágiles contienen un conjunto de
prácticas que requieren ser usadas en
conjunto para ser efectivas.
Planning
game
TDD
Small
releases
Metaphor
Simple
design
Customer
tests
Design
improvement
Pair
Programming
Collective
Code
ownership
Continuous
integration
Sustainable
pace
Whole
team
Coding
standards
22. Motivos (3)
● Ajustar procesos ágiles: “Reflexionar
regularmente, ajustar para ser más
efectivos”.
● Requiere personas del equipo con
experiencia en tecnología, administración y
organización.
23. Restricciones / Requerimientos
● Respetar la esencia del desarrollo ágil.
● No puede estar basado en procesos
definidos, predecibles y repetitivos.
● Debe poder ejecutarse en cualquier etapa
del desarrollo de un proyecto.
● La documentación no puede ser
forzosamente una fuente de evidencia.
24. Marco para la mejora de procesos ágiles
● Modelo de madurez de proyectos ágiles
(MMAP)
● Método de evaluación
25. Modelo de madurez (1)
Características
● Basado en el modelo ISO/IEC 15504 [6].
● Consiste de una serie de prácticas
organizadas en categorías de procesos de
acuerdo al tipo de actividad que contienen.
● Incluye prácticas ágiles y prácticas base.
● Define cuatro niveles de madurez para
proyectos ágiles.
[6]ISO/IEC. Software process assessment: Part 2: A reference model for processes and process
capability. International Standard ISO/IEC 15504-2.
26. Modelo de madurez (2)
MMAP
Manifesto
ágil
ISO/IEC
15504
Principios
ágiles
Metodologias
ágiles
Desarrollo de sw
No incluye prácticas
genéricas
4 niveles de madurez
27. Modelo de madurez (3)
Prácticas
base
Categoría
de proceso
Nivel de
madurez
Proceso
Prácticas
ágiles
28. Modelo de madurez - Categorías
● Cliente
● Ingeniería
● Proyecto
● Soporte
● Organización
29. Modelo de madurez - Niveles
Nivel 0: No es ágil
Nivel 1: Ágil inicial
Nivel 2: Ágil consolidado
Nivel 3: Ágil optimizado
30. Modelo de madurez - Prácticas (1)
C
U
S
CUS.2. Establece
contrato
A.CUS.2.1 Negocia un contrato flexible
CUS.5
Empaqueta,
entrega e instala
el software
A.CUS.5.1 Entrega software frecuentemente
B.CUS.5.2 Identifica reqs de instalación
B.CUS.5.6 Instala el software
CUS.9. Cliente A.CUS.9.1 Conoce al cliente
A.CUS.9.2 Interactúa con el cliente constantemente
A.CUS.9.3 Trabaja con el cliente de forma cercana
31. Modelo de madurez - Prácticas (2)
E
N
G
ENG.2
Requerimientos
B.ENG.2.1 Determina los requerimientos
ENG.3 Disenio B.ENG.3.5 Desarrolla una solución técnica del
producto
ENG.4
Implementacion
B.ENG.4.1 Desarrolla unidades de software
B.ENG.4.2 Desarrolla procedimientos de
verificación de unidad
B.ENG.4.3 Verifica las unidades de software
ENG.5 Integración y
prueba
B.ENG.5.5 Desarrolla pruebas de software
B.ENG.5.6 Prueba la integración del software
B.ENG.5.7 Integra de forma contínua
ENG.6 Integración y
prueba de sistema
B.ENG.6.4 Desarrolla pruebas de sistema
B.ENG.6.5 Prueba el sistema
32. Modelo de madurez - Prácticas (3)
P
R
O
PRO.2. Establece plan
del proyecto
A.PRO.2.1 Planea en iteraciones
A.PRO.2.2 Planea la iteración actual
B.PRO.2.4 Determina una estrategia de reuso
B.PRO.2.5 Desarrolla estimados del proyecto
B.PRO.2.11 Define estándares del proyecto
PRO.3 Establece el
equipo de trabajo
A.PRO.3.1 Fomenta la comunicación en el equipo
A.PRO.3.2 Establece equipos auto organizados
PRO.4 Administra
requerimientos
A.PRO.4.1 Acepta cambios en requerimientos
PRO.5 Administra
calidad
A.PRO.5.1 Enfoque en excelencia técnica y buenos
diseños
B.PRO.5.4 Ejecuta actividades de calidad
B.PRO.5.7 Define actividades de calidad
PRO.6 Administra
riesgos
B.PRO.6.2 Identifica riesgos
B.PRO.6.3 Analiza y prioriza riesgos
B.PRO.6.4 Desarrolla actividades de mitigación
B.PRO.6.6 Implementa actividades de mitigación
PRO.7 Administra
recursos y calendarios
A.PRO.7.2 Mide el progreso con base en software
B.PRO.7.4 Conduce revisiones de avance
33. Modelo de madurez - Prácticas (4)
S
U
P
SUP.1 Documenta A.SUP1.1 Conoce el propósito de cada
artefacto
A.SUP1.2 Determina la doc a producir
SUP.3 Aseguramiento de
calidad
B.SUP.3.1 Conduce revisiones técnicas
SUP.6 Facilita herramientas
de trabajo
B.SUP.6.1 Implementa control de versiones
B.SUP.6.2 Automatiza el trabajo
34. Modelo de madurez - Prácticas (5)
O
R
G
ORG.1 Negocio B.ORG.1.4 Desarrolla equipos integrados
B.ORG.1.5 Provee incentivos
A.ORG.1.6 Establece ritmos de trabajo
sustentables
ORG.3 Mejora el
proceso
A.ORG.3.1 Reflexiona en el trabajo en equipo
A.ORG.3.2 Identifica mejoras
A.ORG.3.3 Ajusta el proceso utilizado
ORG.4 Capacita B.ORG.4.1 Identifica necesidades de
capacitación
B.ORG.4.3 Entrena al personal
ORG.7 Provee
instalaciones de
trabajo
B.ORG.7.1 Provee un ambiente de trabajo
productivo
B.ORG.7.3 Provee respaldos de información
B.ORG.7.4 Provee instalaciones adecuadas
ORG.8 Adapta el
proceso
A.ORG.8.1 Define metas y requerimientos
A.ORG.8.3 Modifica el proceso de acuerdo al
contexto
35. Modelo de madurez - Niveles (1)
NIVEL 1 A.CUS.5.1 Entrega software frecuentemente
A.CUS.9.1 Conoce al cliente
A.CUS.9.2 Interactúa con el cliente constantemente
A.PRO.2.1 Planea en iteraciones
A.PRO.2.2 Planea la iteración actual
A.PRO.3.1 Fomenta la comunicación en el equipo
A.PRO.4.1 Acepta cambios en requerimientos
A.SUP.1.1 Conoce el propósito de cada artefacto
B.ENG.2.1 Determina los requerimientos
B.ENG.3.5 Desarrolla una solución técnica del producto
B.ENG.4.1 Desarrolla unidades de software
B.ENG.4.2 Desarrolla procedimientos de verificación de unidad
B.ENG.4.3 Verifica las unidades de software
B.ENG.5.5 Desarrolla pruebas de software
B.ENG.5.6 Prueba la integración del software
B.ENG.5.7 Integra de forma contínua
B.PRO.6.4 Desarrolla actividades de mitigación
B.PRO.6.5 Implementa actividades de mitigación
B.CUS.5.6 Instala el software
36. Modelo de madurez - Niveles (2)
NIVEL 2 A.CUS.2.1 Negocia un contrato flexible
A.CUS.9.3 Trabaja con el cliente de forma cercana
A.PRO.3.2 Establece equipos auto organizados
A.PRO.5.1 Enfoque en excelencia técnica y buenos diseños
A.PRO.7.2 Mide el progreso con base en software
A.SUP.1.2 Determina la doc a producir
A.ORG.1.6 Establece ritmos de trabajo sustentables
B.ORG.1.4 Desarrolla equipos integrados
B.ORG.1.5 Provee incentivos
B.ORG.7.1 Provee un ambiente de trabajo productivo
B.ORG.7.3 Provee respaldos de información
B.ORG.7.4 Provee instalaciones adecuadas
B.PRO.2.11 Define estándares del proyecto
B.PRO.5.7 Define actividades de calidad
B.PRO.5.4 Ejecuta actividades de calidad
B.PRO.6.2 Identifica riesgos
B.PRO.6.3 Analiza y prioriza riesgos
B.PRO.6.4 Desarrolla actividades de mitigación
B.PRO.6.6 Implementa actividades de mitigación
B.SUP.6.1 Implementa control de versiones
37. Modelo de madurez - Niveles (3)
NIVEL 3 A.ORG.8.1 Define metas y requerimientos
A.ORG.8.3 Modifica el proceso de acuerdo al contexto
A.ORG.3.1 Reflexiona en el trabajo en equipo
A.ORG.3.2 Identifica mejoras
A.ORG.3.3 Ajusta el proceso utilizado
B.ORG.4.1 Identifica necesidades de capacitación
B.ORG.4.3 Entrena al personal
B.SUP.6.2 Automatiza el trabajo
B.PRO.7.4 Conduce revisiones de avance
B.PRO.2.4 Determina una estrategia de reuso
B.PRO.2.5 Desarrolla estimados del proyecto
38. Método de evaluación
Basado en el método express process
appraisal (EPA) [7]
1. Calendario para la evaluación
2. Sesión de información
3. Información del negocio
4. Analizar documentos clave
5. Entrevistas
6. Generar los resultados
7. Crear reporte final
8. Presentación de resultados
[7] PartMcCaffery F, McFall D, Wilkie FG, Co-Antrim BT, Ireland N, editors. Improving the Express
Process Appraisal Method, 2005: Springer.
39. Evaluación proyecto A (1)
● Mantenimiento y nueva funcionalidad.
● Complejidad media (interacción con
hardware).
● Equipo de 10 personas por 7 meses.
● Metodología usada: Scrum.
● Roles: Líder de proyecto, 5 desarrolladores y
3 personas de pruebas.
42. Evaluación proyecto A (3)
● Nivel 3
A.ORG.8.1
A.ORG.8.3
A.ORG.3.1
A.ORG.3.2
A.ORG.3.3
B.ORG.4.1
B.ORG.4.3
B.SUP.6.2
B.PRO.7.4
B.PRO.2.4
B.PRO.2.5
43. Evaluación proyecto A - Fortalezas
● 8 horas máximo al día.
● Equipo implementa prácticas de
administración basadas en Scrum.
● Equipo usa herramientas: Jira, Wiki, svn
● El cliente puede modificar requerimientos
directamente en jira.
● Fuerte enfoque en pruebas.
● El equipo identifica áreas de mejora y las
implementa.
44. Evaluación proyecto A -Áreas de mejora
● Comunicación indirecta con cliente y mínima
comunicación interna entre colegas.
● Falta de elementos para lograr excelencia
técnica y buen diseño.
● El equipo no tiene una forma unificada de
ejecutar pruebas de unidad.
● La integración del producto la realiza una
persona manualmente.
● Las estimaciones se hacen al criterio de los
desarrolladores.
45. Evaluación proyecto A - Sugerencias
● Uso de videoconferencia entre el equipo y
cliente.
● Modificar la distribución física del equipo de
trabajo.
● Implementar prácticas de XP.
● Automatizar las tareas repetitivas del
equipo.
● Utilizar los datos generados para
estimaciones (velocity, user stories).