Introducción a los Sistemas Críticos
Los fallos de funcionamiento del software son relativamente
comunes. En la mayoría de los casos,
estos fallos provocan molestias, pero no daños graves ni a largo plazo. Sin embargo, en algunos sistemas un fallo de
funcionamiento puede ocasionar pérdidas económicas significativas, daño físico
o amenazas a la vida humana. Estos sistemas se conocen como sistemas críticos. Los sistemas críticos
son sistemas técnicos o socio-técnicos
de los cuales dependen las personas o los negocios. Si estos sistemas no
ofrecen sus servicios de la forma
esperada, pueden provocar graves problemas
y pérdidas importantes.
Hay tres tipos principales de sistemas críticos:
- Sistemas de seguridad críticos: Son sistemas cuyo fallo de funcionamiento puede provocar perjuicio, pérdida de vidas o daños graves al medio ambiente. Un ejemplo de un sistema de seguridad crítico es un sistema de control para una planta de fabricación de productos químicos.
- Sistemas de misión críticos: Son sistemas cuyo fallo de funcionamiento puede provocar errores en algunas actividades dirigidas por objetivos. Un ejemplo de un sistema de misión crítico es un sistema de navegación para una nave espacial.
- Sistemas de negocio críticos: Son sistemas cuyo fallo de funcionamiento puede provocar costes muy elevados para el negocio que utiliza un sistema de este tipo. Un ejemplo de un sistema de negocio crítico es un sistema de cuentas bancarias.
La propiedad más importante de un sistema crítico es su confiabilidad.
El término confiabilidad fue propuesto por Laprie (Laprie,
1995) para hacer referencia a las siguientes propiedades relacionadas de
los sistemas: disponibilidad, fiabilidad, seguridad y protección. Estas
propiedades están enlazadas fuertemente; por lo tanto, tener un único
término para referirse a todas
ellas tiene sentido.(Confiabilidad).
Existen varias razones
por las que la confiabilidad es la propiedad más importante de los
sistemas críticos:
Los sistemas que son no fiables, inseguros o desprotegidos
son rechazados a menudo por sus usuarios. Si los usuarios no confían en un sistema, se negarán a utilizarlo. Es más ,
también rehusarán comprar o utilizar
productos de la misma compañía que
produjo el sistema
no confiable, puesto que creen
que éstos tampoco son confiables.
Los costes de los fallos de funcionamiento del sistema pueden
ser enormes. En algunas aplicaciones, como un sistema de control de reactores o un sistema de navegación
aérea, el coste de un fallo en el
sistema es mayor en varios órdenes
de magnitud que el coste de dicho
sistema de control.
Los sistemas no confiables pueden provocar pérdida de
información. Es muy cara la captura y
mantenimiento de los datos; algunas veces cuesta
más que el sistema informático que los procesa. Se tiene que hacer un gran esfuerzo e
invertir mucho dinero para duplicar los datos importantes a fin de protegerlos de
cualquier corrupción.
El elevado coste de
un fallo de funcionamiento en los sistemas críticos implica
que se deben usar métodos y técnicas confiables en su desarrollo. Como
consecuencia, los sistemas críticos generalmente se desarrollan utilizando
técnicas muy probadas en lugar de
técnicas novedosas que no han sido
objeto de una extensa experiencia práctica. En vez de utilizar métodos y
técnicas novedosas, los desarrolladores
de sistemas críticos son conservadores
por naturaleza. Prefieren utilizar técnicas
antiguas cuyas ventajas e inconvenientes son muy conocidos, en lugar
de nuevas técnicas que aparentemente son mejores pero cuyos problemas a largo plazo se
desconocen.
Para el desarrollo de sistemas críticos, a menudo se
utilizan técnicas de ingeniería del software que por lo general no son rentables. Una razón por la que se usan estos métodos formales es que ayudan a reducir
la cantidad de pruebas requeridas. Para sistemas críticos, los costes de
verificación y validación generalmente son muy elevados más del 50% de los
costes totales de desarrollo del sistema.
Si bien un número reducido de sistemas se pueden automatizar completamente, la mayoría de los
sistemas críticos son sistemas
socio-técnicos en los que las personas monitorizan y controlan el
funcionamiento de dichos sistemas
informáticos. Los costes de un fallo de
funcionamiento de los sistemas críticos
generalmente son tan altos que es necesario contar con personal adicional en el sistema que pueda
hacer frente a situaciones inesperadas, y que pueda
recuperar el funcionamiento normal del
sistema cuando las cosas
van mal.
Desde luego, a pesar de que los operadores del sistema pueden
ayudar a recuperarlo cuando algo
va mal. ellos mismos a su vez pueden
generar problemas si cometen
errores. Existen tres tipos de «componentes de sistemas» susceptibles de
generar un fallo en el sistema:
- El hardware del sistema puede fallar debido a errores en su diseño, también debido a que los componentes fallan como resultado de errores de fabricación, o debido a que dichos componentes han llegado al final de su vida útil.
- El software del sistema puede fallar debido a errores en su especificación, diseño o implementación.
- Los operadores del sistema pueden provocar fallos en el sistema debido a un uso incorrecto del mismo. Así como el hardware y el software son cada vez más fiables, hoy en día los fallos debidos a un mal uso del sistema son probablemente la principal causa de fallos de funcionamiento en el sistema.
Estos fallos pueden
interrelacionarse. Un componente
hardware que deja de
funcionar puede implicar que los
operadores del sistema tengan que afrontar una situación inesperada y una
carga de trabajo adicional. Esto hace
que los operadores trabajen en estado de
estrés y las personas que sufren
estrés a menudo cometen errores.
Esto puede ocasionar que
el software falle, lo que supone
más trabajo para los operadores,
más estrés, y así sucesivamente.
Como resultado de todo lo anterior, es particularmente
importante que los diseñadores de los sistemas críticos adopten una perspectiva holística del
sistema en lugar de centrarse en un
único aspecto del mismo. SÍ el hardware, el software y las formas de utilización del sistema se diseñan de
forma separada sin tener en cuenta los puntos
débiles potenciales del resto de
las partes del sistema, entonces será más probable que
los errores se produzcan en las
interfaces entre las distintas partes del
sistema.