Especificación de la interfaz semántica de Ada
La especificación de interfaz semántica de Ada (en inglés: Ada Semantic Interface Specification: ASIS) es una arquitectura abierta en capas la cual proporciona acceso independiente al proveedor para el Entorno de Librerías de Ada. Permite el análisis estático de programas y librerías de Ada. Es una interfaz de librerías abierta que consiste en el entorno Ada y sus herramientas y aplicaciones.
Desarrollador(es) | Abogados de idiomas, Ada Lovelace |
---|---|
Plataforma(s) de destino | Aplicaciones del lenguaje de programación Ada y análisis estático |
Estado | Activo |
Licencia | Propiedad |
Como explica el Grupo de Trabajo de ASIS[1]:
“ASIS es una interfaz que se encuentra situada entre un entorno Ada, como lo define ISO/IEC 8652:1995 (el Manual de Referencia de Ada), y cualquier herramienta que requiera información de este entorno” (SIGAda, 2020)
Se utiliza de forma exclusiva para aplicaciones de lenguajes de programación y análisis estático en programas de Ada, por lo que proporciona información relevante y acceso a la ingeniería de software asistida por ordenador (CASE) y a desarrolladores aplicables. ASIS también tiene la capacidad de hacer uso de las herramientas de ingeniería de software relevantes, al mismo tiempo que incorpora una fácil comprensión de las complejidades de la visualización del entorno de Ada. Además, proporciona procedimientos, funciones e información relevante que se puede usar de modo significativo para acceder a la información exclusiva que se encuentra en los manuales de referencias y en el Árbol de Sintaxis Abstracta (AST). Esto hará que a cambio pueda avanzar ASIS a que pueda ser accesible para transportar y retener tanto información como terminología de las herramientas de Ada.[2]
“ASIS está formado por 21 paquetes, 2 son opcionales y dentro de estos paquetes se definen 349 consultas”.[3] ASIS también consistirá en un paquete en el cual se incluye paquetes secundarios que incluyen "unidades de compilación de errores, entornos de Ada, implementaciones, excepciones, elementos, iteradores, declaraciones, expresiones, cláusulas, definiciones, declaraciones, textos e Ids".[4]
En general, ASIS es simplemente una forma sencilla de recopilar datos de un programa ADA e incrementar la portabilidad de cualquier herramienta de Ada.
Características de ASIS
editarLa especificación de la interfaz semántica de Ada, según el Manual de Referencia ISO/IEC 8652 Ada 95 (Ada Language Referencing Manual, 1994), se define como una interfaz situada entre un entorno de Aria y otras herramientas las cuales requieren información del entorno de Aria.
Las características de las herramientas que se basan en ASIS pueden incluir:[5]
- análisis de código de alta calidad
- monitores de código automatizados
- navegadores
- herramientas de árbol de llamadas
- reformadores de código
- herramientas de cumplimiento de estándares de codificación
- verificadores de corrección
- depuradores
- herramientas de análisis de árboles de dependencia
- herramientas de diseño
- generadores de documentos
- herramientas de métricas
- herramientas de ingeniería inversa
- herramientas de re-ingeniería
- correctores de estilo
- herramientas de pruebas
- estimadores de tiempo
- traductores
ASIS también proporciona enfoques que se limitan a la información semántica y estructural que hay en las librerías de Ada, y su objetivo es proporcionar y producir información que sea similar, si no del mismo nivel semántico, que la definición de Ada. Esto será muy útil para proporcionar exactamente las mismas definiciones e información que se encuentran en el Manual de Referencia para el Lenguaje de Programación Ada (LRM) a las personas y los clientes interesados (Ehrenfried).
Abstracciones principales
editarEn ASIS, hay 3 abstracciones principales que se encuentran en los tipos 'privados' de Ada. Estos son Context, Compilation_Unit y Element.[6] Y aunque también hay otros tipos de abstracciones involucradas, las 3 mencionadas son las fundamentales.
Context
La abstracción de Contexto de ASIS consiste en las definiciones, términos y condiciones que están disponibles en las consultas de ASIS. Además son utilizados como un método y un identificador lógico para el entorno de Ada.[5]
Compilation_Unit
La Unidad de Compilación también consiste en un identificador lógico para el entorno de Ada. Además, esta abstracción define las propiedades y características que se verán más adelante en el Manual de referencia de Ada. Hace uso la implementación del lenguaje de programación de Ada para transmitir unidades de compilación a través de ASIS. Como dijo Adacore:
"Una Compilation_Unit
de ASIS proporciona la vista de 'caja negra' de una Unidad de Compilación, considerandose la unidad como el todo. Puede descomponerse en Element
de ASIS para analizarse como una 'caja blanca' ". [5]
Los ejemplos de estas propiedades dadas pueden incluir:
- Hora de la última actualización
- Nombre del objeto que contiene el texto fuente de la unidad
Element
De forma similar, la abstracción de Elementos también es un identificador lógico para la unidad de compilación mencionada anteriormente, esto puede ser explícito o implícito.
Estructura de ASIS
editarLa estructura de la aplicación de ASIS se puede clasificar en 3 categorías; Configuración del análisis de ASIS, las Unidades de Compilación de los Procesos y el Análisis Completo de ASIS. Esta estructura está para ayudar a dar soporte a varios programas de análisis de código que aparecen en el lenguaje de programación Ada.[4]
Configuración del análisis de ASIS
editarEl primer paso para la estructura del análisis de ASIS es poder configurarlos de forma. Durante este paso, se inicializan y establecen varias tareas y programas. Por ejemplo, como lo identificó William Colket (1999), este paso ocurre cuando el programa de ASIS inicializa ASIS, estableciendo el contexto de ASIS y el objeto de estado, asociando el contexto de ASIS con el análisis, abre el contexto de ASIS y realizando cualquier preprocesamiento necesario para el soporte del análisis de ASIS. El primer paso generalmente es poner en marcha el análisis de ASIS y estar listo para el uso eficiente y efectivo.
Unidades de compilación de procesos
editarLuego, a la configuración le sucede "unidades de compilación de procesamiento", y durante este tiempo los elementos se muestrean y analizan para encajar en el contexto de ASIS, el cual que fue abierto y asociado al comienzo de la estructura de ASIS. A lo largo de este paso, se procesa principalmente la mayoría de los elementos de la aplicación de ASIS en correlación con el contexto de ASIS, también tiene la capacidad adicional de realizar unidades de compilación antes y después de que se haya realizado el procesamiento.
Análisis completo de ASIS
editarLa última fase de la estructura de ASIS es la finalización del análisis de ASIS. Aquí es donde todo se finaliza y revisa para realizar cualquier post-procesamiento del análisis de ASIS. El contexto de ASIS también se cierra y se desasocia y ASIS finalmente se finaliza.
Criterio de diseño
editarA medida que ASIS continúa evolucionando, también lo hacen sus criterios de diseño. Los criterios sobre cómo se puede diseñar ASIS se pueden clasificar en 9 categorías diferentes; amplia aceptación, transportabilidad, uniformidad y cohesión, implementabilidad, estado de la tecnología, extensibilidad, terminología y estilo de ADA, rendimiento y conjunto mínimo de interfaces.[7]
1. Amplia aceptación
editarDebe estar diseñado de acuerdo con este criterio para que se pueda utilizar una amplia variedad de herramientas para ASIS. Diseñarlo de este modo permite que las librerías de interfaces sean más flexibles y estén disponibles para herramientas en otras plataformas, implementaciones de proveedores de Ada. También permite reducir el tiempo de formación de los usuarios y desarrolladores de la herramienta.
2. Transportabilidad
editarASIS también debe estar diseñado para que sea capaz de transferirse de una computadora a otra computadora o de un entorno a otro.
3. Uniformidad y cohesión
editarASIS también debe ser consistente en sus propiedades, sus conceptos, tipos y operaciones, pero también debe poder mantenerse como una operación simple y coherente.
ASIS también es conocido por ser "implementable por cualquier Proveedor de Compiladores de Ada con un esfuerzo razonable".[5] Además de ser capaz de mantener la coherencia a lo largo de todo el programa.
5. Estado de la tecnología
editarEl estado de la tecnología siempre debe estar actualizado y avanzado para asegurar que no haya ningún problema. Además, se debe asegurar que todas las variaciones y versiones posibles de ASIS sean coherentes y eficientes.
"No se deberían impedir las extensiones que hagan uso del modelo de diseño y las abstracciones de ASIS".[5]
7. Terminología y estilo de Ada
editarASIS también tiene que adaptarse a los términos y condiciones de estilo y definiciones del Manual de Referencia de Ada.
8. Rendimiento
editar"El diseño de ASIS debe permitir la eficiencia tanto desde el punto de vista del cliente como desde el punto de vista de la implementación" [5]
9. Conjunto mínimo de interfaces
editar"Debería permitirse a los clientes implementar interfaces en capas adicionales haciendo uso de las operaciones primitivas proporcionadas".
Usos de ASIS
editarASIS para GNAT
editarASIS fue usado por Adacore para la implementación de un estándar de ASIS para el uso de aplicaciones de ASIS para GNAT. ASIS se puede utilizar para GNAT mediante aplicaciones típicas como: "Análisis estático (verificación de propiedad), Instrumentación de código, Herramientas de diseño y generación de documentos, Herramientas de prueba de métricas o de tiempo, Herramientas de análisis de Árbol de Dependencia, Generadores de diccionarios de tipos, Herramientas de aplicación de estándares de codificación, Traductores de lenguajes, Herramientas de evaluación de calidad, Navegadores de código fuente y Formateadores y Rditores dirigidos por la sintaxis” (ASIS para GNAT).
Esta metodología también se ha utilizado para desarrollar numerosas herramientas con la ayuda de ASIS, en las que se incluye:
- gnatelim
- gnatstub
- gnatcheck
- gnatpp
- gnatmetric
ASIS como aislante
editarPace Drury (1999) hizo uso de ASIS para crear un código para su proyecto llamado 'SIDPERS-3' en el cual el código se usa para identificar detalles y variaciones vistas en el Commercial Off the Shelf (COTS) generados mediante la interacción de la base de datos. Drury también hizo uso de ASIS para su propio proyecto en el que ASIS creó una nueva capa de código de Ada que pudo aislar con éxito al desarrollador de software de las mismas especificaciones del código generado de Ada.[8]
Tras haber escrito un código tan complicado denominado 'generate_db_support_code', el cual consistía principalmente en código de Ada, su objetivo fue abrir 2 ficheros, examinar sus contenidos y crear dos ficheros nuevos basados en los 2 anteriores. ASIS fue usado para examinar la estructura del código de forma eficiente, facilitando así el almacenamiento y el enlace a una lista que contenga el lenguaje de Ada. ASIS completa de forma coherente lo que se le pide y obtiene con éxito un acceso constante y seguro a la información de la base de datos que satisface las necesidades del proyecto.
AdaControl
editarAdaControl es una herramienta gratuita (GMGPL) que detecta el uso de varios tipos de construcciones en los programas de Ada. Sus usos incluyen la comprobación de los estándares de codificación, la exploración del uso de las funciones de Ada, la creación de estadísticas y más. Aprovecha todo el poder de ASIS y se puede considerar como la aplicación de ASIS más típica.
Referencias
editar- ↑ «ASIS Working Group (ASISWG) ASIS Rapporteur Group (ASISRG)» (en inglés). Consultado el 4 de mayo de 2023.
- ↑ Sward, Ricky E.; Chamillard, A. T. (2004). «Re-engineering global variables in Ada». Proceedings of the 2004 Annual ACM SIGAda International Conference on Ada the Engineering of Correct and Reliable Software for Real-time & Distributed Systems Using Ada and Related Technologies - SIGAda '04 (en inglés) (Atlanta, Georgia, USA: ACM Press) XXIV (4): 29-34. ISBN 978-1-58113-906-8. doi:10.1145/1032297.1032303.
- ↑ Strohmeier, Alfred; Fofanov, Vasiliy; Rybin, Sergey; Barbey, Stéphane (1998). «Quality-for-ASIS: A portable testing facility for ASIS». En Asplund, Lars, ed. Reliable Software Technologies — Ada-Europe. Lecture Notes in Computer Science (en inglés) (Berlin, Heidelberg: Springer) 1411: 163-175. ISBN 978-3-540-69802-9. doi:10.1007/BFb0055003.
- ↑ a b Colket, William Currie (September 1999). «Code analysis of saftey-critical [sic] and real-time software using ASIS». ACM SIGAda Ada Letters (en inglés) XIX (3): 67-76. ISSN 1094-3641. doi:10.1145/319295.319306.
- ↑ a b c d e f et.al
- ↑ «4. ASIS Overview — ASIS-for-GNAT User's Guide 22.0w documentation». docs.adacore.com. Consultado el 20 de noviembre de 2020.
- ↑ Bladen, James B.; Spenhoff, David; Blake, Steven J. (1991). «Ada semantic interface specification (ASIS)». Proceedings of the Conference on TRI-Ada '91 Today's Accomplishments; Tomorrow's Expectations - TRI-Ada '91 (New York, New York, USA: ACM Press): 6-15. ISBN 0-89791-445-7. doi:10.1145/126551.126552.
- ↑ Drury, Pace (March 1999). «Using ASIS for data base insulation». ACM SIGAda Ada Letters (en inglés) XIX (1): 64-65. ISSN 1094-3641. doi:10.1145/311457.311486.
Adicional
editar- ISO/IEC 15291: Tecnología de la información. Lenguajes de programación. Especificación de interfaz semántica de Ada (ASIS)
- Manual de referencia del lenguaje Ada. Versión 6.0 21 de diciembre de 1994. Copyright (C) 1992, 1993, 1994, 1995 Intermetrics, Inc.
- Especificación ASIS 2.0