lunes, 16 de abril de 2012

[DISTRIBUIDOS Y PARALELOS] Fiabilidad y tolerancia de fallos


Fallos de funcionamiento:

Se originan en: especificaciones inadecuadas, errores de diseño de software, averias en el hardware o interferencias en las comunicaciones.

Conceptos básicos

Fiabilidad (reliability) de un sistema es la medida de conformidad en base a una especificacion autorizada.

Avería (failure) es una desviación del comportamiento del sistema, estas se manifiestan en el comportamiento externo, pero son el resultado de errores internos del sistema.

Las causas de estos errores son llamados fallos (faults).

Un fallo puede probocar varios errores y averias, algo conocido como fallo encadenado.


Los fallos pueden ser:

  • Transitorios: desaparecen con el paso del tiempo.
  • Permanentes: se necesita reparar manualmente.
  • Intermitentes: fallos transitorios que ocurren de vez en cuando.

Prevención y tolerancia de fallos.

Para aumentar la fiabilidad del sistema se tienen dos formas:

  • Prevención de fallos: Evitar la introducción de fallos al sistema antes de que se ponga en funcionamiento.
  • Tolerancia de fallos: Se trata de conseguir que el sistema continúe aunque ocurran fallos.
  • Para la prevención de fallos hay dos etapas.
  • Evitar fallos: Se trata de impedir que se introduzcan fallos durante la construcción del sistema.
  • Eliminación de fallos: Consiste en encontrar y eliminar los fallos que se producen en el sistema una vez construido.

Las tecnicas para evitar fallos son:

Hardware:

  • Utilización de componentes fiables
  • Técnicas rigurosas de montaje de subsistemas
  • Apantallamiento de hardware

Software:

  • Especificación de requisitos rigurosa o formal
  • Métodos de diseño comprobados
  • Lenguajes con abstracción de datos y modularidad
  • Utilización de entornos de desarrollo con computador (CASE) adecuados para gestionar los componentes

Para la eliminación de fallos tambien hay técnicas:

Comprobaciones:

  • Revisiones de diseño
  • Verificación de programas – Inspección de código

Pruebas (tests):

Son necesarias, pero tienen problemas:

  • No pueden ser nunca exhaustivas
  • Sólo sirven para mostrar que hay errores, no que no los hay » a menudo es imposible reproducir las condiciones reales
  • Los errores de especificación no se detectan

Existen grados de tolerancia a fallos:

Tolerancia completa (fail operational): El sistema sigue funcionando, al menos durante un tiempo, sin
perder funcionalidad ni prestaciones

Degradación aceptable (fail soft, graceful degradation): El sistema sigue funcionando con una pérdida parcial de funcionalidad o prestaciones hasta la reparación del fallo

Parada segura (fail safe): El sistema se detiene en un estado que asegura la integridad del
entorno hasta que se repare el fallo

En todo caso, estos dependen de la aplicación.

La tolerancia a fallos se basa en la redundanica.

Existen dos tipos de redundancia en hardware; la estática y la dinámica.

La primera (estática) tiene sus componentes redundantes siempre activos y enmascaran los fallos.

La dinámica activa sus componentes solo cuando hay un fallo detectado, basada en la detección y recuperación de estos.

Para software existen tambien redundancia estática y dinámica.

En este caso la estática es la programación con N versiones. ¿Que es la programación de N versiones? N programas desarrollados independientemente con una misma especificación sin interacciones entre los equipos de desarrollo.



La dinámica utiliza varias etapas: detección, evaluación, recuperación y reparación de fallos, los bloques de recuperación proporcionan recuperación hacia atrás, las excepciones lo hacen hacia adelante. Las etapas son de la siguiente manera.


1. Detección de errores

  • No se puede hacer nada hasta que se detecta un error 

2. Evaluación y confinamiento de los daños

  • Diagnosis: averiguar hasta dónde ha llegado la información errónea 

3. Recuperación de errores

  • Llevar el sistema a un estado correcto, desde el que pueda seguir funcionando (tal vez con funcionalidad parcial)

4. Reparación de fallos

  • Aunque el sistema funcione, el fallo puede persistir y hay que repararlo


1 comentario:

  1. Excelencia. Voy a poner 5 en clase y por estar tan "on topic" te subo en el lab a 7 el puntaje de esta semana.

    ResponderEliminar