Un sistema o una aplicación no está limitado solamente a uno o más programas usados por los clientes. Un programa nace, vive y muere; es por ello que nos referimos al “ciclo de vida” de un programa (software). El ciclo de vida de una aplicación se compone de todas las etapas que enfatizan su curso: desde la idea inicial hasta que los usuarios dejan de usarlo, y desde la concepción y la implementación de su actualización. La Gestión del ciclo de vida de las aplicaciones (o también llamado ALM, del inglés Application Lifecycle Management) es el proceso que permite gestionar el ciclo de vida de un programa. 

El ciclo de vida de un Sistema  (Programa)

El ciclo de vida de un programa o una aplicación se compone de varias etapas, desde su origen hasta su desaparición.

Crear una aplicación es algo muy complejo o, mejor dicho, una sucesión de operaciones más o menos complejas. Estas operaciones necesitan realizarse en un orden preciso y generalmente son muy dependientes una de la otra.

Desglosar el ciclo de vida de un programa en etapas “unitarias” permite establecer los hitos y los procesos de verificación y validación relacionados con los mismos. Esta es una buena manera de asegurar la calidad del trabajo producido. También permite asegurarse de que los plazos y los costos de implementación están bajo control y que no corren el riesgo de desviaciones. Cuanto más se demore la localización de una falla o anomalía, mayor será el costo para hacer que la aplicación sea compatible.

Ciclo de vida de la aplicación en el proyecto Agile

Con los métodos Agile, el ciclo de desarrollo del programa es iterativo. La implementación del proyecto se desglosa en iteraciones (llamadas sprints en el caso del método agile scrum) siguiendo las siguientes etapas:

  • Evaluación de necesidades: Recopilación y comunicación con el cliente sobre las necesidades y limitaciones, redacción de un documento de resumen.
  • Diseño o especificación general:  Estructura y descripción global de las funcionalidades del programa.
  • Diseño o especificación detallada:  Definición detallada de las funcionalidades creadas por grupos, o subgrupos, del programa que recogerá las funcionalidades asociadas o vinculadas.
  • Diseño o especificación técnica:  Habiéndose identificado las funcionalidades, se debe averiguar cómo se implementará de forma eficiente.
  • Implementación: Esta es la fase de desarrollo. Los programadores traducirán al código las funcionalidades descritas en las etapas anteriores.
  • Pruebas unitarias: Las pruebas unitarias se usan para verificar unitariamente que cada unidad de código, al ejecutarse, de acuerdo a las especificaciones. Idealmente, el desarrollo está encabezado por las pruebas (Desarrollo guiado por pruebas de software o Test-Driven Development (TDD)) y, en consecuencia, los programadores escriben las pruebas durante la fase de implementación.
  • Integración: Todos los elementos desarrollados se recolectan para evaluar la correcta interacción y el buen funcionamiento de los mismos en conjunto.  Estos controles se realizan mediante pruebas de integración. Se pueden llevar a cabo con el equipo de proyecto y el cliente.
  • Calificación: El cliente evalúa la adecuación de la aplicación desarrollada con las especificaciones definidas.

Cada iteración, abarca un número limitado de funcionalidades. Cada funcionalidad seleccionada pasa por las distintas etapas, es totalmente desarrollada y se entrega al cliente al final del sprint para su aprobación. La ventaja principal del modelo Agile Scrum es que se adapta fácilmente a los cambios. Cada periodo de tiempo pactado,  el cliente recibe funcionalidades completamente operacionales que puede probar y validar. De esta manera, es posible modificar una funcionalidad si nos damos cuenta de que no encaja totalmente con la necesidad actual, o modificar la estructura de la aplicación para resolver un atasco técnico.

La gestión de ciclo de vida de las aplicaciones

Frente a la creciente complejidad de los proyectos de desarrollo de aplicaciones, ha sido necesario formalizar la forma de gestión del ciclo de vida de un proyecto. Así es como nació la Gestión del ciclo de vida de las aplicaciones (o ALM, del inglés Application Lifecycle Management).

El objetivo del ALM es gestionar el ciclo de vida del programa, desde su idea inicial hasta su producción y fase de mantenimiento, pasando por su diseño, implementación y validación.

Todos los colaboradores deben participar en el ciclo de vida de la aplicación. El ALM brinda herramientas para los equipos técnicos, especialistas funcionales y comerciales, quienes pueden ejecutar pruebas, sugerir mejoras…, los usuarios quienes identificarán las anomalías,  y los equipos de mercadotecnia y comerciales quienes podrán realizar sugerencias de mejora de acuerdo a las necesidades del mercado y programas de la competencia.

Por lo tanto, el ALM será utilizado tanto para la evaluación de necesidades, la gestión del proyecto, el ciclo de desarrollo del programa, soporte o mesa de ayuda (HelpDesk), control de calidad.

La gestión del ciclo de vida de las aplicaciones es vital para el éxito de un proyecto de desarrollo de programa. Asegura un seguimiento pleno, un proceso de calidad eficiente y una mejor interacción entre todos los colaboradores.

Herramientas ALM

Al igual que DevOps, Application Lifecycle Management está habilitado por herramientas que integran personas y procesos. Hay varias características clave para buscar en las herramientas de ALM:

  1. Gestión de requerimientos
  2. Estimación y planificación.
  3. Gestión del código fuente
  4. Pruebas y aseguramiento de calidad.
  5. Implementación o DevOps
  6. Mantenimiento y soporte
  7. Control de versiones
  8. Gestión de cartera de aplicaciones.
  9. Planificación en tiempo real y comunicación en equipo.

Los equipos tienen numerosas opciones cuando se trata de herramientas ALM. Puede optar por utilizar múltiples herramientas que se apoyan entre sí, o una única herramienta integrada verticalmente para todas sus necesidades.