Download Lenguajes de programación
Document related concepts
Transcript
MEI – SEiU Q1 2012/2013 Felipe Caicedo Daniel Yuste Contenido • ¿Qué es un Sistema Crítico? • Requisitos de un lenguaje para SC • Lenguajes de programación para SC • Demo-Comparativa • Conclusiones 2 ¿Qué es un sistema crítico? •Sistema cuyo fallo o mal funcionamiento puede dar lugar a: oDaños: Personales Ambientales oPérdidas •No se puede detener ante un fallo o error del sistema ¿Qué es? Requisitos de un lenguaje Lenguajes de programación DemoComparativa Conclusiones 3 Características de un SC • Seguro (safety) • Fiable (reliability) • Protegido • Redundante •Estable ¿Qué es? Requisitos de un lenguaje Lenguajes de programación DemoComparativa Conclusiones 4 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 DemoComparativa Conclusiones 5 Requisitos de un lenguaje para SC • Facilidad para verificarlo (análisis estático y dinámico) • Robusto • Redundante • Mantenibilidad • Concurrente • Entorno de programación Capaz de implementar las características de los SC ¿Qué es? Requisitos de un lenguaje Lenguajes de programación DemoComparativa Conclusiones 6 Lenguajes de programación SPARK ADA (SPADE ADA Kernel) (Advanced Data Analysis) C/C++ MISRA C++ Erlang Eiffel ¿Qué es? Requisitos de un lenguaje Haskell (Ericsson LANGuage) Lenguajes de programación DemoComparativa Conclusiones 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 ¿Qué es? Requisitos de un lenguaje Lenguajes de programación DemoComparativa Conclusiones 8 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 DemoComparativa Conclusiones 9 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 DemoComparativa Conclusiones 10 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 ¿Qué es? Requisitos de un lenguaje Lenguajes de programación DemoComparativa Conclusiones 11 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 ¿Qué es? Requisitos de un lenguaje Lenguajes de programación DemoComparativa Conclusiones 12 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; ¿Qué es? Requisitos de un lenguaje Lenguajes de programación DemoComparativa Conclusiones 13 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-realtime y de funcionamiento ininterrumpido ¿Qué es? Requisitos de un lenguaje Lenguajes de programación DemoComparativa Conclusiones 14 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 DemoComparativa Conclusiones 15 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 DemoComparativa Conclusiones 16 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 ¿Qué es? Requisitos de un lenguaje Lenguajes de programación DemoComparativa Conclusiones 17 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 DemoComparativa Conclusiones 18 Lenguajes de programación Eiffel class HELLO_WORLD create make feature make is do io.put_string ("Hola Mu ndo!%N") end end ¿Qué es? Requisitos de un lenguaje Lenguajes de programación DemoComparativa Conclusiones 19 Demo-Comparativa ¿Qué es? Requisitos de un lenguaje Lenguajes de programación DemoComparativa Conclusiones 20 Conclusiones 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 ¿Qué es? Requisitos de un lenguaje Lenguajes de programación DemoComparativa Conclusiones 21 Gracias 22