22 Jul Desarrollo ágil y sistemas de control
El desarrollo de sistemas de control y supervisión ha evolucionado en los últimos veinte años adaptando las tendencias, paradigmas y metodologías del entorno de las Tecnologías de la Información. En el ámbito industrial, la adopción de nuevas tendencias siempre ha ido un paso por detrás respecto a los sistemas de TI tradicionales debido, en gran medida, a que únicamente se asimilan cuando disponen del grado de madurez que garantiza el correcto funcionamiento.
Los primeros sistemas SCADA eran sistemas propietarios, con pocas interfaces externas, lenguajes de programación o scripting propios, con funcionalidades reducidas y entornos gráficos limitados o inexistentes. El éxito de este tipo de sistemas les ha llevado a cubrir grandes proyectos y mayores funciones obligando a que se adoptaran estándares que facilitaran el desarrollo (protocolos de comunicación, lenguajes de programación, etc.), la evolución hacia sistemas distribuidos con gestión centralizada, la integración con sistemas externos o la asimilación de los principios de la programación orientada a objetos con el fin de reutilizar y homogeneizar los desarrollos o las capacidades gráficas avanzadas como el zooming, panning and decluttering. Hoy, las tendencias apuntan a sistemas en la nube, sistemas móviles, distribuidos, big data, business intelligence y entornos virtualizados.
Sin embargo, la gestión de los proyectos o más exactamente su ciclo de vida no ha variado de forma significativa. El modelo predictivo o ciclo de vida en cascada ha sido el modelo de desarrollo por excelencia. Según este modelo, al inicio del proyecto (o incluso en fase de oferta) se establece un planning donde se determinan todas las tareas a ejecutar y la fecha de entrega (estableciendo un día concreto), se capturan los requisitos, se llevan a cabo las fases de análisis, diseño, implementación, pruebas y puesta en marcha, cada uno con sus entregables, y finalmente se entrega el proyecto correctamente implementado en la fecha prevista. Todo aquel que ha participado en el desarrollo de un sistema de control y supervisión sabe que esta situación ideal no se produce nunca, porque no hay suficiente información al inicio del proyecto, que se va descubriendo a medida que avanza, porque hay cambios en el alcance de los trabajos, porque existen dependencias con terceros que condicionan nuestro avance, etc.
En los últimos tiempos han ido tomando fuerza las metodologías ágiles, que en realidad tienen su origen a mediados de los años cincuenta, y que pueden dar respuesta a los principales retos que presenta el desarrollo de un sistema de control y supervisión.
Las metodologías ágiles abordan los proyectos mediante un ciclo de vida iterativo e incremental con equipos de desarrollo colaborativos, multidisciplinares y autoorganizados, de no más de 5 a 7 miembros y con una estrecha relación con el cliente durante todo el proceso del proyecto.
De forma muy resumida, los proyectos ágiles establecen iteraciones por periodos de tiempo de corta duración, donde al inicio se determinan una serie de funcionalidades objetivo a implementar que al final de la iteración se concretan en un entregable que se puede poder en producción (Iterativo). El proceso se repite de modo que para en cada nueva iteración se incluyen nuevas funcionalidades y se realizan correcciones, modificaciones o mejoras sobre el desarrollo existente (Incremental).
En cada iteración el cliente dispone de un entregable operativo, que se analiza conjuntamente, se determinan cambios o mejoras y las nuevas funcionalidades a implementar en próximas iteraciones lo que permite que el producto resultante evolucione y se adapte a sus necesidades reales.
Otro elemento importante para el éxito de esta metodología, quizás el más importante, reside en el equipo de trabajo, su estructura y organización, así como la relación con el cliente. No es adecuada la estructura jerárquica clásica de un jefe de proyecto con un conjunto de analistas y programadores especialistas en alguno de los aspectos de proyecto (interfaz gráfica, BD, comunicaciones, etc.) y que básicamente se relaciona con el cliente en la entrega del proyecto. En este caso el equipo debe ser multidisciplinar, todos los miembros deben poder cubrir cualquier aspecto del proyecto, no existe la figura de director de proyecto como tal y el trabajo en equipo debe ser colaborativo, participativo y autogestionado. Por último, la relación con el cliente debe ser continua y a lo largo de todo el proyecto.
La aplicación de metodologías ágiles no es simple. Existen numerosas metodologías ágiles como SCRUM, FDD, XP, etc. cada una de ellas con sus particularidades, pero una buena adopción de una metodología ágil pasa por adaptarla a la realidad y tipología de los proyectos a cubrir, aunque ello suponga una aplicación parcial de los principios de la metodología.
Los sistemas de control y supervisión presentan algunas particularidades que pueden condicionar la aplicación de las metodologías ágiles, como el hecho de que se trate de sistemas críticos para los que es complejo realizar actualizaciones, o por tratarse de sistemas muy distribuidos con numerosas interfaces con sistemas externos, etc. Sin embargo, los nuevos sistemas SCADA disponen de herramientas y funcionalidades que permiten la gestión centralizada de sistemas distribuidos y el desplegado de aplicativos en caliente, que permiten salvar estos problemas.
En cualquier caso, la aplicación de metodologías ágiles presenta las siguientes ventajas:
- Permite avanzar el desarrollo del proyecto con niveles de definición escasos. En cada iteración se dispone de mayor detalle.
- Se ponen en producción prototipos operables en un corto plazo de tiempo. Esto permite que el cliente opere con la herramienta desde el primer momento, que la adapte a sus necesidades o incluso que solicite mejoras o ampliaciones.
- Adaptación rápida a las peticiones de cambio.
- Se reducen los conflictos y malentendidos en el alcance del proyecto.
- Se genera un producto que cumple con las expectativas del cliente.