Fiabilidad y tolerancia a fallos Informática III There are two ways of producing error-free software. But only the third will work... (Unknown author)

Slides:



Advertisements
Presentaciones similares
INTRODUCCIÓN A LA VERIFICACION Y VALIDACION
Advertisements

EL PROCESO DE DESARROLLO DEL SOFTWARE
Ingeniería de Software II
Control Interno Informático. Concepto
DIPLOMADO EN GERENCIA DEL MANTENIMIENTO
CALIDAD DE PRODUCTO PORTADA CALIDAD DE PRODUCTO.
Base de Datos Distribuidas FUNDAMENTOS DE BASES DE DATOS DISTRIBUIDAS
TOLERANCIA A FALLAS.
Introducción a los sistemas de tiempo real
Pruebas de Unidad y Refactorización
Confiabilidad en Bases de Datos Distribuidas
INSTITUTO TECNOLOGICO DE MINATITLAN
Diseño orientado al flujo de datos
Introducción a la programación orientada a aspectos.
COMPONENTIZACIÓN DE ALGORITMOS GENETICOS Y SU IMPLEMENTACIÓN EN UNA PLATAFORMA ABIERTA PARA APRENDIZAJE COMPUTACIONAL.
Modelos de confiabilidad
CONCEPTOS Y PRINCIPIOS DE DISEÑO
Informática II Prof. Dr. Gustavo Patiño MJ
Análisis y Diseño de Aplicaciones Ingeniería de Software
Administración de Procesos de Pruebas
Ingeniería del Software
Diseño de un Sistema de Control en Tiempo Real para el Kernel del Sistema Operativo utilizando MatLab-SimuLink Por: MARCO ANTONIO ESPINEL CANGUI DIRECTOR:
M.S.C. Ivette Hernández Dávila
Introducción al Software
SISTEMAS DE INFORMACIÓN 2 SISTEMAS DE INFORMACIÓN 2.
DEPARTAMENTO DE INGENIERÍA INFORMÁTICA
Diseño del Software Diseño de datos Diseño arquitectónico
Métrica v2.1 : Técnica - Diagrama de Flujo de Datos (DFD)
Importancia de las aplicaciones de estadística en el control de procesos Guatemala 2010.
DISEÑO DE SOFTWARE 1ª. Parte
ISF5501 Ingeniería de Software
Dr.Pedro Mejía Alvarez Sistemas en Tiempo Real Transparencia 1 Dr. Pedro Mejía Alvarez CINVESTAV-IPN Sección de Computación Fiabilidad y Tolerancia de.
Fiabilidad y tolerancia a fallos
Computación II Unidad X Manejo de Excepciones. Presentación de la Unidad Objetivos: –Saber manejar situaciones inesperadas dentro de un programa –Comprender.
LENGUAJES DE PROGRAMACIÓN
Tratamiento de errores
Sistemas de Control y Proceso Adaptativo
Ingeniería del Software
INGENIERÍA DE SOFTWARE
TEMA 10: DIAGRAMA DE: OBJETOS, SECUENCIA Y DESPLIEGUE EN UML
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
Desarrollo de Software Orientado a Objetos (deficiencias)
“condición que necesita el usuario para resolver un problema o conseguir un objetivo determinado”. Los requisitos de un sistema son los aspectos que el.
Ing. Noretsys Rodríguez. Definición de Conceptos  Falla: Ocurre cuando un programa no se comporta de manera adecuada. Es una propiedad estadística de.
SGSI: Sistemas de Gestión de la Seguridad de la Información
Las Pruebas del Software y sus Fundamentos
Diseño de Sistemas.
Ciclo de vida de un sistema
CALIDAD Y VALIDACIÓN DE SISTEMAS EXPERTOS
TIPOS DE AUDITORÍAS EN SISTEMAS DE INFORMACIÓN
TIPOS DE PRUEBAS DEL SOFTWARE
Introducción al proceso de verificación y validación.
Explicar las causas que afectan la calidad.  Siendo el objetivo, la satisfacción total de sus clientes y ésta satisfacción tanto al cliente externo,
Análisis y Diseño de Aplicaciones
INTERRUPCIONES – ABRAZO MORTAL
Transacciones seguras  Concurrencia Ing. Yeberth Martinez Programación II.
BASE DE DATOS DISTRIBUIDAS
Carolina Rangel Felipe Montaño Alexis García
ANGIE PAOLA SOLANO CASTIBLANCO DAR SOPORTE A LOS PROCESOS NORMAS ISO DOC. JOHANA LÓPEZ CHAVEZ SENA 2010.
Introducción a los sistemas de tiempo real Informática III El tiempo es un tirano...
DISEÑO DE COMPONENTES Y DESARROLLO BASADO EN COMPONENTES
Proceso de desarrollo de Software
EI, Profesor Ramón Castro Liceaga IV. AREAS DE EVALUACIÓN DE LA AUDITORIA EN INFORMÁTICA. UNIVERSIDAD LATINA (UNILA)
Fundamentos de Computación
Modelo de procesos de software
Bachillerato Ingeniería en Informática Fundamentos de Computación.
CICLO DE VIDA DE UN SOFTWARE. Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados, que forman parte de.
Objetivos de la prueba Los objetivos principales de realizar una prueba son: Detectar un error. Tener un buen caso de prueba, es decir que tenga más probabilidad.
Verificación y Validación del Software
Transcripción de la presentación:

Fiabilidad y tolerancia a fallos Informática III There are two ways of producing error-free software. But only the third will work... (Unknown author)

Informática IIIIng. Nora BletPág. 2 Bibliografía Alan Burns, Andy J. Wellings "Sistemas de Tiempo Real y Lenguajes de Programación", Addison-Wesley (3º edición) cap. 5 Transparencias de Juan Antonio de la Puente

Informática IIIIng. Nora BletPág. 3 Características de un STR Grandes y complejos Concurrencia/distribución Interacción con interfaces hardware Extremadamente fiable y seguro Implementación eficiente Funcionalidades de tiempo real Manipulación de números reales

Informática IIIIng. Nora BletPág. 4 Objetivos Entender los factores que afectan la fiabilidad de un sistema Introducir técnicas para tolerar fallos de software

Informática IIIIng. Nora BletPág. 5 Indice Fiabilidad, averías y fallos Modos de fallo Prevención y tolerancia de fallos Redundancia estática y dinámica Programación con N versiones Bloques de recuperación Redundancia dinámica y excepciones Seguridad, fiabilidad y confiabilidad

Informática IIIIng. Nora BletPág. 6 Fallos de funcionamiento Los fallos de funcionamiento de un sistema pueden tener su origen en Una especificación inadecuada Errores de diseño del software Averías en el hardware Interferencias transitorias o permanentes en las comunicaciones Nos centraremos en el estudio de los errores de software

Informática IIIIng. Nora BletPág. 7 Conceptos básicos Randell et al. (1978) define fiabilidad (reliability) como: “... Una medida del éxito con que el sistema se ajusta a alguna especificación definitiva de su comportamiento.”

Informática IIIIng. Nora BletPág. 8 Conceptos básicos Una avería (failure) es una desviación del comportamiento de un sistema respecto de su especificación Las averías se manifiestan en el comportamiento externo del sistema, pero son el resultado de errores (errors) internos Las causas mecánicas o algorítmicas (declaradas o hipotéticas) de los errores se llaman fallos (faults)

Informática IIIIng. Nora BletPág. 9 Fallos encadenados

Informática IIIIng. Nora BletPág. 10 Fallos encadenados Avizinies et.al (2004)

Informática IIIIng. Nora BletPág. 11 Tipos de Fallo 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 diseño 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 averías

Informática IIIIng. Nora BletPág. 12 Modos de averías de servicio (failure modes) - Avizinies et.al (2004) Dominio ValorTiempo Tiempo y valor Temprano Tarde Avería de contenido Avería de parada Avería errática Avería de performance

Informática IIIIng. Nora BletPág. 13 Mejoras en la Fiabilidad Hay dos técnicas complementarias para aumentar la fiabilidad de un sistema: Prevención de Fallos  Se trata de evitar que se introduzcan fallos en el sistema antes de que entre en funcionamiento Tolerancia a Fallos  Se trata de conseguir que el sistema continúe funcionando aunque se produzcan fallos En ambos casos el objetivo es desarrollar sistemas con tipos de averías bien definidos

Informática IIIIng. Nora BletPág. 14 Técnicas para aumentar la fiabilidad

Informática IIIIng. Nora BletPág. 15 Prevención de Fallos Se realiza en dos etapas: Evitación  Se intenta acotar la introducción de componentes (hardware y software ) potencialmente defectuosos durante la construcción del sistema  A pesar de utilizar técnicas para evitar fallos, éstos se encontrarán inevitablemente en el sistema una vez construido. En concreto, pueden existir errores de diseño en los componentes. Eliminación  Consiste en encontrar y eliminar los fallos que se producen en el sistema una vez construido

Informática IIIIng. Nora BletPág. 16 Hardware Utilización de componentes mas confiables Empleo de técnicas refinadas para la interconexión y ensamblado de subsistemas Aislamiento de interferencias externas

Informática IIIIng. Nora BletPág. 17 Software Especificaciones rigurosas/formales Metodologías de diseño comprobadas Uso de herramientas con abstracción, encapsulamiento y modularidad Uso de herramientas de ingeniería de software para ayudar en la manipulación de los componentes software y en la gestión de la complejidad

Informática IIIIng. Nora BletPág. 18 Técnicas de Eliminación de Fallos Comprobaciones Revisión de diseño Verificación de programas Inspección de código Prueba (test) Son necesarias, pero tienen problemas:  Nunca pueden ser exhaustivas  Sólo se pueden utilizar para demostrar la presencia de fallos, no su ausencia  A menudo resulta imposible realizarlas bajo condiciones reales  simulación  Los errores de especificación no se detectan

Informática IIIIng. Nora BletPág. 19 Limitaciones de la prevención de fallos Los componentes de hardware pueden fallar La prevención resulta insuficiente si la frecuencia o la duración de las reparaciones es inaceptable no se puede detener el sistema para efectuar operaciones de mantenimiento. Ejemplo: naves espaciales no tripuladas La alternativa es utilizar técnicas de tolerancia a fallos

Informática IIIIng. Nora BletPág. 20 Niveles de tolerancia a fallos Un sistema puede proveer tres niveles: Tolerancia total de fallos (Fail operational)  El sistema sigue funcionando, al menos durante un tiempo, sin perder funcionalidad ni prestaciones Degradación controlada (Graceful Degradation, fail soft)  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 cuida de su integridad durante el fallo aceptando una parada temporal de su funcionamiento El grado de tolerancia de fallos necesario depende de la aplicación

Informática IIIIng. Nora BletPág. 21 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 Resulta aconsejable separar los componentes tolerantes a fallos del resto del sistema

Informática IIIIng. Nora BletPág. 22 Tolerancia a fallos de software Técnicas para detectar y corregir errores de diseño Redundancia estática (enmascaramiento) Programación con N versiones Redundancia dinámica Dos etapas: detección y recuperación de errores Bloques de recuperación  Proporcionan recuperación hacia atrás Excepciones

Informática IIIIng. Nora BletPág. 23 Programación con N versiones Diversidad de diseño N (N>1) programas desarrollados independientemente con la misma especificación sin interacciones entre los equipos de desarrollo Ejecución concurrente proceso coordinador (driver)  intercambia datos con los procesos que ejecutan las versiones todos los programas tienen las mismas entradas las salidas se comparan si hay discrepancia se realiza una votación

Informática IIIIng. Nora BletPág. 24 Programación con N versiones Version 2Version 1Version 3 Driver vote status vote status

Informática IIIIng. Nora BletPág. 25 Comparación consistente T3 > T th no P3 > P th T1 > T th yes P1 > P th yes V1 T2 > T th yes P2 no > P th V2 V3 Cada versión produce un resultado distinto aunque correcto. No se arregla comparando con Tth , Pth 

Informática IIIIng. Nora BletPág. 26 Problemas La aplicación correcta de este método depende de: – Especificación inicial Un error de especificación se manifestará en todas las N versiones de la implementación

Informática IIIIng. Nora BletPág. 27 Problemas Independencia en el diseño No está claro que distintos programadores cometan errores independientes Presupuesto suficiente Los costes de desarrollo se multiplican  ¿sería mejor emplearlos en mejorar una versión única? El mantenimiento es también más costoso

Informática IIIIng. Nora BletPág. 28 Resumen Se ha utilizado en sistemas de aviónica críticos Cuando el algoritmo de votación está implementado correctamente constituye un marco de trabajo simple y atractivo para obtener tolerancia a fallos

Informática IIIIng. Nora BletPág. 29 Redundancia dinámica en software Cuatro etapas: (dos pasivas y dos activas) Detección de errores  no se puede hacer nada hasta detectar un error  una falla no puede ser detectada directamente por el sistema mientras que su manifestación generará errores Valoración y confinamiento de los daños  diagnosis: averiguar hasta dónde ha llegado la información errónea Recuperación de errores  llevar el sistema a un estado correcto, desde el que pueda seguir funcionando (tal vez con funcionalidad parcial) Reparación de fallos  Aunque el sistema funcione, el fallo puede persistir y hay que repararlo

Informática IIIIng. Nora BletPág. 30 Técnicas de detección de errores Por el entorno de ejecución Por el hardware (Ej.: desbordamiento aritmético) núcleo o sistema operativo (Ej.: puntero nulo) Por el software de aplicación Comprobación de réplicas (programación con N-versiones) Comprobaciones de tiempo  Temporizador guardián (watchdog timer)  deadline checks Inversión de funciones Códigos detectores de error (checksum) Validación de estado (aserciones) Validación estructural (cuenta de elementos de listas)

Informática IIIIng. Nora BletPág. 31 Valoración y confinamiento de daños Es importante confinar los daños causados por un fallo a una parte limitada del sistema (firewalling) Las técnicas de valoración están estrechamente relacionadas con las técnicas de confimiento usadas, se parte de una estima inicial del daño anticipado de antemano por el diseñador del sistema Son difíciles de implementar, las mecanismos que son importantes para ello son aquéllos que tratan de estructurar el sistema de forma que se minimice el daño causado por los componentes defectuosos (compartimentos estancos, firewalls), poniendo restricciones al flujo de información del sistema Técnicas Descomposición modular Acciones atómicas

Informática IIIIng. Nora BletPág. 32 Recuperación de errores Es la etapa más importante Se trata de situar el sistema en un estado correcto desde el que pueda seguir funcionando Se han propuesto dos estrategias: Hacia delante (forward) : continuación desde el estado erróneo con correcciones selectivas Hacia atrás (backward): Se basa en restaurar el sistema a un estado seguro previo a la aparición del error y ejecutar una secuencia alternativa. El estado seguro se llama punto de recuperación (checkpoint)

Informática IIIIng. Nora BletPág. 33 Recuperación hacia adelante La forma de hacerla es específica para cada sistema Depende de una predicción correcta de los posibles fallos y de su situación (valoración de daños) Ejemplos de técnicas: punteros redundantes en estructuras de datos códigos autocorrectores (Ej.: código de Hamming)

Informática IIIIng. Nora BletPág. 34 Recuperación hacia atrás Consiste en retroceder a un estado anterior correcto y ejecutar un segmento de programa alternativo (con otro algoritmo, igual funcionalidad) El punto al que se retrocede se llama punto de recuperación (checkpoint) La acción de guardar el estado se llama chekpointing No es necesario averiguar la causa ni la situación del fallo Sirve para fallos imprevistos (Ej.: errores de diseño) ¡Pero no puede deshacer los errores que aparecen en el sistema controlado!

Informática IIIIng. Nora BletPág. 35 Efecto dominó Cuando hay tareas concurrentes la recuperación hacia atrás se complica Los puntos de recuperación deben ser diseñados consistentemente, de forma que un error detectado en uno de los procesos no produzca que todos los procesos con los que interactúa sean revertidos En lugar de esto, los procesos pueden ser reiniciados desde un conjunto consistente de puntos de recuperación (líneas de recuperación) para todos ellos

Informática IIIIng. Nora BletPág. 36 Efecto dominó R 22 R 21 R 13 R 12 R 11 IPC 4 IPC 3 IPC 2 IPC 1 Tiempo de ejecución T error P1P1 P2P2 Si el error es detectado en P1 rollback a R13 Y si es detectado en P2 ?

Informática IIIIng. Nora BletPág. 37 Líneas de recuperación

Informática IIIIng. Nora BletPág. 38 Reparación de fallos La reparación automática es difícil y depende del sistema concreto Hay dos etapas Localización del fallo  Las técnicas de detección de errores pueden ayudar a realizar un seguimiento del fallo de un componente Reparación del sistema  Los componentes de hardware se pueden cambiar  Los componentes de software se reparan haciendo una nueva versión  En algunos casos puede ser necesario reemplazar el componente defectuoso sin detener el sistema

Informática IIIIng. Nora BletPág. 39 Bloques de recuperación Es una técnica de recuperación hacia atrás integrada en el lenguaje de programación Son bloques en el sentido normal de los lenguajes de programación pero, su entrada es un punto de recuperación a su salida se efectúa una prueba de aceptación  sirve para comprobar si el módulo primario del bloque termina en un estado correcto si la prueba de aceptación falla,  se restaura el estado inicial en el punto de recuperación  se ejecuta un módulo alternativo del mismo bloque si vuelve a fallar, se siguen intentando alternativas cuando no quedan más, el bloque falla y hay que intentar al recuperación en un nivel más alto

Informática IIIIng. Nora BletPág. 40 Esquema de recuperación

Informática IIIIng. Nora BletPág. 41 Posible sintaxis Puede haber bloques anidados si falla el bloque interior, se restaura el punto de recuperación del bloque exterior ensure by else by else by... else by else error

Informática IIIIng. Nora BletPág. 42 Ejemplo: ecuación diferencial El método explícito es más rápido, pero no es adecuado para algunos tipos de ecuaciones El método implícito sirve para todas las ecuaciones, pero es más lento Este esquema sirve para todos los casos Puede tolerar fallos de programación (test general) ensure Rounding_err_has_acceptable_tolerance by Explicit Kutta Method else by Implicit Kutta Method else error

Informática IIIIng. Nora BletPág. 43 Prueba de aceptación Es fundamental para el buen funcionamiento de los bloques de recuperación Pueden usarse algunas de las técnicas de detección de error vistas Hay que buscar un compromiso entre detección exhaustiva de fallos y eficiencia de ejecución (normal) Se trata de asegurar que el resultado es aceptable, no forzosamente correcto lo que permite que un componente pueda proporcionar un servicio degradado Si es defectuoso pueden quedar errores residuales sin detectar o resultados aceptables resultar rechazados

Informática IIIIng. Nora BletPág. 44 Comparación

Informática IIIIng. Nora BletPág. 45 Excepciones y redundancia dinámica Son ocurrencias concretas de un error Cuando un componente detecta un error debe señalarlo al invocador lanzando (raise, signal, throw) una excepción La respuesta del invocador se denomina gestión (manejo, captura) de la excepción

Informática IIIIng. Nora BletPág. 46 Excepciones La gestión de excepciones se puede considerar como un mecanismo de recuperación hacia delante Sin embargo, también se pueden utilizar para proporcionar una recuperación de errores hacia atrás

Informática IIIIng. Nora BletPág. 47 Excepciones Las excepciones y su gestión pueden utilizarse para: Enfrentarse a condiciones anormales que surgen en el entorno (propósito original) Tolerar fallos en el diseño del programa Proporcionar unas capacidades de propósito general para la detección de errores y la recuperación

Informática IIIIng. Nora BletPág. 48 Modelo Actividad NormalManejador de Excepciones Vuelta al Servicio normal Excepción Interna Petición De Servicio Petición De Servicio Respuesta Normal Respuesta Normal Excepción de Interfaz Excepción de Fallo Excepción de Fallo Excepción de Interfaz

Informática IIIIng. Nora BletPág. 49 Seguridad y fiabilidad Un sistema es seguro si no se pueden producir situaciones que puedan causar muertes, heridas, enfermedades, ni daños en los equipos ni en el ambiente Un accidente (mishap) es un suceso (o una serie de sucesos) imprevisto que puede producir daños inadmisibles La fiabilidad es la probabilidad de que un sistema se comporte de acuerdo con su especificación La seguridad (safety) es la probabilidad de que no ocurra ningún suceso que provoque un accidente ¡Seguridad y fiabilidad pueden estar en conflicto!

Informática IIIIng. Nora BletPág. 50 Confiabilidad La confiabilidad (dependability) es una propiedad de los sistemas que permite confiar justificadamente en el servicio que proporcionan Tiene varios aspectos (Laprie, 1995) Puede describirse en relación con 3 componentes Impedimentos Mecanismos Atributos

Informática IIIIng. Nora BletPág. 51 Aspectos de confiabilidad Confiabilidad Disponibilidad disponibili dad de utilización Fiabilidad servicio disponible continuamen te Seguridad no hay situaciones catastróficas Confidencialidad no hay fugas de información no autorizadas Integridad no hay alteraciones de información Mantenibilidad aptitud para reparacio nes y cambios

Informática IIIIng. Nora BletPág. 52 Aspectos de confiabilidad Laprie (1995) incorpora también el concepto de security (protección?) vista en términos de Confidencialidad: divulgación de información no autorizada Disponibilidad sólo para acciones autorizadas Integridad: ausencia de alteraciones del sistema no autorizados

Informática IIIIng. Nora BletPág. 53 Terminología Confiabilidad (y security) Disponibilidad Confidenciabilidad Fiabilidad Seguridad Integridad Mantenibilidad Prevención de fallos Tolerancia a fallos Reparación de fallos Predicción de fallos Fallos Errores Averías Atributos Medios Impedimentos