mei – seiu q1 2012/2013 felipe caicedo daniel yuste

Post on 28-Jan-2016

221 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related