En este artículo quiero contarles acerca de mi experiencia desarrollando sistemas expertos. Y en este caso voy a hacer referencia a un proyecto que hicimos hace algunos años en el cual creamos un Equipo de Pruebas Automáticas de Hardware y Software con un Sistema Experto para el mantenimiento del sistema misilístico de un buque de guerra.
Comenzaré por algunos conceptos básicos y luego contaré mi historia al respecto.
¿Qué es un Equipo de Pruebas Automáticas de Hardware y Software?
Un Equipo de Pruebas Automáticas de Hardware y Software es un conjunto de herramientas y procesos utilizados para realizar pruebas automatizadas en hardware y software durante el proceso de desarrollo y pruebas, o para hacer mantenimiento preventivo y correctivo a un producto o sistema.
El equipo de pruebas automatizadas está diseñado para simular el comportamiento de normal de un sistema o usuario al interactuar con el hardware y software, lo que permite identificar errores y problemas en un entorno controlado antes de que el producto sea lanzado al mercado, o al hacer mantenimientos periódicos. Estas pruebas pueden incluir pruebas de unidad, pruebas de integración, pruebas de sistema, pruebas de rendimiento y pruebas de aceptación, o pruebas específicas de mantenimiento según la complejidad del sistema de hardware y software a probar y mantener.
Las pruebas automatizadas de hardware y software permiten una mayor velocidad y precisión en el proceso de pruebas, reducen los errores humanos, mejoran la cobertura de las pruebas y facilitan la repetición de las pruebas para asegurar la calidad del producto. Además, los equipos de pruebas automatizadas pueden generar informes detallados sobre los resultados de las pruebas, lo que permite a los desarrolladores identificar y solucionar los problemas con mayor eficiencia.
¿Qué es un sistema experto?
Un sistema experto es un tipo de software inteligente que utiliza conocimientos específicos de un área en particular para emular la toma de decisiones humanas en situaciones complejas y difíciles. Estos sistemas están diseñados para resolver problemas complejos mediante la aplicación de reglas lógicas y algoritmos para analizar datos y llegar a conclusiones precisas.
Los sistemas expertos se basan en un conjunto de reglas explícitas y conocimientos almacenados en una base de datos. Estas reglas y conocimientos son desarrollados por expertos en el campo de aplicación y se utilizan para representar el razonamiento humano que se utiliza para resolver problemas.
Un sistema experto puede ser utilizado en una variedad de campos, como la medicina, la ingeniería, las finanzas, la industria manufacturera, entre otros, donde se requiere una toma de decisiones rápida y precisa basada en conocimientos específicos.
¿Qué ejemplo se puede dar acerca de este tipo de herramientas?
Como decía al inicio, quiero contarles acerca de mi experiencia desarrollando sistemas expertos. Y en este caso voy a hacer referencia al desarrollo de un Equipo de Pruebas Automáticas de Hardware y Software con un Sistema Experto para el mantenimiento del sistema misilístico de un buque de guerra.
Aclaratoria: Esto no es ciencia ficción … es una historia de la vida real.
No haré referencia específica a la nación en la cual desarrollamos este proyecto ni la marca específica de misiles, por razones obvias.
Básicamente, la armada de una nación latinoamericana requería tener mayor control sobre el mantenimiento de sus sistemas de armas en buques militares.
En este caso, toda esta tecnología venía de un país europeo, y la idea era que la marina de la nación latinoamericana pudiera ser autosuficiente en los procesos de mantenimiento.
Para ello contrató en la empresa donde yo laboraba, el desarrollo de un conjunto de equipos e interfaces electrónicas que le permitiesen hacer estás labores de mantenimiento.
Ese proyecto incluía crear un equipamiento de pruebas automáticas del software y hardware para el mantenimiento del sistema misilístico.
Esto implicaba desarrollar un sistema experto que guiaría al personal técnico de los buques en estos procesos, y que además pudiera ejecutar labores automáticas de mantenimiento.
El centro de control de todo el sistema misilístico de un buque de guerra está basado en un computador de especificaciones militares, con su tarjeta de CPU, memoria, teclado, entre otros elementos, así como integrando tarjetas de entradas y salidas de sensores y controles electrónicos, a las cuales se conectan interfaces de todo tipo de equipos en el barco, desde el anemómetro que mide la velocidad del viento, los sistemas de radares, el girocompás que mide el posicionamiento del buque respecto a su azimut, bandeo y cabeceo, y muchos otros sistemas de armas que forman parte del buque, así como la red de sensores y sistemas de medición, que son utilizados por el sistema de lanzamiento y guía de los misiles, para poder controlarlos y llevarlos a su destino final.
Para esto, hubo que desarrollar una tarjeta de interfaz electrónica basada en microprocesador, que nos permitía hackear el computador del sistema misilístico del barco, sobre la cual descargábamos aplicaciones o subrutinas hechas en lenguaje de máquina para dicho computador militar, de tal forma que ejecutara labores de mantenimiento automáticas, haciendo verificaciones de las entradas y salidas de sus puertos, desde los diferentes equipos conectados a este computador, con la finalidad de ver si, por ejemplo, las calibraciones de esos equipos o las conexiones en toda esta arquitectura de equipos militares, estaba funcionando correctamente.
Además de esta tarjeta electrónica que insertamos en un puerto paralelo del computador del sistema misilístico, tuvimos que desarrollar una interfaz visual que se ubicó en un computador de escritorio dentro del Centro de Información y Control del buque, conocido como CIC, que básicamente es el centro donde se manejan todos los equipos de armas, como por ejemplo, los radares, el sistema de lanzamiento de misiles, demás dispositivos electrónicos, y todo lo que tiene que ver con la gestión electrónica de guerra.
El software que desarrollamos para el computador de escritorio, ubicado en el CIC, se debía interconectar con el computador del sistema misilístico a través de la interfaz electrónica desarrollada para hacer este sistema experto de mantenimiento, esto implicó que había que conectar ambos computadores a través de un cable, y desarrollar un protocolo de comunicación serial con especificaciones militares, para poder hacer el intercambio de información.
Las rutinas programadas en lenguaje de máquina para el computador del sistema misilístico, estaban ubicadas en archivos dentro del disco duro del computador del sistema experto, y se descargaban hacia la interfaz electrónica en el computador del sistema misilístico, en la medida en que eran necesarias para el mantenimiento automático, y así poder ejecutarlas según el proceso seguido dentro del sistema experto.
Para desarrollar el sistema experto se crearon centenares de rutinas de mantenimiento relacionadas con decenas de equipos electrónicos, como los citados anteriormente en este artículo, que guiaban al personal técnico en el paso a paso de los procesos.
Dentro de los pasos a seguir estaban instrucciones para la preparación de los materiales, herramientas y personal que participarían en cada prueba, indicando adónde debían estar posicionados en el buque y cuándo hacer medidas con equipos como voltímetros o pinzas amperimétricas.
Una vez que se daban las instrucciones iniciales al personal técnico del barco y ellos cumplían con esos pasos, daban un clic en el botón continuar y se las iba llevando de la mano en el proceso, hasta que entraban en juego todas las labores automáticas para el mantenimiento, descargando las rutinas de programación hacia el computador del sistema misilístico, para luego ejecutar un comando de suspensión de la ejecución normal de su software (halt) y realizar un salto al inicio de la rutina descargada para su respectiva ejecución.
Las rutinas de programación para el mantenimiento enviaban ciertos valores a las tarjetas de salida y esperaban ciertos valores de patrones o firmas desde las tarjetas de entrada, como por ejemplo una medición analógica o una medición digital que debería reflejar un valor determinado, y así verificar que el equipamiento conectado funcionaba adecuadamente.
Si las medidas estaban correctas en las diferentes rutinas, se informaba esto a través del computador del sistema experto a los operadores de mantenimiento, de lo contrario se indicaban las recomendaciones de mantenimiento para que los técnicos procedieran a realizar los reemplazos de piezas o los ajustes necesarios para que todo esto funcionará perfectamente.
El sistema experto constaba de gran cantidad de rutinas para gran cantidad de procedimientos de mantenimiento, que involucraban a su vez prácticamente a todos los equipos digitales e inclusive analógicos del barco.
En el caso de los equipos analógicos, que no podían conectarse digitalmente con el computador del sistema misilístico, básicamente participaba la intervención humana para poder hacer las mediciones analógicas correspondientes, e introducir en el sistema experto los valores medidos.
Este sistema experto se programó combinando un lenguaje de programación de alto nivel y un lenguaje de bajo nivel (lenguaje de máquina), para poder hacer el intercambio de información a través de los puertos de comunicación en el protocolo de comunicación militar. A su vez, la tarjeta interfaz insertada en el computador del sistema misilístico se basó en un diseño con un microprocesador, por lo que también se desarrolló su software en lenguaje de máquina (Assembler). A su vez, las rutinas de mantenimiento que se descargaban a la interfaz y luego se cargaban en la memoria RAM para ser ejecutadas en el computador del sistema misilístico, también se crearon en lenguaje de máquina.
Este equipamiento para el mantenimiento automático del hardware y software del sistema misilístico con un sistema experto, permitía entonces crear independencia de parte de la armada de esta nación, con respecto al país que le suministro los buques y equipos electrónicos, ya que los contratos de mantenimiento con el fabricante por un tiempo estaban dentro de la garantía, pero luego había que pagarlos con costos excesivamente altos y con una alta dependencia de dicho fabricante.
Por otro lado, una vez implantado este sistema experto, atrajo la atención del fabricante del sistema misilístico, lo que nos permitió demostrar su funcionamiento dentro de la fábrica de armas en Europa, y de hecho el proyecto fue comprado por el fabricante de armas para continuarlo como parte de sus sistemas internos.
Finalmente, con esta anécdota les he expuesto un ejemplo de la aplicación de la Inteligencia artificial y los sistemas expertos, demostrando además que es posible hacer hacking, no solo por software, sino también por hardware, en este caso aplicado a una nación que decidió adquirir hardware y software para hackear sus propios sistemas, y poder hacer mantenimiento en forma más eficiente e inteligente, vaciando sobre sobre estos sistemas de Inteligencia artificial el conocimiento de los expertos.