Você está na página 1de 44

dit

UPM

Fiabilidad y tolerancia de fallos


Juan Antonio de la Puente
DIT/UPM

Objetivos
Veremos cules son los factores que afectan a la
fiabilidad de un sistema
Tambin veremos algunas tcnicas para
tolerar fallos de software

1997 Juan Antonio de la Puente

ndice

Introduccin
Prevencin y tolerancia de fallos
Redundancia esttica y dinmica
Programacin con N versiones
Bloques de recuperacin

Redundancia dinmica y excepciones


Seguridad, fiabilidad y confiabilidad

1997 Juan Antonio de la Puente

Fallos de funcionamiento

Los fallos de funcionamiento de un sistema pueden tener


su origen en

Una especificacin inadecuada


Errores de diseo del software
Averas en el hardware
Interferencias transitorias o permanentes en las comunicaciones

Nos centraremos en el estudio de los errores de software

1997 Juan Antonio de la Puente

Conceptos bsicos

La fiabilidad (reliability) de un sistema es una medida de su


conformidad con una especificacin autorizada de su
comportamiento

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 el resultado de errores (errors) internos

Las causas mecnicas o algortmicas de los errores se llaman fallos


(faults)

Los fallos pueden ser consecuencia de averas en los componentes


del sistema

1997 Juan Antonio de la Puente

Tipos de fallos

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

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

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

Debe impedirse que los fallos de todos estos tipos


causen averas
1997 Juan Antonio de la Puente

Modos de fallo

intervalo

nunca
falla

avera

valor

tiempo

tipo

pronto

nunca

fallo
silencioso

parada
segura

1997 Juan Antonio de la Puente

arbitrario

tarde

fallo
incontrolado

ndice

Introduccin
Prevencin y tolerancia de fallos
Redundancia esttica y dinmica
Programacin con N versiones
Bloques de recuperacin

Redundancia dinmica y excepciones


Seguridad, fiabilidad y confiabilidad

1997 Juan Antonio de la Puente

Prevencin y tolerancia de fallos

Hay dos formas de aumentar la fiabilidad de un sistema:


Prevencin de fallos
Se trata de evitar que se introduzcan fallos en el sistema antes de
que entre en funcionamiento

Tolerancia de fallos
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

1997 Juan Antonio de la Puente

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

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

1997 Juan Antonio de la Puente

10

Tcnicas de evitacin de fallos

Hardware
Utilizacin de componentes fiables
Tcnicas rigurosas de montaje de subsistemas
Apantallamiento de hardware

Software

Especificacin rigurosa o formal de requisitos


Mtodos de diseo comprobados
Lenguajes con abstraccin de datos y modularidad
Utilizacin de entornos de desarrollo con computador (CASE)
adecuados para gestionar los componentes

1997 Juan Antonio de la Puente

11

Tcnicas de eliminacin de fallos

Comprobaciones
Revisiones de diseo
Verificacin de programas
Inspeccin de cdigo

Pruebas (tests)
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

1997 Juan Antonio de la Puente

12

Limitaciones de la prevencin de fallos

Los componentes de hardware fallan,


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

La alternativa es utilizar tcnicas de


tolerancia de fallos

1997 Juan Antonio de la Puente

13

Grados de tolerancia de fallos

Tolerancia completa (fail operational)


El sistema sigue funcionando, al menos durante un tiempo, sin
perder funcionalidad ni prestaciones

Degradacin aceptable (failsoft).


El sistema sigue funcionando con una prdida parcial de
funcionalidad o prestaciones hasta la reparacin del fallo

Parada segura (failsafe).


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

1997 Juan Antonio de la Puente

14

Ejemplo : control de trfico areo


funcionalidad
completa y tiempo
de respuesta
correcto
funcionalidad
de emergencia
(slo separacin
entre aviones)

funcionalidad
mnima para control
de trfico bsico
sistema de reserva
para fallos
catastrficos

1997 Juan Antonio de la Puente

15

ndice

Introduccin
Prevencin y tolerancia de fallos
Redundancia esttica y dinmica
Programacin con N versiones
Bloques de recuperacin

Comparacin
Redundancia dinmica y excepciones
Seguridad, fiabilidad y confiabilidad

1997 Juan Antonio de la Puente

16

Redundancia

La tolerancia de fallos se basa 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

1997 Juan Antonio de la Puente

17

Redundancia en hardware

Redundancia esttica
Los componentes redundantes estn siempre activos
Se utilizan para enmascarar los fallos
Ejemplo:
Redundancia modular triple ( N)

Redundancia dinmica
Los componentes redundantes se activan cuando se detecta un
fallo
Se basa en la deteccin y posterior recuperacin de los fallos
Ejemplos:
sumas de comprobacin
bits de paridad

1997 Juan Antonio de la Puente

18

Tolerancia de fallos de software


Tcnicas para detectar y corregir errores de diseo
Redundancia esttica
Programacin con N versiones

Redundancia dinmica
Dos etapas: deteccin y recuperacin de fallos
Bloques de recuperacin
Proporcionan recuperacin hacia atrs

Excepciones
Proporcionan recuperacin hacia adelante

1997 Juan Antonio de la Puente

19

Programacin con N versiones

versin 1

resultado
versin 2

gua

versin 3

1997 Juan Antonio de la Puente

20

Comparacin consistente
X1

X2

X3

> x0

> x0

no

> x0

s
no

> y0

> y0

> y0

V1

V2

La comparacin de valores
reales no es exacta
Cada versin produce un
resultado correcto, pero
diferente de las otras
No se arregla comparando con
x0+, y0+

V3

1997 Juan Antonio de la Puente

21

Problemas de la programacin con N


versiones
La correcta aplicacin de este mtodo depende de:
Especificacin inicial.
Un error de especificacin aparece en todas las versiones

Desarrollo independiente.
No debe haber interaccin entre los equipos.
No est claro que distintos programadores cometan errores
independientes.

Presupuesto suficiente.
Los costes de desarrollo se multiplican.
El mantenimiento es tambin ms costoso.

Se ha utilizado en sistemas de avinica crticos.

1997 Juan Antonio de la Puente

22

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

1997 Juan Antonio de la Puente

23

Deteccin de errores

Por el entorno de ejecucin


hardware (p.ej.. instruccin ilegal)
ncleo o sistema operativo (p.ej. puntero nulo)

Por el software de aplicacin

Duplicacin (redundancia con dos versiones)


Comprobaciones de tiempo
Inversin de funciones
Cdigos detectores de error
Validacin de estado
Validacin estructural

1997 Juan Antonio de la Puente

24

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 (compartimentos estancos, firewalls)
Tcnicas
Descomposicin modular: confinamiento esttico
Acciones atmicas: confinamiento dinmico

1997 Juan Antonio de la Puente

25

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:
Recuperacin directa (hacia adelante)
Se avanza desde un estado errneo haciendo correcciones sobre
partes del estado

Recuperacin inversa (hacia atrs)


Se retrocede a un estado anterior correcto que se ha guardado
previamente

1997 Juan Antonio de la Puente

26

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
punteros redundantes en estructuras de datos
cdigos autocorrectores

1997 Juan Antonio de la Puente

27

Recuperacin inversa

Consiste en retroceder a un estado anterior correcto y


ejecutar un segmento de programa alternativo
(con otro algoritmo)
El 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!

1997 Juan Antonio de la Puente

28

Efecto domin

Cuando hay tareas concurrentes la recuperacin se


complica
deteccin
de error
R11

R12

T1

T2
R21

R22

Solucin: lneas de recuperacin consistentes para todas


las tareas
1997 Juan Antonio de la Puente

29

Reparacin de fallos

La reparacin automtica es difcil y depende del sistema


concreto
Hay dos etapas
Localizacin del fallo
Se pueden utilizar tcnicas de deteccin de errores

Reparacin 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

1997 Juan Antonio de la Puente

30

Bloques de recuperacin

Es una tcnica de recuperacin inversa integrada en el


lenguaje de programacin
Un bloque de recuperacin es un bloque tal que
su entrada es un punto de recuperacin
a su salida se efecta una prueba de aceptacin
sirve para comprobar si el mdulo primario del bloque termina en
un estado correcto

si la prueba de aceptacin falla,


se restaura el estado inicial en el punto de recuperacin
se ejecuta un mdulo alternativo del mismo bloque

si vuelve a fallar, se siguen intentando alternativas


cuando no quedan ms, el bloque falla y hay que intentar al
recuperacin en un nivel ms alto
1997 Juan Antonio de la Puente

31

Esquema de recuperacin

restaurar
punto de
recuperacin
entrada
al bloque

establecer
punto de
recuperacin

ms

ejecutar
alternativa

error
ok
test

abandonar
punto de
recuperacin

no

fallo del bloque

1997 Juan Antonio de la Puente

32

Sintaxis
ensure <condicin de aceptacin>
by
<mdulo primario>
else by
<mdulo alternativo>
else by
<mdulo alternativo>
...
else by
<mdulo alternativo>
else error;

Puede haber bloques anidados


si falla el bloque interior, se restaura el punto de recuperacin del
bloque exterior

1997 Juan Antonio de la Puente

33

Ejemplo: ecuacin diferencial


ensure error <= tolerance
by
Explicit_Runge_Kutta;
else by
Implicit_Runge_Kutta;
else error;

El mtodo explcito es ms rpido, pero no es adecuado para


algunos tipos de ecuaciones
El mtodo implcito sirve para todas las ecuaciones, pero es ms
lento
Este esquema sirve para todos los casos
Puede tolerar fallos de programacin

1997 Juan Antonio de la Puente

34

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

1997 Juan Antonio de la Puente

35

Bloques de recuperacin y programacin


con N versiones
N versiones
Redundancia esttica
Diseo

Bloques de recuperacin
Redundancia dinmica
Diseo

algoritmos alternativos
proceso gua

Ejecucin

algoritmos alternativos
prueba de aceptacin

Ejecucin

mltiples recursos

Deteccin de errores

puntos de recuperacin

Deteccin de errores

votacin

prueba de aceptacin

Ambos mtodos son sensibles a los errores en los requisitos!

1997 Juan Antonio de la Puente

36

ndice

Introduccin
Prevencin y tolerancia de fallos
Redundancia esttica y dinmica
Programacin con N versiones
Bloques de recuperacin

Redundancia dinmica y excepciones


Seguridad, fiabilidad y confiabilidad

1997 Juan Antonio de la Puente

37

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

1997 Juan Antonio de la Puente

38

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

1997 Juan Antonio de la Puente

39

Componente ideal de un sistema tolerante


con los fallos
peticin
de servicio

respuesta
normal

excepcin
de interfaz

excepcin
de avera

reanudacin

manejadores
de excepciones

actividad normal

peticin
de servicio

respuesta
normal

excepcin
interna

1997 Juan Antonio de la Puente

excepcin
de interfaz

excepcin
de avera

40

ndice

Introduccin
Prevencin y tolerancia de fallos
Redundancia esttica y dinmica
Programacin con N versiones
Bloques de recuperacin

Redundancia dinmica y excepciones


Seguridad, fiabilidad y confiabilidad

1997 Juan Antonio de la Puente

41

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

1997 Juan Antonio de la Puente

42

Confiabilidad

La confiabilidad (dependability) es una propiedad de los


sistemas que permite confiar justificadamente en el
servicio que proporcionan
Tiene varios aspectos
confiabilidad

disponibilidad
de utilizacin

servicio
disponible
continuamente

no hay
situaciones
catastrficas

no hay fugas
de informacin
no autorizadas

no hay
alteraciones
de informacin

aptitud para
reparaciones
y cambios

disponibilidad

fiabilidad

seguridad

confidencialidad

integridad

mantenibilidad

1997 Juan Antonio de la Puente

43

Resumen

La fiabilidad de un sistema es una medida de su conformidad con


una especificacin autorizada de su comportamiento
La fiabilidad de un sistema se puede aumentar mediante tcnicas de
prevencin o de tolerancia de fallos
La tolerancia de fallos se basa en la tolerancia
esttica (por ejemplo, N versiones)
dinmica (por ejemplo, bloques de recuperacin)

Las excepciones proporcionan redundancia dinmica con


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

1997 Juan Antonio de la Puente

44

Você também pode gostar