mei – seiu q1 2012/2013 felipe caicedo daniel yuste

22
MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

Upload: quique-murillo

Post on 28-Jan-2016

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

MEI – SEiU Q1 2012/2013Felipe CaicedoDaniel Yuste

Page 2: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

• ¿Qué es un Sistema Crítico?

• Requisitos de un lenguaje para SC

• Lenguajes de programación para SC

• Demo-Comparativa

• Conclusiones

Contenido

2

Page 3: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

¿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

Page 4: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

Características de un SC

• Seguro (safety)

• Fiable (reliability)

• Protegido

• Redundante

•Estable

4

Page 5: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

Características de un SC

• Prevención y detección de defectos

• Detección de defectos

• Tolerante a defectos

•Determinista

5

Page 6: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

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

Page 7: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

Lenguajes de programación

Haskell

Erlang(Ericsson

LANGuage)

SPARK(SPADE

ADA Kernel)

ADA (Advanced

Data Analysis)

C/C++

Eiffel

MISRA C+

+

7

Page 8: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

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

Page 9: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

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

Page 10: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

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

Page 11: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

• 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

Page 12: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

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

Page 13: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

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

Page 14: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

•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

Page 15: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

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

Page 16: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

-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

Page 17: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

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

Page 18: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

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

Page 19: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

class HELLO_WORLDcreate   makefeature   make is      do         io.put_string ("Hola Mundo!%N")      endend

19

Lenguajes de programación

Eiffel

Page 20: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

Demo-Comparativa

20

Page 21: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

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

Page 22: MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste

Gracias

22