La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Lenguajes de programación para sistemas críticos (SC)

Presentaciones similares


Presentación del tema: "Lenguajes de programación para sistemas críticos (SC)"— Transcripción de la presentación:

1 Lenguajes de programación para sistemas críticos (SC)
MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

2 Contenido ¿Qué es un Sistema Crítico?
Requisitos de un lenguaje para SC Lenguajes de programación para SC Demo-Comparativa Conclusiones

3 ¿Qué es un sistema crítico?
Sistema cuyo fallo o mal funcionamiento puede dar lugar a: Daños: Personales Ambientales Pérdidas No se puede detener ante un fallo o error del sistema 1- cualquier proceso que no se pueda detener ante un fallo del sistema. Llegar a un grado de confianza razonable en el comportamiento de un sistema. Disponibilidad 2- El proceso de diseño e implementación del sistema debería utilizar aproximaciones al desarrollo del software que ayuden a evitar errores de programación y así minimizar el número de defectos en un programa. 3- Los procesos de verificación y validación se diseñan para descubrir y validar defectos en un programa antes de que éste sea desplegado para su uso. 4- El sistema se diseña para que los defectos o comportamientos inesperados del sistema durante la ejecución sean detectados y gestionados de tal forma que no ocurran fallos de funcionamiento ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

4 Características de un SC
Seguro (safety) Fiable (reliability) Protegido Redundante Estable ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

5 Características de un SC
Prevención y detección de defectos Detección de defectos Tolerante a defectos Determinista ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

6 Capaz de implementar las características de los SC
Requisitos de un lenguaje para SC Robusto Redundante Concurrente Facilidad para verificarlo (análisis estático y dinámico) Mantenibilidad Entorno de programación De las caracteristicas anteriores se puede derivar los requisitos que debe tener un lenguage para SC Capaz de implementar las características de los SC ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

7 Lenguajes de programación
ADA (Advanced Data Analysis) SPARK (SPADE ADA Kernel) C/C++ Haskell MISRA C++ Erlang (Ericsson LANGuage) Hemos encontrado diversas opciones como son las siguientes, pero hemos decido centrarnos en ADA, SPARK, Earlan y eiffel pq son los que hemos Encontrado que mas se utilizan. Eiffel ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

8 Lenguajes de programación
ADA Diseño de software robusto y fiable Énfasis en la reutilización del software Ada 83 (basado en objetos) Legibilidad Tipado estricto Construcción de grandes programas Manejo de excepciones y verificaciones en tiempo de ejecución Abstracción de datos Procesamiento paralelo Unidades genéricas Ada 95 (orientado a objetos) Herencia Interface con otros lenguajes Explicar que a parte tiene las características explicadas antes ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

9 Lenguajes de programación
ADA Es uno de los mas utilizados (recomendado por muchos estándares de seguridad) Grupo de trabajo ISO que se encarga de definir y revisar las directrices para su uso Semántica bien definida Sintaxis con grado de redundancia elevado ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

10 Lenguajes de programación
ADA with Ada.Text_IO, Ada.Strings.Unbounded; use Ada.Text_IO, , Ada.Strings.Unbounded; procedure Hola_Mundo is Rist : Unbounded_String := To_Unbounded_String ("¡Hola, mundo!"); begin Put (Rist); end Hola_Mundo; ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

11 Lenguajes de programación
SPARK Herramientas de análisis y simple Comprueba propiedades complejas de su código Herramientas interactivas durante el desarrollo Ejecutar análisis en programas incompletos 1.Subconjunto de ADA. Puede usar caracterisitcas de ADA 2.Caracterisitcas peligrosas( Excepeciones o sobre carga de operadores) 3. ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

12 Lenguajes de programación
SPARK Es un subconjunto de ADA Elimina características consideradas peligrosas en los sistemas críticos Proporciona herramientas para el análisis del flujo de datos e información 1.Subconjunto de ADA. Puede usar caracterisitcas de ADA 2.Caracterisitcas peligrosas( Excepeciones o sobre carga de operadores) 3. ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

13 Lenguajes de programación
SPARK with Spark_IO; --# inherit Spark_IO; --# main_program; procedure Hola_Mundo is --# global in out Spark_IO.Outputs; begin spark_IO.Put_Line(Spark_IO.Standard_ Output, “Hola Mundo!”, o); end Hola_Mundo; 1.Subconjunto de ADA. Puede usar caracterisitcas de ADA 2.Caracterisitcas peligrosas( Excepeciones o sobre carga de operadores) 3. ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

14 Lenguajes de programación
Erlang Es un lenguaje de programación concurrente Es un lenguaje funcional, con evaluación estricta, asignación única, y tipado dinámico Fue diseñado en la compañía Ericsson para realizar aplicaciones distribuidas, tolerantes a fallos, soft-real-time  y de funcionamiento ininterrumpido ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

15 Lenguajes de programación
Erlang Potente conjunto de primitivas para crear procesos y comunicar entre los mismos Cambio en caliente de código Creación y gestión de procesos es trivial ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

16 Lenguajes de programación
Erlang -module(hola2). -export([hola_mundo/0, saludar/0, saludar/1]). hola_mundo() -> io:format("Hola mundo~n"). saludar(Nombre) -> io:format("Hola ~s ~n ", [Nombre] ). saludar() -> saludar("tu"). ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

17 Lenguajes de programación
Eiffel Lenguaje Orientado a objetos Centrado en la construcción de software robusto Permite diseño por contrato Soporta herencia Implementa administración automática de memoria - Diseño contrato: desde la base, con precondiciones, postcondiciones, invariantes y variantes. - Administración automatica de memoria: Con algoritmos de recolección de basura ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

18 Lenguajes de programación
Eiffel Protección estática contra referencias nulas SCOOP (Simple Concurrent-Oriented Programming) Tiene la intención de promover una respuesta sencilla, extensible, reutilizable y confiable Proporciona técnicas de optimización extensas ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

19 Lenguajes de programación
Eiffel class HELLO_WORLD create    make feature    make is       do          io.put_string ("Hola Mundo!%N")       end end ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

20 Demo-Comparativa ¿Qué es? Requisitos de un lenguaje
Lenguajes de programación Demo-Comparativa Conclusiones

21 Conclusiones ADA SPARKS Erlang Eiffel Robusto Mucho Normal Redundante
Concurrente Verificación Baja Mantenibilidad Entorno de programación Mirar distribuido ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

22 Gracias


Descargar ppt "Lenguajes de programación para sistemas críticos (SC)"

Presentaciones similares


Anuncios Google