ALM en el mundo de usuario y servicios: Mucho más que desarrollo

Publicado en

Definir la administración del Ciclo de Vida de una Aplicación (Application Lifecycle Management o ALM) no es fácil: diferentes personas, diferentes empresas y proveedores de servicios tienen diferentes perspectivas sobre el tema y la información pública al respecto tiende a ser confusa. Sin embargo, ALM es un proceso importante en la producción de aplicaciones por lo que vale la pena entender los conceptos que engloba y cómo nos beneficia.

Un error común es hacer la equivalencia de ALM con el proceso de Ciclo de Vida de Desarrollo de Software (Software Development Lifecycle o SDLC) ya que esta comparación es muy limitada. ALM es mucho más que únicamente SDLC. Para que nuestra visión de ALM sea tanto justa como útil debemos tener una perspectiva más amplia para definir lo que es la “vida de la aplicación”, algo que debería incluir todo el tiempo en el que una empresa invierte dinero en un producto de software, desde la idea inicial hasta el último momento en la vida de una aplicación.

Los tres aspectos de ALM

La Administración del Ciclo de Vida de una Aplicación se divide en tres áreas: Gobernanza, Desarrollo y Operaciones. De la misma manera que en el desarrollo de algo vivo, un proyecto de software está marcado por eventos significativos. Empezamos con una idea: ¿por qué no hacemos algo que resuelva esto o aquello? Una vez que la aplicación es creada –o al menos un primer acercamiento- el siguiente gran evento es la entrega (deployment) cuando la aplicación sale a producción y finalmente, cuando la aplicación ya no tiene valor comercial esta se quita de servicio y llega al final de su vida.

Podemos hablar rápidamente de los tres pilares horizontales que componen ALM durante el ciclo de vida de un producto de software:

  • El primer paso de la gobernanza es el desarrollo de los casos de negocio. Este análisis por lo general pasa antes de que el proceso de desarrollo comience y una vez que el caso de negocio es aprobado es cuando el desarrollo comienza y la gobernanza es implementada durante la ejecución del proyecto.
  • El proceso de desarrollo –o SDLC- es una parte del proceso de ALM y es normalmente representado como una serie de interacciones entre el equipo que escribe código de la aplicación y otras personas que proveen servicios de revisión, testeo, aseguramiento de la calidad y varios más. Los acercamientos a cómo se desarrolla el software varían según el caso y los recursos con los que se cuenten.
  • Al igual que con la gobernanza, el proceso de operaciones está íntimamente ligado a la línea de desarrollo. Por ejemplo, la planeación para implementación comienza poco después de que la aplicación es completada y el acto de liberación en sí mismo es una parte fundamental de las operaciones. Una vez que la aplicación es liberada, ésta debe ser monitoreada durante el resto de su ciclo de vida y en cada mejora o corrección se debe repetir el proceso de liberación.

Un mundo de servicios

Si bien los procesos de ALM se ajustan a los ciclos de diseño-creación-liberación de software que requiere administración y reemplazo, los nuevos modelos de desarrollo basados en la red y más aún, el modelo de Software + Servicios que propone el desarrollo no sólo de aplicaciones sino de servicios que viven en la Nube y cuyo ciclo de vida es diferente que lo que conocemos como una ‘aplicación’, un término que se refiere normalmente a un programa construido por varios componentes corriendo en un dispositivo digital como una computadora o un dispositivo móvil, pero que ahora muchos de esos componentes –o servicios- no se encuentran ni en nuestra organización y su desarrollo, aunque en la mayoría de los casos esté bien documentado, se encuentra fuera de nuestro control directo.

En un mundo de servicios ¿cómo administramos la vida de nuestras aplicaciones cuando algunos de sus componentes siguen ciclos de vida diferentes? Tal vez el término correcto debería ser ‘Software Life Management’ o SLM en lugar de ALM, aunque este es sólo un ajuste en la nomenclatura. Como podemos ver, la visión tradicional de ALM deja de funcionar en la medida en que las redes se vuelven omnipresentes y tanto los dispositivos como los servicios se multiplican.

De frente al usuario

Otro concepto normalmente dejado al final, si no es que completamente de lado en la administración del ciclo de vida de una aplicación es lo pertinente a Experiencia de Usuario (User Experience o UX) que abarca cuestiones de diseño de interfaces, usabilidad, accesibilidad, utilidad y otros lineamientos de mercadotecnia que se crean durante el proceso de gobernanza, los cuales tienen un impacto claro y cuantificable sobre los objetivos de negocio en la liberación del producto y que encarecen el proceso de operación al relegarlos a los ciclos de actualización y mantenimiento.

Los conceptos asociados a lograr buenas experiencias de usuario deben ser incluidos como parte vital del ciclo de vida de una aplicación desde su principio hasta su fin: en el proceso de gobernanza se debe poner foco en las necesidades y problemas de los usuarios a quienes va dirigida una aplicación; en el proceso de desarrollo se debe interactuar con usuarios tipos y tener como motor de desarrollo las necesidades de ellos, y finalmente los ciclos de operación deben considerar la retroalimentación de sus usuarios para crear mejores productos de software.

Conclusión

ALM es mucho más que sólo escribir código, ya que los tres aspectos del ciclo de vida de una aplicación –gobernanza, desarrollo y operaciones- son igualmente importantes. Si tenemos un proyecto en el que la gobernanza inicial tiene mal definidos los aspectos de arranque, por ejemplo, tal vez no entendiendo las necesidades de negocio o al no elegir a los patrocinadores correctos para el proyecto. No importa que tan bien el equipo que haga el desarrollo o maneje la operación haga su trabajo, el proyecto simplemente no proveerá ningún valor de negocio y acelerará su tiempo de fin de vida.

De igual manera, un proyecto que tenga los lineamientos y visión adecuada utilizando un proceso de primer nivel para el desarrollo pero que deje de lado los temas de operación, como proveer suficientes recursos para que la aplicación corra de manera confiable terminará en fracaso, ya que el valor de negocio que se pretende proveer no tendrá el tiempo de vida lo suficientemente largo o la confianza de sus usuarios para ser económicamente viable.

Muchas empresas y grupos de desarrollo de software se crean una visión miope de ALM limitada por lo que las herramientas de administración del ciclo de vida pueden o no hacer y esto es un claro error. Una visión más amplia de ALM puede ayudar a las organizaciones que desarrollan tecnología a evitar este tipo de problemas cuyo alcance va más allá de sólo manejar código y pruebas.

La visión y las expectativas de la tecnología también han cambiado y no podemos hablar de manejar ciclos de vida y manejo de versiones como lo hemos visto hasta hoy: la visión del desarrollo orientada a servicios nos obliga a tener una visión más amplia y holística de ALM para mejorar los procesos críticos del negocio y del desarrollo a futuro.

Bio

Mauricio Angulo es programador desde 1989, divulgador, ávido escritor y emprendedor. Actualmente es CEO y fundador de Tesseract Space donde realiza funciones de asesor y consultor en innovación tecnológica, mercadotecnia digital y experiencia de usuario.