mei – seiu q1 2012/2013 felipe caicedo daniel yuste
TRANSCRIPT
MEI – SEiU Q1 2012/2013Felipe CaicedoDaniel Yuste
• ¿Qué es un Sistema Crítico?
• Requisitos de un lenguaje para SC
• Lenguajes de programación para SC
• Demo-Comparativa
• Conclusiones
Contenido
2
¿Qué es un sistema crítico?
3
•Sistema cuyo fallo o mal funcionamiento puede dar lugar a:
oDaños:PersonalesAmbientales
oPérdidas
•No se puede detener ante un fallo o error del sistema
Características de un SC
• Seguro (safety)
• Fiable (reliability)
• Protegido
• Redundante
•Estable
4
Características de un SC
• Prevención y detección de defectos
• Detección de defectos
• Tolerante a defectos
•Determinista
5
Requisitos de un lenguaje para SC
• Robusto
• Redundante
• Concurrente
• Facilidad para verificarlo (análisis estático y dinámico)
• Mantenibilidad
• Entorno de programación
6
Capaz de implementar las características de los SC
Lenguajes de programación
Haskell
Erlang(Ericsson
LANGuage)
SPARK(SPADE
ADA Kernel)
ADA (Advanced
Data Analysis)
C/C++
Eiffel
MISRA C+
+
7
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
8
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
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;
10
Lenguajes de programación
ADA
• Herramientas de análisis y simple
• Comprueba propiedades complejas de su código
• Herramientas interactivas durante el desarrollo
• Ejecutar análisis en programas incompletos
11
Lenguajes de programación
SPARK
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
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;
13
Lenguajes de programación
SPARK
•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
14
Lenguajes de programación
Erlang
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
-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").
16
Lenguajes de programación
Erlang
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
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
class HELLO_WORLDcreate makefeature make is do io.put_string ("Hola Mundo!%N") endend
19
Lenguajes de programación
Eiffel
Demo-Comparativa
20
Conclusiones
21
ADA SPARKS Erlang Eiffel
Robusto Mucho Mucho Normal Normal
Redundante Mucho Mucho Mucho Mucho
Concurrente Mucho Mucho Mucho Normal
Verificación Baja Mucho Mucho Mucho
Mantenibilidad
Mucho Mucho Mucho Mucho
Entorno de programación
Mucho Mucho Normal Mucho
Gracias
22