ALM - Beneficios más allá de la construcción de aplicaciones
El tema Gestión del ciclo de vida de las aplicaciones (ALM) está sonando cada vez más fuerte en las organizaciones de TI. Un punto de vista acerca de una metodología, que acompañada de una herramienta eficiente, nos ayudará a evolucionar del caos a un nivel de valor.
Panorama
Actualmente las organizaciones son dependientes de las aplicaciones informáticas que brindan soporte a los procesos de negocio y proveen la información necesaria para la toma de decisiones ejecutivas, por lo que las áreas de negocio reconocen la necesidad de contar con TI como proveedor de los servicios necesarios para cubrir sus expectativas: el crecimiento del negocio, la incorporación de cambios y el retorno de la inversión.
Esta necesidad se transmite en los requerimientos de negocio hacia TI, con incremento en las demandas de nuevos desarrollos o de cambios en funcionalidades existentes. En un mercado donde las necesidades surgen día a día y donde la única constante es el cambio permanente, la generación de modelos eficaces, la entrega en tiempo, la adaptación al cambio y la justificación de costos son condiciones a cumplir y requieren que las organizaciones de TI lleven sus prácticas y métodos a un modelo de valor.
Una aplicación eficiente es la piedra fundacional para la construcción de cualquier negocio. Para conseguir esta eficiencia es necesario tener el control de cada una de las partes que componen el software desde el inicio y más allá de la implementación, utilizando métodos y herramientas que asistan al avance de la gestión, la identificación y solución de errores, la evaluación de impacto por incorporación de cambios y la notificación a cada una de las áreas e individuos involucrados.
Las necesidades de TI
Toda organización de TI reconoce que el panorama tecnológico experimenta un cambio y crecimiento constantes. La apertura de nuevos mercados, la necesidad de acelerar el lanzamiento de productos y consolidar las relaciones con clientes, son algunos de los desafíos a resolver sin perder calidad en el software y justificando el retorno de la inversión tecnológica.
Por lo general, la inversión en planeamiento y esfuerzo alcanza a la implementación inicial de una aplicación y no contempla el posterior seguimiento, soporte o petición de cambios. En estas instancias es común ver a los equipos de desarrollo trabajando de modo reactivo en la rápida solución de requerimientos o errores, con poca comunicación y sin una herramienta de control adecuada. Por lo general estas acciones, pobremente documentadas y comunicadas son disparadoras de otros impactos o conflictos.
Esta falencia en la gestión de la aplicación y en muchos casos la orientación hacia “mayores esfuerzos” en lugar de hacia mejores prácticas, genera día tras día una pérdida de consistencia en la aplicación y en la comunicación - comprensión de los grupos e individuos relacionados, finalizando en la decepción y desconfianza en las áreas usuarias. De hecho, el soporte y mantenimiento de las aplicaciones puede llegar a consumir el 70% del presupuesto total del ciclo de vida; los resultados adversos y la dilación de tiempos generarán desconfianza en el usuario y el cuestionamiento directo de los costos.
Si bien las metodologías y herramientas orientadas al desarrollo permiten generar código de alta calidad y acorde a las tendencias, también se hace necesario poseer la visión global de la aplicación en cada una de sus partes y durante todo su ciclo de vida. Establecer controles y niveles de calidad en la correcta planificación de recursos, en la eficiente instrumentación de los desarrollos, en la respuesta a pedidos de cambio y el manejo de incidencias le permitirá a las áreas de TI proveer aplicaciones de calidad alineadas con los acuerdos de servicio, brindando un modelo de valor que supere las expectativas de negocio.
La Gestión del ciclo de vida de la aplicación
Application lifecycle management (ALM) define al proceso de la entrega de software como un ciclo continuo y repetible de pasos interrelacionados: definición, diseño, desarrollo, prueba, implantación y mantenimiento.
Una solución ALM debe poder administrar cada uno de estos aspectos. Permitir la comunicación entre los actores involucrados en el proceso de construcción o cambio independientemente de su localización física, proveer características que permitan la integración de los actores en un escenario distribuido geográficamente, contemplar la integración de diferentes procesos de desarrollo de software, requerimientos de gestión de cambios, cuestiones de seguridad y de regulaciones, ya sea por normativas gubernamentales, de la propia industria y de los requerimientos de negocio.
En lugar de poseer equipos o subgrupos aislados del proceso de desarrollo trabajando con prácticas diferentes e información dispersa, una solución ALM provee un repositorio centralizado con vista de las actividades, comunicaciones, work items, métricas, documentación y toda característica relacionada a la aplicación. Los usuarios de la solución pueden visualizar la actividad por desarrollador, subgrupo o equipo, de forma transparente a la localización, plataforma o ambiente de trabajo.
Perfeccionado el ciclo de vida
En la medida de obtener éxito en la incorporación de nuevos procesos, se deben considerar dos aspectos: cambios más ágiles y evitar las fallas en los cambios. Si no se posee conocimiento de la totalidad del ciclo de vida de las piezas que componen el cambio, es probable que cualquier revisión no solamente impedirá la rápida implantación del cambio, sino que no se contará con las garantías para evitar las fallas que un cambio pobremente controlado pudiese generar. Una solución ALM permitirá identificar los factores críticos, las cuestiones de integración, la actividad y avance de las tareas minimizando el riesgo de implementar cambios que produzcan impactos no deseados.
Ya sea que un equipo trabaje con métodos Agile o CMM, se ha comprobado que la construcción en base a paradigmas de valor provee agilidad al proceso. Un desarrollo de avance iterativo resulta más productivo en tiempos y costos que la visión en cascada, al adecuarse de forma eficiente a los procesos de creación, seguimiento, control, reingeniería u otro cambio cuando se gestiona su ciclo de vida a través de una herramienta eficaz.
Conclusiones
Para garantizar el éxito de la asociación Negocio-Tecnología es imprescindible la adopción de métodos que permitan informar eficientemente las estimaciones para construcción, cambios y puestas en producción. Para cubrir estos aspectos es necesario conocer el estado interno de los desarrollos en progreso, de los requerimientos pendientes y de los recursos disponibles.
La Administración del ciclo de vida de las aplicaciones permite manejar estos temas y los principales vendors (que reconocen la importancia y potencial de ALM) han invertido en investigación, adquisiciones y desarrollo de herramientas y suites para asistir y facilitar la tarea de llevar a cabo una solución ALM.
Una solución eficiente de administración debe:
-
Proveer una vista global para el control y manejo de actividades entre equipos distribuidos.
-
Conocer el estado actual, informar avances, anticiparse a posibles desviaciones y solucionarlas.
-
Mejorar la calidad al formalizar la concentración de los requerimientos y asegurar que la aplicación final cubra (o supere) las expectativas de los usuarios.
-
Automatizar los procesos de cambio, pruebas y deployment.
-
Sincronizar las faces de avance de un desarrollo o mejora, cubriendo los requerimientos de pruebas internas, externas, legales y de QA.
-
Cumplir y alinearse y validar lo establecido en los SLAs.
-
Determinación de buenas prácticas y unificación de métodos de desarrollo.
-
Reducción de tiempos de mantenimiento y redundancia de pruebas.
-
Potenciación de los recursos, haciendo que los equipos encargados del desarrollo se focalicen en los requerimientos de negocio y no en cuestiones de infraestructura.
-
Incrementar la capacidad de integración a nuevos requerimientos de negocio.
Referencias
Hay mucho y muy buen material para profundizar en el tema. Entre lo que estuve viendo me gustaría recomendar los siguientes links y libros:
Driving Your Business Forward with Application Lifecycle Management (ALM)
http://www.microsoft.com/downloads/details.aspx?FamilyID=8583de5e-d504-4065-a13c-09a2675a9bfb&DisplayLang=en
Software Engineering with Microsoft Visual Studio Team System
Sam Guckenheimer y Juan J. Perez – Addison Wesley
ITIL - Organizing for excellence
Malcom Fry - BMC
Application Life-cycle Management (ALM) for Software Teams
http://msdn2.microsoft.com/en-us/teamsystem/bb400737.aspx
Microsoft adquiere devBiz
http://www.virtual-generations.com/2007/03/26/microsofts-acquisition-of-devbiz-promises-improved-application-lifecycle-management-for-development-organizations
The Changing Face of Application Lifecycle Management - Serena Software
http://i.i.com.com/cnwk.1d/html/itp/Serena_Life_Cycle_Management.pdf
German