Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porQuique Murillo Modificado hace 9 años
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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.