Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
pg.1
Temática
ALM (Application Lifecycle Management) es el manejo continuo del ciclo de
vida de los proyectos de software a través de técnicas de gobernabilidad,
técnicas de ingeniería de software y herramientas para el manejo de las
distintas etapas de un proyecto.
pg.2
Agenda
1. Beneficios de las metodologías ágiles al aplicarse a ALM
2. Prácticas organizacionales para lograr un ALM ágil
3. Cómo automatizar el ALM y asegurar el logro de los
beneficios de las metodologías ágiles?
4. Características y facilidades de los ambientes colaborativos
5. Ilustración de algunos ambientes colaborativos
6. Conclusiones respecto a ALM & ambientes colaborativos &
metodologías ágiles
pg.3
Beneficios de las
metodologías ágiles al
aplicarse a ALM
pg.4
Concepto de ALM (Application Lifecycle
Management)
• Es el manejo continuo del ciclo de vida de los
proyectos de software a través de :
– técnicas de gobernabilidad
– técnicas de ingeniería de software
– herramientas que facilitan e integran el manejo de:
• requerimientos
• especificación de arquitectura
• programación
• pruebas
• seguimiento de actividades
• manejo de liberaciones de productos.
pg.5
Concepto de ALM ágil
• ALM tradicional:
– aplica herramientas para hacer cumplir procesos
prodefinidos y estandarizados
• ALM ágil:
– aplica herramientas para apoyar el trabajo de las personas
y los procesos que son más adecuados para el modo en
que las personas trabajan en equipo para crear software
– es importante entonces contar con las herramientas
adecuadas para apoyar las prácticas ágiles
pg.6
Manejo ágil de proyectos
• Objetivo:
– tener en tiempo real visibilidad y control del proyecto en
cada una de sus etapas
• Beneficio:
– adaptarse a los cambios en los requerimientos y adaptarse
al modo en que trabaja el equipo
pg.7
Manejo ágil de pruebas
• Objetivo:
– hacer pruebas rápidamente y frecuentemente para
asegurar que todas las funcionalidades del proyecto hacen
exactamente lo que espera el negocio.
• Beneficio:
– poder incorporar cambios de última hora
pg.8
Manejo ágil de entrega al cliente
• Problema:
– Esta etapa es a menudo un proceso en cascada con mucho
riesgo, consumo de tiempo, costoso e impredecible
• Objetivo:
– hacer liberaciones del software del proyecto de acuerdo a
los requerimientos de negocio y no a restricciones
operativas
• Beneficio:
– Permite realizar entregas a tiempo al cliente de versiones
acordadas y libres de defectos; asegura las ganancias del
proyecto
pg.9
Beneficios generales de ALM ágil
• Libera a las empresas de los procesos y herramientas
pesadas que se interponen en el camino de la
creación de software interesante y útil
pg.11
5 prácticas organizacionales para lograr un
ALM ágil
Referencia: " Redefining ALM with Five Key Practices ", by Ethan Teng, Cyndi Mitchell and Chad Wathington, ThoughtWorks Studios, 2011,
http://www.thoughtworks-studios.com/download/whitepapers/redefining_alm.pdf pg.12
1. Evolucionar la definición de proceso: Los procesos
ágiles son generativos, no prescriptivos
– [Jim Highsmith, autor de “Agile Project Management”] “A prescriptive
approach generates complex and complicated processes whereas a
generative approach begins with a set of simple processes and adds
others as they are needed”
Referencia: " Agile Project Management: Creating Innovative Products", by Jim Highsmith, Addison-Wesley Professional, 2004.
pg.13
2. Abrazar la heterogeneidad
– [Martin Fowler, co-autor del “Manifesto for Agile Software
Development”] “You should never expect to find a single corporate
methodology. While both published processes and the experience of other
projects can act as an inspiration and a baseline, the developer's
professional responsibility is to adapt the process to the task at hand.”
– ALM ágil supone que cada proyecto de software es diferente. Así como
los procesos no son estáticos, tampoco pueden estandarizarse igual para
todos los equipos.
– Las empresas que adoptan la heterogeneidad logran equipos de alto
rendimiento en la entrega al cliente y con gran capacidad de mitigar el
riesgo.
– Se requieren entonces herramientas que soporten la diversidad de
procesos y la consistencia a través de los proyectos para lograr el
gobierno global de estos proyectos a nivel de la empresa.
Referencia: " Manifesto for Agile Software Development", by Kent Beck et al., 2001, http://agilemanifesto.org/ .
pg.14
3. Construir lo correcto
– [Jez Humble, autor de “Continuous Delivery”]. “ If you're not constantly
delivering working software, you're not getting feedback on whether what
you're delivering is useful. Overwhelmingly, the chances are that you won't
build the right thing first time. The longer it takes you to get feedback and
pivot, the more time and money you spend on building the wrong thing.”
– Agile ALM ágil incorpora clientes a las actividades del día a día de los
equipos de software. Como miembros del equipo, pueden dar
retroalimentación inmediata que permite hacer las correcciones para
construir lo correcto.
– Construir lo correcto requiere de herramientas que faciliten el diálogo
y la colaboración en todo el ciclo de vida del desarrollo de software:
• para que clientes, analistas y probadores puedan trabajar juntos en la definición de
criterios de aceptación
• para lograr hacer entregas regulares que es la mejor manera de garantizar que se
está construyendo lo correcto.
Referencia: " Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation", by Jez Humble,
David Farley, Addison-Wesley Signature Series (Fowler), 2010. pg.15
4. Entrega continua
– [Jez Humble] “Keeping your software production ready from the beginning of
the delivery process has several benefits. First, it means releasing is a low-risk,
push-button process. That means you can do it more often, which means you
can show it to users to get feedback more frequently, test it under realistic
conditions more frequently, and get the only real measure of product progress.
In short, it means you can deliver higher quality software faster, and reduce
waste in your delivery process.”
– ALM ágil hace entregas de pocas funcionalidades cada pocos días o
semanas, en lugar de hacer entregas de muchas funcionalidades cada
cierto número de meses. Esta entrega continua asegura que el camino
hacia la producción es claro y previsible.
– Entrega continua requiere herramientas que faciliten la colaboraciòn
técnica detallada:
• para ayudar a probadores, analistas, desarrolladores y clientes a probar
rápidamente , detectar defectos y corregirlos.
• para reducir o incluso eliminar los defectos mediante la automatización de cada
paso de validación (pruebas funcionales, pruebas de rendimiento, pruebas de
seguridad y pruebas de aceptación general).
pg.16
5. Orquestar, no controlar
– [Jim Highsmith] “Governance is about monitoring investment and risk, not
checking-off process steps. In fact, the key to effective executive project
oversight is separating governance from operational processes, evaluating
investment and risk at key project milestones and generating the data for that
evaluation through iterative delivery.”
– ALM tradicional históricamente ha confundido el cumplimiento de
procesos con la gobernabilidad, por lo cual los gerentes tradicionales
proporcionan herramientas pesadas para hacer cumplir el flujo de
trabajo.
– ALM ágil propone que los gerentes sean orquestadores, asegurando
que el trabajo esté alineado con los objetivos de negocio, eliminando
obstáculos, y ayudando a difundir las mejores prácticas entre los
equipos.
– La orquestación requiere herramientas para apoyar las prácticas
organizacionales clave, visión en tiempo real del estado de los
proyectos logrando que esos proyectos estén alineados con los
objetivos de negocio y que sean capaces de realizar entrega continua.
pg.17
Rol de las herramientas en la
automatización de ALM ágil
– En ALM tradicional, las herramientas son las que dirigen el proceso
– En ALM ágil, las personas son las que dirigen el proceso y las
herramientas deben adaptarse para soportar el proceso.
– El proceso correcto no puede ser definido por adelantado, ni puede
ser completamente estandarizado a través de todos los equipos. La
mejor manera de manejar el riesgo es tener total visibilidad (mediante
herramientas acecuadas) y no la estandarización completa.
– La mejor manera de entregar software que satisfaga las necesidades
de negocio es a través de la colaboración constante y la entrega
continua (mediante herramientas adecuadas), y no manejando
artefactos.
– Las iniciativas de software que están alineadas con el negocio tienen
líderes que orquestan en lugar de solamente controlar. pg.18
Cómo automatizar el ALM y
asegurar el logro de los
beneficios de las
metodologías ágiles?
pg.19
Modelo de madurez de metodologías ágiles
Referencia: " The Agile Maturity Model applied to building and releasing software", by Jez Humble, Rolf Russell , ThoughtWorks, Inc), 2010.
http://www.thoughtworks-studios.com/download/whitepapers/Agile-maturity-model-applied-to-building-and-releasing-software.pdf
pg.20
Objetivos del modelo de madurez de
metodologías ágiles
• El objetivo final es el mejoramiento de la empresa,
buscando los siguientes resultados:
– Tiempo de ciclo reducido, para responder más
rápidamente a cambios en requerimientos de negocio
– Reducción de defectos, mejorando así la reputación y
gastando menos en soporte.
– Mayor predicción en el ciclo de vida de entregas del
software logrando una planeación más eficiente.
– Capacidad de manejar los riesgos en la entrega de
software de manera efectiva (reducción de costos)
– Capacidad para adoptar y mantener una actitud de respeto
hacia las regulaciones que conciernen a los proyectos.
pg.21
Como apoyarse en el modelo de madurez
de metodologías ágiles
• Siga los pasos del ciclo Deming: planear, hacer,
verificar, actuar.
1. Identificar en qué nivel del modelo se encuentra su
empresa. En realidad diferentes aspectos o partes de la empresa
pueden encontrarse en diferentes niveles del modelo.
pg.23
Claves para automatizar el ALM ágil
• Escalando la Agilidad en grandes empresas
– Las metodologías ágiles tienen reputación de trabajar bien
con pequeños proyectos pero no con grandes proyectos,
en donde los resultados frecuentemente no son óptimos
(en el manejo de la complejidad de los problemas de estos
proyectos).
pg.24
• Ambientes ALM heterogéneos .
– La mayoría de empresas de desarrollo de proyectos de
software que han adoptado las metodologías ágiles
trabajan con ambientes ALM de múltiples herramientas
heterogéneas provenientes de diferentes proveedores y
también soluciones de software libre.
• se crea un problema de desconexión entre las personas que
trabajan en desarrollo, en calidad y en gestión, porque la
herramienta de cada uno no puede ver la información producida
por la herramienta del otro
• La heterogeneidad también produce un problema crítico de falta
de trazabilidad del ciclo de vida del software
Referencia: " Build your bottom line: Drive innovation with a collaborative requirements-driven quality solution", by Lisa Buckley & Alice Cockrum, Rational
software, IBM Software Group, 2009. http://www-01.ibm.com/software/rational/announce/wpseries/ pg.27
Características y facilidades
de los ambientes
colaborativos
pg.28
Qué es un ambiente colaborativo
para el desarrollo de proyectos de software ?
Servidor de Servidor
Base de Datos de Aplicaciones
Forums Repositorio de
Topic Replies Author Versiones
Trackers
Wikis
Docs
Releases
pg.32
(2) Facilidades ofrecidas por un ambiente
colaborativo para la
Gestión diaria de un proyecto
• Acople del ambiente colaborativo con el repositorio de
versiones de un proyecto (por ej. CVS o SubVervion)
permite :
– configurar permisos sobre el repositorio para cada
participante en el proyecto
– obtener el historial de versiones del proyecto
– obtener el historial del trabajo de cada participante en
términos de commits sobre el repositorio
pg.33
• Manejo de trackers e Items:
– las actividades de un proyecto se deben registrar en el
ambiente para poder controlar su desarrollo
– las actividades similares se agrupan por trackers definidos de
forma flexible (por ej: tracker de requerimientos, tracker de
casos de uso,etc.)
– Concepto de tracker: es una herramienta configurable para el
seguimiento de elementos (llamados items); según el tipo de
elementos se hace seguimiento de sus requerimientos, de sus
defectos, solicitudes de extensión, etc.
– en cada tracker se registran uno o varios items, cada uno con
la información referente a una actividad
– de cada item asociado a una actividad se podrá saber:
• en qué estado se encuentra su desarrollo
• quiénes participan en la actvidad
• tiempos planeados y tiempos reales invertidos en la actividad
• commits sobre el repositorio de versiones asociados con la actividad pg.34
• Automatización del flujo de trabajo de cada actividad
del proyecto: mediante la definición del workflow de
cada tracker
– se definen los estados por lo cuales pasa el desarrollo de
cada item de un tracker
– se indica el rol de participantes que trabaja en cada estado
de un item
– se configura la notificación automática que se enviará a los
participantes involucrados cuando el item progresa a un
nuevo estado
pg.35
• Seguridad: un ambiente colaborativo debe permitir
pg.36
(3) Facilidades ofrecidas por un ambiente
colaborativo para apoyar el control y
proyección de un proyecto
pg.37
Ilustración de algunos
ambientes colaborativos
pg.38
Ejemplos de ambientes colaborativos para
el desarrollo de proyectos de software
pg.39
(1) Facilidades para la comunicación entre
desarrolladores y clientes
• Ejemplo Gforge:
– versiones liberadas del software de un proyecto
pg.40
– Forums de distintos tipos (relativos a un proyecto)
pg.41
(2) Facilidades para la
Gestión diaria de un proyecto
• Ejemplo Gforge: ilustración de trackers e items
pg.42
– Lista de los items de un tracker (ej: tracker de desarrollo)
pg.43
Estimación de
•fecha inicio
•fecha final
(alimenta el Gantt)
Participantes
asignados
Producto (release)
asociado
estado actual
(campo Status)
Contenido(1)
de un item
de un tracker
(ej: un CU)
pg.44
Contenido(2)
de un item
de un tracker
archivos
anexos
historial
cambios
historial
commits
registro
dependencias tiempo
(alimenta el trabajado
Gantt)
45 pg.45
- Ilustración de la definición del workflow de un tracker en
GForge:el workflow definirá transiciones de estado de cualquier
item, modelando el campo “Status”
campos
del
tracker
transiciones de estado
pg.47
- definición del
workflow:
transiciones de
estado, roles
asociados y
notificaciones
automáticas
pg.48
pg. 48
• Autocontrol : cada participante debe poder ver las actividades
pendientes en que está involucrado (ejemplo en GForge)
pg.49
• Ejemplo en CollabNet (versión comercial de SourceForge)
– diversas herramientas para la gestión de proyectos en todas sus etapas
pg.51
b. Reporte de estado de avance de los productos del proyecto
pg.52
• Ejemplo en Jazz (IBM Rational):
– Dashboard de seguimiento
pg.53
• Ejemplo en eTask
– dashboard ejecutivo
Referencia: ““eTask.it –
orquestación de servicios
elimine los sobrecostos de
sus proyectos””, eTask
http://www.etask.it
pg.54
• Ejemplo en eTask
– Las cargas de trabajo de los recursos y las asignaciones de tareas son
fáciles de rastrear, asegurando así una asignación más eficiente a través de
toda la empresa
Referencia: ““eTask.it –
orquestación de servicios
elimine los sobrecostos de
sus proyectos””, eTask
http://www.etask.it
pg.55
Integración de herramientas que apoyan el
ciclo de vida de los proyectos
• Ejemplo: Jazz de IBM (Rational)
– Ambiente global que proporciona
facilidades de colaboración para el
ciclo de vida de los proyectos,
basándose en metodologías ágiles.
– Se basa en 3 iniciativas que habilitan el
ALM colaborativo:
• arquitectura de integración abierta
que favorece entregas continuas de
software de forma colaborativa,
productiva y transparente
• conjunto de servicios básicos que
habilitan la integración de
herramientas ALM heterogéneas
• Comunidad de desarrollo de más
Referencia: “The IBM Rational Jazz Strategy for Collaborative Application Lifecycle servicios y herramientas asociadas
Management”, Liz Barnett, EZ Insight, Inc. July 2009
http://jazz.net/projects/rational-team-concert pg.56
• Otros ambientes colaborativos
– Tasktop Sync: basado en Eclipse Mylyn http://tasktop.com/sync
• Facilidades para unificar y conectar herramientas heterogéneas
con los equipos de desarrollo que aplican metodologías ágiles
• Cada cliente o desarrollador tiene acceso a los datos que necesita
utilizando la herramienta de su elección
pg.58
• La revolución industrial del desarrollo de proyectos
de software requiere metodologías ágiles y
ambientes colaborativos
– las metodologías ágiles promueven calidad, comunicación
y agilidad en la entrega del producto al cliente
– los ambientes colaborativos permiten explotar la
colaboración del equipo que participa en un proyecto,
automatizar las actividades y controlar la gestión mediante
mediciones y análisis permanentes
– En la era de la automatización del software los ambientes
colaborativos son el entorno tecnológico indispensable
para la gerencia de proyectos, a fin de lograr ALM con los
beneficios de las metodologías ágiles
pg.59
• Beneficios de los ambientes colaborativos
– Colaboración en contexto
• Cada miembro de un proyecto tiene su propio rol y contexto de
trabajo y al mismo tiempo puede trabajar con otros en
entregables compartidos de la manera más productiva.
– Procesos en sus justas proporciones
• Un ambiente colaborativo facilita y automatiza el uso de mejores
prácticas sin afectar la productividad individual o de equipo. Además
permite definir múltiples tipos de procesos (desde livianos hasta
altamente estructurados) disponibles para los distintos tipos de
proyectos.
– Transparencia global.
• El ambiente colaborativo proporciona la transparencia requerida
por la gobernabilidad de los proyectos que siguen un ALM ágil
Referencia: “The IBM Rational Jazz Strategy for Collaborative Application Lifecycle
Management”, Liz Barnett, EZ Insight, Inc. July 2009 pg.60
http://jazz.net/projects/rational-team-concert
– Otros beneficios:
• Reducción del tiempo de entrega de productos
• Involucrar a los clientes en el mismo ambiente logrando
retroalimetnación más temprana
• Reducción de los costos de desarrollo
• Mejora la calidad del software porque los nuevos proyectos
aprovechan código hecho por otros proyectos, el cual está
disponible en el mismo ambiente
pg.61
Referencias adicionales
• Metodologías ágiles:
– http://www.extremeprogramming.org
– http://www.xprogramming.com
– Craig Larman, "Agile and Iterative Development: A Manager's Guide".
Addison Wesley, 2004.
pg.62
• Trabajos en la U. Javeriana:
– "ConstruColectiva: Guía metodológica para la gestión de proyectos de
software basados en metodologías ágiles, utilizando ambientes de
desarrollo colaborativo. Caso de estudio: GForge". John Diaz, Juan Felipe
Olaya. Memoria del trabajo de grado en Ingeniería de Sistemas,
Universidad Javeriana, 2010.
pg.63