La Ingeniería de Software en la actualidad plantea muchos paralelismos con la Ingeniería Automovílística de competición.
En el momento en que una escudería se plantea la creación de un nuevo modelo se abre una fase de investigación y diseño: cuáles serán las nuevas prestaciones y características, diseños, componentes, proveedores, costes, alianzas estratégicas, sponsors, etc.
Una vez el proyecto está en marcha se producen muchos prototipajespruebas en túneles de viento, etc.
Algunas de las decisiones críticas en esta fase es determinar en que momento se cierra el diseño y en que grado soportará actualizaciones y desarrollos a lo largo de la temporada.
Después de un proceso tan complejo llega el momento de las pruebas reales y la entrada en competición.
A partir de aquí el uso de la telemetría y todos los indicadores objetivos de los que se pueda disponer es crucial para un control efectivo de la evolución del producto.
En el caso de productos de software si recolectamos los indicadores de Release Management de la metodología ITIL podemos obtener información muy útil para hacer un seguimiento de la calidad del proceso y del producto.
Relativas a plataforma, software base y gestión de la configuración:
  • % de instalaciones con éxito
  • % de actualizaciones de software con éxito
Disponibilidad / Fiabilidad
  • Promedio de tiempo entre entregas urgentes
  • Costes y eficiencia
  • Coste promedio por entrega
  • Coste promedio de despliegue
Calidad de la entrega
  • % de entregas con éxito
  • % de entregas que han causado incidentes
  • % de entregas que se han tenido que cancelar y restaurar a la versión anterior
Calidad de los métodos de prueba
  • Número de defectos detectados en producción
  • Número de entregas no testadas
  • Número de entregas urgentes
  • Número de incidencias originadas por la instalación de una nueva versión
  • % errores detectados en entregas urgentes testadas vs entregas urgentes no testadas
Interpretando los indicadores:
Dado que los indicadores se van alimentando con cada entrega nos puede dar una visión dinámica de la evolución del sistema.
El aumento o decremento de un indicador en concreto puede ser predecible según la fase del proyecto.
En general es normal que en las primeras instalaciones hayan más problemas de integración y despliegue.
Un aumento de problemas en un momento concreto del ciclo de vida del sistema nos indica que es probable que haya habido un cambio en el software base, gestión de la configuración/políticas o se hayan desplegado componentes nuevos.
Cuando el indicador es creciente nos revela que no tenemos control sobre la plataforma o configuración. Es recomendable revisar si esto se está gestionando y se están documentando los cambios.
Superando los problemas iniciales de integración, los indicadores de Disponibilidad/Fiabilidad, Calidad de la Entrega y Calidad de los métodos de prueba nos ayudan a detectar si el sistema se está degradando.
Si los costes por entrega van en aumento es posible que empecemos a tener problemas de mantenibilidad. Cada modificación cuesta más, se tarda más, es difícil de probar, surgen más errores y las entregas se retrasan.
Aquí estamos en un punto muy peligroso si no se interviene de forma efectiva:
Cuanto más se retrasan las entregas más presión existe con lo cual se incrementa el número de peticiones de actualización urgente.
Si no existe un procedimiento test y conciliación a posteriori de los cambios introducidos en el sistema de una manera poco controlada se incrementa el nivel de desinformación / desactualización que provoca más fallos o que los sistemas de test sean cada vez más ineficaces al no estar actualizados.
Una vez detectados los parámetros en los que nuestro proceso se mantiene estable (por ejemplo, cada entrega necesitamos un mes, una actualización urgente nos supone la pérdida de una semana de trabajo, cada despliegue son dos días, etc), tenemos dimensionada nuestra capacidad de producción.
Si se determina que el proceso de desarrollo no tiene la eficiencia esperada hay que revisar el ALM (Application Lifetime Management) para detectar dónde están los cuellos de botella: ausencia de herramientas de diagnóstico y pruebas, herramientas/entorno de desarrollo precario, problemas de falta de información sobre los requerimientos / incidencias reportados, mal funcionamiento de componentes o productos de terceros, necesidad de capacitación del equipo de desarrollo, etc.
A partir de aquí en función de la información obtenida hay que realizar un plan de acción para reforzar los puntos débiles detectados.
Dependiendo del tipo de acciones necesarias esto no podrá realizarse siguiendo el ciclo de vida ordinario del proyecto ya que, por ejemplo, un cambio de tecnología o la refactorización de procesos clave pueden requerir undesarrollo en paralelo con los sobrecostes de la integración futura.
Otro punto clave llegados a este caso es decidir si seguir evolucionando el modelo de este año.. o dejar de evolucionar este motor e invertir los recursos en uno nuevo.
Esta es una decisión estratégica ante la cual hay que tener el compromiso de todos los actores implicados ya que se tiene que tener claro que al menos en dos años no se puede optar al podium