Universal Systems Language ( USL ) es un lenguaje de modelado de sistemas y un método formal para la especificación y diseño de software y otros sistemas complejos. Fue diseñado por Margaret Hamilton basándose en sus experiencias escribiendo software de vuelo para el programa Apollo . [1] El lenguaje se implementa a través del software 001 Tool Suite de Hamilton Technologies, Inc. [2]USL evolucionó de 001AXES, que a su vez evolucionó de AXES, todos los cuales se basan en los axiomas de control de Hamilton. 001 Tool Suite utiliza el concepto preventivo de Development Before the Fact (DBTF) para su proceso de desarrollo del ciclo de vida. DBTF elimina los errores lo antes posible durante el proceso de desarrollo, eliminando la necesidad de buscar errores después de los hechos.
Filosofía
USL se inspiró en el reconocimiento de Hamilton de patrones o categorías de errores que ocurren durante el desarrollo del software Apollo. Los errores en las interfaces entre los límites de los subsistemas representaron la mayoría de los errores y, a menudo, fueron los más sutiles y difíciles de encontrar. Cada error de interfaz se colocó en una categoría que identificaba los medios para prevenirlo mediante la definición del sistema. Este proceso condujo a un conjunto de seis axiomas, que formaron la base de una teoría matemática lógica constructiva de control para diseñar sistemas que eliminaría clases enteras de errores simplemente por la forma en que se define un sistema. [3] [4]
Ciertas garantías de corrección están integradas en la gramática de la USL. En contraste con los enfoques reactivos para la verificación de programas, la prueba de errores al final del ciclo de vida, la filosofía de desarrollo antes de los hechos de USL es preventiva y no permite errores en primer lugar. Una definición de USL modela tanto su aplicación (por ejemplo, un sistema de aviónica o bancario) como las propiedades del control en su propio ciclo de vida. [5] Proporcionando un marco matemático dentro del cual los objetos, sus interacciones y sus relaciones pueden ser capturados, USL - un metalenguaje - tiene "metamecanismos" para definir sistemas. La filosofía de USL es que todos los objetos son reutilizables y fiables de forma recursiva; los sistemas confiables se definen en términos de sistemas confiables; solo se utilizan sistemas fiables como bloques de construcción; y solo se utilizan sistemas confiables como mecanismos para integrar estos bloques de construcción para formar un nuevo sistema. Luego, los diseñadores pueden usar el nuevo sistema, junto con otros más primitivos, para definir (y construir) sistemas confiables más completos. Si un sistema es confiable, todos los objetos en todos sus niveles y capas son confiables.
Algunos usuarios consideran que la USL es más fácil de usar que otros sistemas formales. [6] No es solo un formalismo para software, sino que también define ontologías para elementos comunes de dominios de problemas, como el espacio físico y el tiempo de eventos.
Formalismo para una teoría del control
Una filosofía sistemas formalismo para la representación de la lógica del control de los sistemas, USL se basa en un conjunto de axiomas de una teoría general de control de sistemas con reglas formales para su aplicación. En la base de cada sistema de USL hay un conjunto de seis axiomas y la suposición de un conjunto universal de objetos. [7] [8] Los axiomas proporcionan la base formal para una "jerarquía" de USL, conocida como mapa, que es un árbol de control que abarca redes de relaciones entre objetos. Las reglas explícitas para definir un mapa se han derivado de los axiomas, donde, entre otras cosas, se capturan la estructura, el comportamiento y su integración. Cada axioma define una relación de dominio inmediato de un padre sobre sus hijos. La unión de estas relaciones es control. Entre otras cosas, los axiomas establecen las relaciones de un objeto para la invocación en tiempo y espacio, entrada y salida (dominio y codominio), derechos de acceso de entrada y derechos de acceso de salida (derechos de acceso de dominio y derechos de acceso de codominio), detección y recuperación de errores, y ordenación durante sus estados operativos y de desarrollo. Cada sistema puede definirse en última instancia en términos de tres estructuras de control primitivas, cada una de las cuales se deriva de los seis axiomas, lo que da como resultado una semántica universal para definir sistemas.
Todas las representaciones de un sistema se definen en términos de un mapa de funciones (FMap) y un mapa de tipos (TMap). Con USL, todas las funciones de un sistema y sus relaciones se definen con un conjunto de FMaps. De manera similar, todos los tipos de un sistema y sus relaciones se definen con un conjunto de TMaps. Los FMaps representan el mundo de acción dinámico (en acción) al capturar características funcionales y temporales (incluida la prioridad). Los TMaps representan el mundo estático (ser) de los objetos al capturar características espaciales, por ejemplo, la contención de un objeto por otro o las relaciones entre las ubicaciones de los objetos en el espacio. Los FMaps están integrados de forma inherente con TMaps. Tres estructuras primitivas universales derivadas del conjunto de axiomas y estructuras no primitivas derivadas en última instancia en términos de las estructuras primitivas especifican cada mapa. Las estructuras primitivas son universales en el sentido de que pueden utilizarse para derivar nuevas estructuras, funciones o tipos universales abstractos. El proceso de derivar nuevos objetos (es decir, estructuras, tipos y funciones) es equivalente al proceso de derivar nuevos tipos en una teoría de tipos constructiva. Las funciones primitivas, correspondientes a operaciones primitivas sobre tipos definidos en un TMap, residen en los nodos inferiores de un FMap. Los tipos primitivos, cada uno definido por su propio conjunto de axiomas, residen en los nodos inferiores de un TMap. Cada función primitiva (o tipo) se puede realizar como un nodo superior de un mapa en una capa inferior (más concreta) del sistema. Residente en cada nodo en un mapa es el mismo tipo de objeto (por ejemplo, una función en cada nodo de un FMap y un tipo en un TMap). El objeto en cada nodo juega múltiples roles; por ejemplo, el objeto puede servir como padre (en control de sus hijos) o como hijo (siendo controlado por su padre). Mientras que cada función en un FMap tiene un mapeo de su entrada a salida (dominio a codominio), cada tipo en un TMap tiene una relación entre su dominio y codominio. Una estructura relaciona a cada padre y sus hijos de acuerdo con el conjunto de reglas derivadas de los axiomas de control. Una estructura primitiva proporciona una relación de la forma más primitiva (grano más fino) de control. Todos los mapas se definen en última instancia en términos de estructuras primitivas y, por lo tanto, cumplen con las reglas asociadas con cada estructura: un padre controla a sus hijos para que tengan una relación dependiente (Unir), independiente (Incluir) o de toma de decisiones (O).
![](http://wikiimg.tojsiabtv.com/wikipedia/commons/3/33/Ucs_rules.png)
Cualquier sistema puede definirse completamente utilizando solo estructuras primitivas, pero las estructuras menos primitivas definidas y derivadas de las estructuras primitivas, y por lo tanto gobernadas por los axiomas de control, aceleran la definición y comprensión de un sistema. La estructura definida, una forma de reutilización similar a una plantilla, proporciona un mecanismo para definir un mapa sin definir explícitamente algunos de sus elementos. Una estructura FMap tiene marcadores de posición para funciones variables; una estructura TMap tiene marcadores de posición para tipos de variables; una estructura universal tiene marcadores de posición para funciones o tipos. Async es un ejemplo de una estructura FMap de comunicación distribuida en tiempo real con comportamiento asíncrono y síncrono. Un ejemplo de una estructura TMap es TreeOf, una colección del mismo tipo de objetos ordenados usando un sistema de indexación de árboles. Cada estructura TMap asume su propio conjunto de posibles relaciones para sus tipos padre e hijo. Los tipos abstractos descompuestos con la misma estructura de TMap heredan las mismas operaciones primitivas y, por lo tanto, el mismo comportamiento (cada una de las cuales está disponible para FMaps que tienen acceso a miembros de cada uno de sus tipos de TMap).
Implementación
El proceso de desarrollo de un sistema de software con USL junto con su automatización, el 001 Tool Suite (001), es el siguiente: definir el sistema con USL, analizar automáticamente la definición con el analizador de 001 para asegurarse de que la USL se utilizó correctamente, generar automáticamente mucho del diseño y todo el código de implementación con el generador de 001. [9] [10] [11] [12] La USL se puede utilizar para brindar su apoyo formal a otros idiomas. [13]
Ver también
Referencias
- ^ M. Hamilton y W. R. Hackler, " Lenguaje de sistemas universales: lecciones aprendidas de Apollo ", IEEE Computer, diciembre de 2008.
- ^ 001 Conjunto de herramientas (1986-2020)
- ^ Margaret H. Hamilton, Hamilton Technologies (27 de septiembre de 2012). " " Lenguaje de sistemas universales y su automatización, el conjunto de herramientas 001, para el diseño y la construcción de sistemas y software "Serie de seminarios web de Lockheed Martin / IEEE Computer Society" .
- ^ Hamilton, Margaret H. (2018). "Lo que nos dicen los errores" . Software IEEE . 35 (5): 32–37. doi : 10.1109 / MS.2018.290110447 . ISSN 0740-7459 . S2CID 52896962 .
- ^ Dolha, Steve, Chiste, Dave, "Un sistema de consulta remota para la Web: gestión del desarrollo de sistemas distribuidos". Capítulo 32, Gestión de Internet, Editora Jessica Keyes, Auerbach, 2000.
- ^ Krut, Jr., B., " Integración del soporte de la herramienta 001 en la metodología de análisis de dominio orientado a características " (CMU / SEI-93-TR-11, ESC-TR-93-188), Pittsburgh, SEI, Carnegie Mellon University 1993.
- ^ Hamilton, M. , " Inside Development Before the Fact" , artículo de portada, Suplemento editorial especial, 8ES-24ES. Electronic Design, abril de 1994.
- ^ Hamilton, M. , " 001: INGENIERÍA DE SISTEMAS DE CICLO DE VIDA COMPLETO Y ENTORNO DE DESARROLLO DE SOFTWARE Desarrollo antes del hecho en acción" , artículo de portada, Suplemento editorial especial, 8ES-24ES. Electronic Design, abril de 1994.
- ^ Ouyang, M., Golay, MW 1995, Un enfoque formal integrado para desarrollar software de alta calidad de sistemas críticos para la seguridad , Instituto de tecnología de Massachusetts, Cambridge, Massachusetts, Informe nº MIT-ANP-TR-035.
- ^ Consorcio de productividad de software, (SPC) (1998), Encuesta sobre herramientas y métodos orientados a objetos , Herndon, VA.SPC-98022-MC, versión 02.00.02, diciembre de 1998.
- ^ Max Schindler (1990) Diseño de software asistido por computadora , John Wiley & Sons, 1990.
- ^ * Departamento de Defensa (1992). Experimento de herramientas de ingeniería de software-Informe final , vol. 1, Resumen del experimento, Tabla 1, p. 9. Iniciativa de defensa estratégica, Washington, DC
- ^ Hamilton, M. Hackler, WR, " Una semántica de sistemas universales formales para SysML , XVII Simposio Internacional Anual, INCOSE 2007, San Diego, CA, junio de 2007.
Otras lecturas
- Hamilton, M., Zeldin, S. (1976), "Software de orden superior: una metodología para definir el software", IEEE Transactions on Software Engineering, vol. SE-2, no. 1 de marzo de 1976.
- Hamilton, M. (abril de 1994). "Desarrollo interior antes del hecho" . (Artículo de portada). Suplemento editorial especial. 8ES-24ES. Diseño Electrónico .
- Hamilton, M. (junio de 1994). "001: Un entorno de desarrollo de software e ingeniería de sistemas de ciclo de vida completo" . (Artículo de portada). Suplemento editorial especial. 22ES-30ES. Diseño Electrónico .
- Hamilton, M., Hackler, WR. (2004), Principios comunes de la arquitectura de software de la Unidad de navegación de orientación profundamente integrada (DI-GNU) (revisada el 29 de diciembre de 2004), DAAAE30-02-D-1020 y DAAB07-98-D-H502 / 0180, Picatinny Arsenal, NJ, 2003-2004.
- Hamilton, M. y Hackler, WR (2007), " Lenguaje de sistemas universales para la ingeniería de sistemas preventivos ", Proc. 5th Ann. Conf. Ing. De Sistemas Res. (CSER), Stevens Institute of Technology, marzo de 2007, artículo 36.
- Hamilton, M .; Hackler, WR (2007). " Una semántica de sistemas universales formales para SysML ". 17 ° Simposio Internacional Anual, INCOSE 2007, San Diego, CA, junio de 2007.
enlaces externos
- Hamilton Technologies