Lenguajes de programación para sistemas críticos (SC)

Slides:



Advertisements
Presentaciones similares
EL PROCESO DE DESARROLLO DEL SOFTWARE
Advertisements

MODELOS ORIENTADOS A OBJETOS
Sistema operativo Componentes de un sistema operativo
CALIDAD EN DESARROLLO DE SOFTWARE
Diseño y Arquitectura sobre productos de software
TOLERANCIA A FALLAS.
INTRODUCCIÓN A JAVA.
Arquitectura Orientada a Servicios (SOA)
INSTITUTO TECNOLOGICO DE MINATITLAN
Diseño orientado al flujo de datos
DSOO - María Eugenia Valencia
Herramientas CASE.
Introducción al software
Tipos de Datos Abstractos Modularidad
Javier López García OBJETIVOS DEL PROYECTO Diseñar una nueva arquitectura para SERVIVOX que le proporcione mayor modularidad y flexibilidad. Reestructurar.
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Presentación del estado del arte
Administración de Procesos de Pruebas
Versión 2004 Enrique Bañuelos Gómez
Noviembre 2010 Ferreyra, Paula Huerta, María de las Nieves
M.S.C. Ivette Hernández Dávila
Requerimientos No Funcionales
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
 El termino OO, significa que el software es organizado como una colección de objetos. Un objeto es un paquete de software que contiene datos y procedimientos.
Criterios de la Orientación a Objetos 1. Método y Lenguaje (proceso de pensamiento y notaciones para analizar y producir software). 2. Implementación y.
Diseño del Software Diseño de datos Diseño arquitectónico
Programación Orientada a Aspectos (POA)
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Lenguajes de programación Web
Programación Orientada a Objetos
1 Diseño Orientado a Objetos Agustín J. González ELO-329: Diseño y Programación Orientados a Objetos 1er. Sem
Metodologías Orientadas a Objetos Maestría de Ingeniería Telemática Universidad del Azuay Sesión 2.
Alma Rosa Colín González. Las aplicaciones distribuidas se han convertido en un aspecto fundamental en los negocios y la industria a nivel mundial. INTRODUCCIÓN.
INTRODUCCIÓN A JAVA. Índice ¿Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales ¿Qué ventajas tengo como desarrollador?
Ingeniería en Sistemas de Información
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
Seminario de Java Programación Orientada a Objetos.
Noviembre 2010 Ferreyra, Paula Huerta, María de las Nieves
Introducción al lenguaje de programación Java
PROYECTO INFORMÁTICO.
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
Unidad ll Equipo 2 Juan Carlos Martínez Ramos
Desarrollo de Software Orientado a Objetos (deficiencias)
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
INTRODUCCION A SISTEMAS OPERATIVOS
El rol de SQA en PIS.
Docente: Lic. M. Alina Vargas García Horario: Lunes 20:05 – 21:25 Miércoles 20:05 – 21:25 Gestión: 2011.
Diseño Arquitectónico
1 5. UNIDADES DE PROGRAMAS. 2 Uso de mecanismos de control de secuencia de: Invocaciones Retornos Entre: PPSP 1 a) I R SP 1 SP 2 b) I R Unidades subordinadas.
UNIVERSIDAD LATINA II. FUNCIONES DEL ADMINISTRADOR.
III. DESARROLLO DE SISTEMAS.. Podemos definir el desarrollo de sistemas informáticos como el proceso mediante el cual el conocimiento humano y el uso.
TIPOS DE PRUEBAS DEL SOFTWARE
Introducción al proceso de verificación y validación.
Tecnologías Cliente / Servidor Capitulo II Richard Jiménez V. clienteserver.wordpress.com.
Gestión de proyectos fin de carrera
REVISION Y AUDITORIA.
Estimación de Puntos de Función
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Diseño Arquitectónico.
INGENIERIA DE SOFTWARE
Programación Orientada a Objetos: CLASES Y OBJETOS
Investigación preliminar  Entender la naturaleza del problema  Definir el alcance y las restricciones o limitaciones del sistema  Identificar los beneficios.
Bases de Datos 1 Universidad Católica de Costa Rica Prof. Daniel Obando.
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
EI, Profesor Ramón Castro Liceaga IV. AREAS DE EVALUACIÓN DE LA AUDITORIA EN INFORMÁTICA. UNIVERSIDAD LATINA (UNILA)
Herencias Conceptos básicos i
Sobre el Proceso Racional Unificado RUP es un proceso para el desarrollo de un proyecto de un software que define claramente quien, cómo, cuándo y qué.
Diccionario/Directorio de Datos
UNIDAD VIII: ADMINISTRACIÓN DE CALIDAD ADMINISTRACIÓN Y GESTIÓN DE LA PRODUCCIÓN DE BIENES Y SERVICIOS 2014.
DLM Transact SQL Sesión I Introducción al SQL Server Uso de las herramientas de consultas del Transact SQL.
Servicios Web-SOA Aula: Fomento 05/06/2006 a 08/05/2006.
Transcripción de la presentación:

Lenguajes de programación para sistemas críticos (SC) 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

¿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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Demo-Comparativa ¿Qué es? Requisitos de un lenguaje Lenguajes de programación Demo-Comparativa Conclusiones

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

Gracias