Sunteți pe pagina 1din 40

TOLERANCIA

A
FALLAS
Conceptos bsicos
La fiabilidad (reliability) de un sistema es una medida
de su conformidad con una especificacin autorizada de
su comportamiento, es la probabilidad de que ese
sistema funcione o desarrolle una cierta funcin, bajo
condiciones fijadas y durante un perodo determinado.

Una avera (failure) es una desviacin del
comportamiento de un sistema respecto de su
especificacin.

Las averas se manifiestan en el comportamiento
externo del sistema, pero son resultado de errores
(errors) internos

Las causas mecnicas o algortmicas de los errores se
llaman fallos (faults)



oAvera
oNo realizacin de alguna accin
esperada
oError
oManifestacin de una falla
oFalla
oDefecto dentro de un componente de
hardware o software



Fallos encadenados
Fallas de funcionamiento
Los fallas de funcionamiento de un sistema
pueden tener su origen en:
o Una especificacin inadecuada
o Errores de diseo del software
o Averas en el hardware
o Interferencias transitorias o permanentes en las
comunicaciones

Tipos de fallos
Fallos transitorios
o desaparecen solos al cabo de un tiempo
o ejemplo: interferencias en comunicaciones

Fallos permanentes
o permanecen hasta que se reparan
o ejemplo: daos de hardware, errores de software

Fallos intermitentes
o fallos transitorios que ocurren de vez en cuando
o ejemplo: calentamiento de un componente de hardware

Otros
Tipos de avera
Prevencin y tolerancia de
fallas
Hay dos formas de aumentar la fiabilidad de
un sistema:
oPrevencin de fallos
Se trata de evitar que se introduzcan fallos en el
sistema antes de que entre en funcionamiento
oTolerancia de fallas
Se trata de conseguir que el sistema contine
funcionando aunque se produzcan fallos

En ambos casos el objetivo es desarrollar
sistemas con modos de fallo bien definidos

Prevencin de fallos
oSe realiza en dos etapas:
Evitacin de fallos
oSe trata de impedir que se introduzcan fallos
durante la construccin del sistema

Eliminacin de fallos
o Consiste en encontrar y eliminar los fallos que se
producen en el sistema una vez construido

Tcnicas de evitacin de fallos
Hardware
oUtilizacin de componentes fiables
oTcnicas rigurosas de montaje de subsistemas
oApantallamiento de hardware

Software
oEspecificacin rigurosa o formal de requisitos
oMtodos de diseo comprobados
oLenguajes con abstraccin de datos y
modularidad
oUtilizacin de entornos de desarrollo con
computador (CASE) adecuados para gestionar
los componentes

Tcnicas de eliminacin de
fallos
Comprobaciones
o Revisiones de diseo
o Verificacin de programas
o Inspeccin de cdigo

Pruebas (tests)
o Son necesarias, pero tienen problemas:
no pueden ser nunca exhaustivas
slo sirven para mostrar que hay errores, no que no los hay
a menudo es imposible reproducir las condiciones reales
los errores de especificacin no se detectan

Limitaciones de la prevencin
de fallos
Los componentes de hardware fallan, a pesar
de las tcnicas de prevencin

La prevencin es insuficiente si
o la frecuencia o la duracin de las reparaciones es
inaceptable
o no se puede detener el sistema para efectuar
operaciones de mantenimiento

La alternativa es utilizar tcnicas de
tolerancia de fallos

Tolerancia a fallas
oEs la propiedad que permite a
un sistema continuar operando
adecuadamente en caso de una falla en
alguno de sus componentes.

oLa tolerancia de fallas es muy importante en
aquellos sistemas que deben funcionar todo
el tiempo.

oUna forma de lograr tolerancia de fallas, es
duplicar cada componente del sistema.
Grados de tolerancia de fallos
Tolerancia completa (fail operational).
o El sistema sigue funcionando, al menos durante un
tiempo, sin perder funcionalidad ni prestaciones
Degradacin aceptable (failsoft).
o El sistema sigue funcionando con una prdida parcial
de funcionalidad o prestaciones hasta la reparacin del
fallo
Parada segura (failsafe).
o El sistema se detiene en un estado que asegura la
integridad del entorno hasta que se repare el fallo

El grado de tolerancia de fallos necesario
depende de la aplicacin
Redundancia
La tolerancia de fallos se basan en la redundancia

Se utilizan componentes adicionales para detectar
los fallos y recuperar el comportamiento correcto

Esto aumenta la complejidad del sistema y puede
introducir fallos adicionales

Es mejor separar los componentes tolerantes del
resto del sistema
Redundancia
ode Informacin
oreplicacin de datos, cdigos de correccin de
errores.
ode Recursos
ose agrega equipo adicional para tolerar la
prdida o mal funcionamiento de ciertos
componentes
ode Tiempo
ose realiza una accin, y de ser necesario, se
vuelve a realizar
Redundancia en hardware
Redundancia esttica
oLos componentes redundantes estn siempre activos
oSe utilizan para enmascarar los fallos
oEjemplo:
Redundancia modular triple ( N)
Redundancia dinmica
oLos componentes redundantes se activan cuando se
detecta un fallo
oSe basa en la deteccin y posterior recuperacin de
los fallos
oEjemplos:
sumas de comprobacin
bits de paridad
Tolerancia de fallos de software
oTcnicas para detectar y corregir errores de
diseo

Redundancia esttica
o Programacin con N versiones

Redundancia dinmica
o Dos etapas: deteccin y recuperacin de fallos
o Bloques de recuperacin
Proporcionan recuperacin hacia atrs
o Excepciones
Proporcionan recuperacin hacia adelante
Programacin con N versiones
oDiversidad de diseo
oN programas desarrollados
independientemente con la misma
especificacin
oSin interacciones entre los equipos de
desarrollo

oEjecucin concurrente
oProceso coordinador (driver)
o intercambia datos con los procesos que ejecutan
las versiones
oTodos los programas tienen las mismas
entradas
oLas salidas se comparan
oSi hay discrepancia se realiza una votacin
Programacin con N versiones

o Puntos de comparacin: puntos dentro de la versin donde deben
comunicar sus votos al proceso coordinador.
o Granularidad de las votaciones:
Fina => semejanza en los detalles de estructura de los
programas, reduce la independencia entre versiones.
Gruesa =>Gran divergencia en los resultados obtenidos
aunque menos sobrecarga por el sistema de votacin.


Problemas de la programacin
con N versiones
oLa correcta aplicacin de este mtodo depende de:

Especificacin inicial.
o Un error de especificacin aparece en todas las versiones.
Desarrollo independiente.
o No debe haber interaccin entre los equipos.
o No est claro que distintos programadores cometan errores
independientes.
Presupuesto suficiente.
o Los costes de desarrollo se multiplican.
o El mantenimiento es tambin ms costoso.

oSe ha utilizado en sistemas de avinica crticos.
Redundancia dinmica en
software
Los componentes redundantes slo se ejecutan cuando
se detecta un error

Se distinguen cuatro etapas:
1. Deteccin de errores
2. Evaluacin y confinamiento de los daos
3. Recuperacin de errores
Se trata de llevar el sistema a un estado correcto, desde el
que pueda seguir funcionando
4. Reparacin de fallos
Aunque el sistema funcione, el fallo puede persistir y hay
que repararlo
Deteccin de errores
Por el entorno de ejecucin
o hardware (p.ej.. instruccin ilegal)
o ncleo o sistema operativo (p.ej. puntero nulo)

Por el software de aplicacin
o Duplicacin (redundancia con dos versiones)
o Comprobaciones de tiempo
o Inversin de funciones
o Cdigos detectores de error
o Validacin de estado
o Validacin estructural
Evaluacin y confinamiento de daos
Es importante confinar los daos causados por un
fallo a una parte limitada del sistema

Se trata de estructurar el sistema de forma que se
minimice el dao causado por los componentes
defectuosos (comportamiento estancos, firewalls)

Tcnicas
o Descomposicin modular: confinamiento esttico
o Acciones atmicas: confinamiento dinmico
Recuperacin de errores
Es la etapa ms importante

Se trata de situar el sistema en un estado correcto
desde el que pueda seguir funcionando

Hay dos formas de llevarla a cabo:
oRecuperacin directa (hacia adelante)
Se avanza desde un estado errneo haciendo
correcciones sobre partes del estado
oRecuperacin inversa (hacia atrs)
Se retrocede a un estado anterior correcto que se ha
guardado previamente
Recuperacin directa
La forma de hacerla es especfica para cada sistema

Depende de una prediccin correcta de los posibles
fallos y de su situacin

Hay que dejar tambin en un estado seguro el
sistema controlado

Ejemplos
o punteros redundantes en estructuras de datos
o cdigos autocorrectores
Recuperacin inversa
Consiste en retroceder a un estado anterior correcto y
ejecutar un segmento de programa alternativo (con
otro algoritmo)
oEl punto al que se retrocede se llama punto de
recuperacin

No es necesario averiguar la causa ni la situacin del
fallo

Sirve para fallos imprevistos

Pero no puede deshacer los errores que aparecen en
el sistema controlado!
Efecto domin
Cuando hay tareas concurrentes la recuperacin se
complica
Solucin: establecer puntos de recuperacin globales
Conjunto de puntos de recuperacin globales: lnea de
recuperacin, lneas de recuperacin consistentes para
todas las tareas

Reparacin de fallos
La reparacin automtica es difcil y depende del
sistema concreto

Hay dos etapas
oLocalizacin del fallo
Se pueden utilizar tcnicas de deteccin de errores
oReparacin del sistema
Los componentes de hardware se pueden cambiar
Los componentes de software se reparan haciendo una nueva
versin
En algunos casos puede ser necesario reemplazar el
componente defectuoso sin detener el sistema
Bloques de recuperacin
Es una tcnica de recuperacin inversa integrada en el
lenguaje de programacin

Un bloque de recuperacin es un bloque tal que:
osu entrada es un punto de recuperacin
oa su salida se efecta una prueba de aceptacin
sirve para comprobar si el mdulo primario del bloque termina
en un estado correcto
o si la prueba de aceptacin falla,
se restaura el estado inicial en el punto de recuperacin
se ejecuta un mdulo alternativo del mismo bloque
osi vuelve a fallar, se siguen intentando alternativas
ocuando no quedan ms, el bloque falla y hay que
intentar la recuperacin en un nivel ms alto
Esquema de recuperacin
Puede haber bloques anidados
si falla el bloque interior, se restaura el punto de
recuperacin del bloque exterior

Prueba de aceptacin
Es fundamental para el buen funcionamiento de los
bloques de recuperacin

Hay que buscar un compromiso entre deteccin
exhaustiva de fallos y eficiencia de ejecucin

Se trata de asegurar que el resultado es aceptable,
no forzosamente correcto
Pero hay que tener cuidado de que no queden
errores residuales sin detectar
Comparacin
oN versiones
Redundancia esttica
Diseo
o algoritmos alternativos
o proceso gua
Ejecucin
o mltiples recursos
Deteccin de errores
o votacin
Bloques de recuperacin
Redundancia dinmica
Diseo
algoritmos alternativos
prueba de aceptacin
Ejecucin
puntos de recuperacin
Deteccin de errores
prueba de aceptacin
Ambos mtodos son sensibles a los errores en los requisitos!
Excepciones
Una excepcin es una manifestacin de un cierto
tipo de error

Cuando se produce un error, se eleva la excepcin
correspondiente en el contexto donde se ha
invocado la actividad errnea

Esto permite manejar la excepcin en este contexto

Se trata de un mecanismo de recuperacin directa
de errores (no hay vuelta atrs)

Pero se puede utilizar para realizar recuperacin
inversa tambin
Aplicaciones de las excepciones
Tratar situaciones anormales en el sistema
controlado

Tolerar fallos de diseo de software

Facilitar un mecanismo generalizado de
deteccin y correccin de errores
Componente ideal de un sistema
tolerante a fallos
Seguridad y fiabilidad
Un sistema es seguro si no se pueden producir situaciones
que puedan causar muertes, heridas, enfermedades, ni
daos en los equipos ni en el ambiente
Un accidente (mishap) es un suceso imprevisto que puede
producir daos inadmisibles

Un sistema es fiable si cumple sus especificaciones

Seguridad y fiabilidad pueden estar en conflicto


La seguridad es la probabilidad de que no se produzcan
situaciones que puedan conducir a accidentes,
independientemente de que se cumpla la especificacin o no
Confiabilidad
oEs la medida en la cual la confianza se
puede poner justificadamente en el
servicio que se obtiene del sistema
(Laprie (1992).

oLa tolerancia a fallas trata con la
confiabilidad de un sistema, o sea como
asegurar que el sistema corra
correctamente.

Confiabilidad
La confiabilidad es una propiedad de los sistemas que
permite confiar justificadamente en el servicio que
proporcionan.

La confiabilidad de un sistema es una propiedad ms amplia
que la fiabilidad

Tiene varios aspectos

S-ar putea să vă placă și