Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Los requisitos de fiabilidad y seguridad de los sistemas de tiempo real y embebido habitualmente
son mucho ms estrictos que los de otros sistemas informticos. En los tiempos actuales, cada vez
ms funciones de control antes realizadas por operadores humanos o mediante probados
mtodos analgico, estn siendo administradas por computadores digitales. En 1955, slo el 10
por ciento de los sistemas de armamento de EEUU necesitaba programas de computador. Al
principio de la dcada de 1980, este nmero creci hasta el 80 por ciento (Leveson, 1986)
En los primeros aos de la dcada de 1970, el programa responsable de controlar los globos
meteorolgicos de gran altura de un satlite meteorolgico francs emiti una solicitud de
autodestruccin de emergencia en lugar de una peticin de lectura de datos. El resultado fue
la destruccin de 72 de los 141 globos (Leveson, 1986). Muchos otros ejemplos como ste han
sido documentados, y es razonable pencar que muchos ms no lo fueron. En 1986. Hecht y Hecht
(1986b) estudiaron programas grandes, y concluyeron que, normalmente, por cada milln de
lneas de cdigo se introducan 20.000 imperfecciones en el software. Normalmente, el 90 por
ciento de sta& se encontraban mediante pruebas. Durante el primer ao de funcionamiento,
podan salir a la luz unos 200 defectos, mientras que otros 1.800 permanecan sin detectar. Las
rutinas de mantenimiento normalmente solan arreglar unos 200 agujeros, dejando otros 200
nuevos.
A medida que la sociedad siga confiando el control de sus funciones vitales a los computadores,
ms necesario ser que estos sistemas no fallen. Sin pretender definir de forma precisa qu
significa un fallo de un sistema o un defecto, existen, en general, cuatro causas de efectos que
pueden proporcionar el fallo de un sistema embebido.
Estos tres ltimos tipos de defectos son los que plagan los lenguajes de programacin utilizados en
la implementacin de los sistemas embebidos. Los errores introducidos por defectos de diseo
son, en general, no previstos (en cuanto a sus consecuencias), mientras que los debidos a fallos en
el procesador o en la red son, de alguna manera, predecibles. Uno de los principales requisitos,
por lo tanto, para cualquier lenguaje de programacin de tiempo real es que debe facilitar la
construccin de sistemas altamente fiables.
Modos de fallo
Un sistema proporciona servicios. Resulta posible, por lo tanto, clasificar los modos de fallo de un
sistema de acuerdo con el impacto que tendrn en los servicios que se proporciona. Se pueden
identificar dos dominios generales de modos de fallo:
En general, un error de valor podra estar an dentro del rango correcto de valores, o podra
encontrarse fuera del rango esperado para ese servicio. Esto ltimo equivale a un error de
escritura en los lenguajes de programacin, y se denomina error de lmites. Normalmente, estos
tipos de fallos se reconocen fcilmente.
Los fallos en el dominio del tiempo pueden hacer que el servicio sea entregado:
Existe un fallo ms, que se produce cuando un servicio es entregado sin ser esperado. A este tipo
de fallo habitualmente se le denomina fallo de encargo o improvisacin.
Por supuesto que, a menudo, resulta difcil distinguir entre final lo en el dominio del valor y del
tiempo de un fallo de encargo seguido de un fallo de omisin.
Fallo descontrolado: un sistema que produce errores arbitrarios, tanto en el domino del
valor como en el del tiempo incluyendo errores de improvisacin).
Fallo de retraso: un sistema que produce servicios correctos en el dominio del valor; pero
que sufre errores de retraso en el tiempo.
Fallo de silencio: un sistema que produce servicios correctos tanto en el dominio del valor
como en el del tiempo, hasta que falla. El nico fallo posible es un fallo de omisin, y
cuando ocurren todos los servicios siguientes tambin sufrirn fallos de omisin.
Fallo de parada: un sistema que tiene todas las propiedades de un fallo silencioso, pero
que permite que otros sistemas puedan detectar que ha entrado en el estado de fallo de
silencio.
Fallo controlado: un sistema que falla de una forma especificada y controlada
Sin fallos: un sistema que siempre produce los servicio\ correcto\, tanto en el dominio dcl
valor con en el del tiempo.
Los componentes software de los grandes sistemas embebidos actualmente son mucho ms
complejos que sus correspondientes elementos hardware. Aunque el software no se deteriora con
el uso, resulta en cualquier caso virtualmente imposible escribir programas libres de fallos.
Tolerancia a fallos
Los primeros acercamientos al diseo de sistemas tolerantes a fallos realizaban tres suposiciones:
Programacin de N-versiones
El xito de TMR y NMR en hardware han motivado un enfoque similar en el tratamiento de la
tolerancia a fallos software. Sin embargo, como el software no se deteriora con el uso, se utilizan
para la deteccin de fallos de diseo.
Cuando la frmula resulta muy complicada, puede ser algebraicamente dispuesta para la
computacin de dos o ms formas distintas con lo que se pueden conseguir dos o mis conjuntos
de tarjetas. Si se emplean las mismas constantes con cada conjunto, y si bajo estas circunstancias
coinciden los resultados, podremos estar bastantes seguros de la precisin de todos ellos.
Comparacin de votos
Desafortunadamente, no todos los resultados son de una naturaleza exacta. En concreto, en
aquellos votos que requieren clculos con nmeros reales, ser difcil que diferentes versiones
produzcan exactamente el mismo resultado. Esto podra deberse a la inexactitud de la
representacin hardware de los nmeros reales, o a la sensibilidad de los datos respecto a un
algoritmo concreto. Las tcnicas utilizadas en la comparacin de estos tipos de resultados se
denominan votacin inexacta. Una tcnica simple es acabar comprobando un rango utilizando una
estimacin previa o un valor medio de los N resultados. Sin embargo, puede que sea difcil
encontrar un enfoque general para la votacin inexacta.
Otra dificultad asociada a la aritmtica de precisin finita es el llamado problema de la
comparacin consistente (Brilliant et al., 1987). Este problema se da cuando una aplicacin tiene
que realizar una comparacin basada en un valor finito dado en la especificacin; el resultado de
la comparacin determina entonces el curso de la accin.
Avizienis et al., 1988: Brilliant et al., 1990; Eckhardt et al., 1991; Hattoii, 1997) para
distintos. Sin embargo, se obtienen resultados conflictivos. Knight et al. < 1985) han demostrado
la hipctesis tuvo que ser rechazada con un nivel de confianza del 99 por ciento.
Por contra, Avizienis et al. (1988) afirmaron que era muy raro encontrar fallos idnticos
en dos versiones de tm sistema de seis versiones. Comparando sus resultodos y los ohtenidos
por Knight et al., concluyeron que el problema estudiacto por Knight et al. tena un
potencial de diversidad Limitado, y que los test de aceptacih eran totalmente inadecuados
le acuerdo con los estndares industriales habituales. Avizienis et al. afirmaron que
a la eliminacin de todos los errores encontridos por Knight et al. antes de la aceptacin
del sistema. Sin embargo, existe la certeza de que all donde la especificacin resulte
entre los equipos independientes. Si estos requisitos tambin se refieren a datos de entrada
poco frecuentes: entonces los errores de diseo comunes pueden no ser capturados
que un sistema de tres versiones es, a pesar de todo, entre 5 y 9 veces ms fiable que un