La Especificación de Interfaz Semántica de Ada ( ASIS ) es una arquitectura abierta y por capas que proporciona acceso independiente del proveedor al Entorno de Bibliotecas de Ada . Permite el análisis estático de programas y bibliotecas de Ada. Se trata de una biblioteca de interfaz abierta y publicada que comprende el entorno de Ada, sus herramientas y aplicaciones.
Tal y como lo explica el Grupo de Trabajo de ASIS :
“ASIS es una interfaz entre un entorno Ada, tal como se define en la norma ISO/IEC 8652:1995 (el Manual de Referencia de Ada), y cualquier herramienta que requiera información de este entorno” (SIGAda, 2020).
Se utiliza exclusivamente para aplicaciones de lenguajes de programación y análisis estático de programas Ada, proporcionando así la información relevante y acceso a la ingeniería de software asistida por computadora (CASE) y a los desarrolladores correspondientes. ASIS también tiene la capacidad de utilizar las herramientas de ingeniería de software pertinentes, a la vez que facilita la comprensión de las complejidades de la visualización del entorno Ada. Además, proporciona procedimientos, funciones e información relevante que pueden utilizarse para acceder a información exclusiva que se encuentra en manuales de referencia y en el Árbol de Sintaxis Abstracta (AST). Esto, a su vez, permitirá que ASIS sea portátil para transportar y conservar la información y la terminología de las herramientas Ada. [ 1 ]
“ASIS consta de 21 paquetes, 2 son opcionales y dentro de estos paquetes se definen 349 consultas”. [ 2 ] ASIS también constará de un paquete que dentro de él incluye subpaquetes que incluyen “Unidades de compilación de errores, entornos Ada, implementación, excepciones, elementos, iterador, declaraciones, expresiones, cláusulas, definiciones, sentencias, texto e identificadores”. [ 3 ]
En resumen, ASIS es simplemente una forma sencilla de recopilar datos de un programa ADA y aumenta la portabilidad de cualquier herramienta ADA.

Características de ASIS
La especificación de interfaz semántica de Ada, según el manual de referencia ISO/IEC 8652 Ada 95 (Manual de referencia del lenguaje Ada, 1994), se define como una interfaz entre un entorno Aria y otras herramientas que requieren información del entorno Aria.
Las características de las herramientas basadas en ASIS podrían incluir: [ 4 ]
- análisis de código de alta calidad
- monitores de código automatizados
- navegadores
- herramientas de árbol de llamadas
- reformadores de código
- Herramientas para el cumplimiento de los 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 reingeniería
- comprobadores de estilo
- herramientas de prueba
- estimadores de tiempo
- traductores
ASIS también ofrece enfoques limitados a la información estructural y semántica presente en la biblioteca Ada. Su objetivo es proporcionar información con un nivel semántico similar, si no idéntico, al de la definición de Ada. Esto facilitará enormemente el acceso a las mismas definiciones e información que el Manual de Referencia del Lenguaje de Programación Ada (LRM) a las personas y clientes interesados (Ehrenfried).
Abstracciones principales
En ASIS, existen tres abstracciones principales en los tipos privados de Ada: Contexto, Unidad de Compilación y Elemento. [ 5 ] Si bien existen otros tipos de abstracciones, las tres mencionadas son fundamentales.
ContextoLa abstracción de contexto de ASIS consiste en las definiciones, términos y condiciones disponibles en las consultas de ASIS. También se utiliza como una vía y un manejador lógico para el entorno Ada. [ 4 ]
Unidad de compilaciónLa unidad de compilación también es un identificador lógico para el entorno Ada. Esta abstracción también define las propiedades y características que se ven con más detalle en el Manual de Referencia de Ada . Utiliza la implementación del lenguaje de programación de Ada para transmitir unidades de compilación a través de ASIS. Como dice Adacore;
"Un ASIS Compilation_Unitproporciona la vista de 'caja negra' de una unidad de compilación, considerando la unidad como un todo. Puede descomponerse en ASIS Elementy luego analizarse de forma 'de caja blanca'." [ 4 ]
Algunos ejemplos de estas propiedades pueden ser:
- Hora de la última actualización
- Nombre del objeto que contiene el texto fuente de la unidad.
ElementoDe forma similar, la abstracción de Elemento también es un identificador lógico para la Unidad de Compilación mencionada anteriormente, que puede ser explícito o implícito.
Estructura de ASIS
La estructura de la aplicación ASIS se puede clasificar en tres categorías: Configuración del análisis ASIS, Procesamiento de unidades de compilación y Análisis ASIS completo. Esta estructura tiene como objetivo brindar soporte a diversos programas de análisis de código que aparecen en el lenguaje de programación Ada. [ 3 ]
Configurar el análisis ASIS
El primer paso para estructurar el análisis ASIS es configurarlo de manera eficiente. Durante este paso, se inicializan y establecen diversas tareas y programas. Por ejemplo, como lo identifica William Colket (1999), en este paso el programa ASIS se inicializa, establece el contexto y el objeto de estado de ASIS, asocia el contexto de ASIS con el análisis, abre el contexto de ASIS y realiza cualquier preprocesamiento necesario para respaldar el análisis ASIS. En general, el primer paso consiste en poner en marcha el análisis ASIS y prepararlo para su uso eficiente y efectivo.
Unidades de compilación de procesos
A continuación, se procede al procesamiento de las unidades de compilación . Durante este proceso, se muestrean y analizan los elementos para que se ajusten al contexto ASIS que se abrió y asoció al inicio de la estructura ASIS. En esta etapa, se procesan principalmente la mayoría de los elementos de la aplicación ASIS en relación con el contexto ASIS, y además, se pueden realizar unidades de compilación antes y después del procesamiento.
Análisis completo de ASIS
La última etapa de la estructura ASIS es la finalización del análisis ASIS. En esta fase, se finaliza y revisa todo para realizar cualquier procesamiento posterior al análisis ASIS. El contexto ASIS también se cierra y se desvincula, y finalmente se da por concluido el proceso ASIS.
Criterios de diseño
A medida que ASIS continúa evolucionando, también lo hacen sus criterios de diseño. Los criterios para diseñar ASIS se pueden clasificar en nueve categorías diferentes: amplia aceptación, transportabilidad, uniformidad y cohesión, implementabilidad, estado de la tecnología, extensibilidad, terminología y estilo ADA, rendimiento y conjunto mínimo de interfaces. [ 6 ]
1. Amplia aceptación
Debe diseñarse según este criterio para que se pueda utilizar una amplia variedad de herramientas con ASIS. Este diseño permite que la biblioteca de interfaz sea más flexible y compatible con herramientas de otras plataformas e implementaciones de proveedores de Ada. Además, reduce el tiempo de capacitación para usuarios y desarrolladores de herramientas.
2. Transportabilidad
ASIS también debe diseñarse de manera que tenga la capacidad de transferirse de un ordenador a otro o de un entorno a otro.
3. Uniformidad y cohesión
También debe ser consistente en propiedades, conceptos, tipos y operaciones, pero además debe mantenerse como una operación simple y coherente.
ASIS también es criticado porque es "implementable por cualquier proveedor de compiladores Ada con un esfuerzo razonable". [ 4 ] Además de mantener la coherencia en todo el programa.
5. Estado de la tecnología
Es fundamental mantener actualizada y perfeccionar la tecnología para evitar cualquier problema. Además, se debe garantizar que todas las variantes y versiones posibles de ASIS sean coherentes y eficientes.
"Esto no debería excluir extensiones que hagan uso del modelo de diseño y las abstracciones de ASIS." [ 4 ]
7. Terminología y estilo de ADA
ASIS también debería adaptarse a los términos y condiciones de estilo y definiciones del Manual de Referencia de Ada.
8. Rendimiento
"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" [ 4 ]
9. Conjunto mínimo de interfaces
"Debería permitir a los clientes implementar interfaces adicionales por capas utilizando las operaciones primitivas proporcionadas."
Usos de ASIS
ASIS para GNAT
ASIS ha sido utilizado por Adacore para implementar un estándar ASIS en la utilización de aplicaciones ASIS-for-GNAT. ASIS se puede utilizar para GNAT a través de aplicaciones típicas como: "Análisis estático (verificación de propiedades), instrumentación de código, herramientas de diseño y generación de documentos, herramientas de prueba métrica o de temporización, herramientas de análisis de árboles de dependencia, generadores de diccionarios de tipos, herramientas de aplicación de estándares de codificación, traductores de lenguaje, herramientas de evaluación de calidad, navegadores y formateadores de código fuente y editores dirigidos por sintaxis" (ASIS para GNAT).
Esta metodología también se ha utilizado para desarrollar numerosas herramientas con la ayuda de ASIS, entre las que se incluyen:
- gnatelim
- mocasín
- control de mosquitos
- gnatpp
- gnatmétrico.
ASIS como aislante
Pace Drury (1999) utiliza ASIS para crear un código para su proyecto llamado 'SIDPERS-3', donde el código se usa para identificar detalles íntimos y variaciones observadas en el software comercial estándar (COTS) generado a partir de la interacción con la base de datos. Drury usó ASIS para su proyecto, donde ASIS creó una nueva capa de código Ada que aisló con éxito al desarrollador de software de las especificidades del mismo código Ada generado. [ 7 ]
Tras escribir un código complejo llamado «generate_db_support_code», compuesto principalmente por código Ada, el objetivo era abrir dos archivos, analizar su contenido y crear dos nuevos archivos a partir de los dos anteriores. Se utilizó ASIS para analizar la estructura del código de forma eficiente, facilitando así su almacenamiento y vinculación a una lista que contenía código Ada. ASIS completó la tarea de forma coherente y obtuvo un acceso constante y seguro a la información de la base de datos, cumpliendo así con los requisitos del proyecto.
Control de Ada
AdaControl es una herramienta gratuita (GMGPL) que detecta el uso de diversos tipos de construcciones en programas Ada. Entre sus usos se incluyen la verificación de estándares de codificación, el análisis del uso de las características de Ada, la generación de estadísticas y mucho más. Aprovecha al máximo el potencial de ASIS y puede considerarse la aplicación más representativa de ASIS.
Referencias
- ↑ Sward, Ricky E.; Chamillard, AT (2004). "Reingeniería de variables globales en Ada" . Actas de la conferencia internacional anual ACM SIGAda de 2004 sobre Ada: Ingeniería de software correcto y fiable para sistemas distribuidos y en tiempo real utilizando Ada y tecnologías relacionadas . Vol. XXIV. Atlanta, Georgia, EE. UU.: ACM Press. págs. 29–34 . doi : 10.1145/1032297.1032303 . ISBN 978-1-58113-906-8. S2CID 31415676 .
- ↑ Strohmeier, Alfred; Fofanov, Vasiliy; Rybin, Sergey; Barbey, Stéphane (1998). «Quality-for-ASIS: Una plataforma de pruebas portátil para ASIS» . En Asplund, Lars (ed.). Tecnologías de software fiables — Ada-Europe . Lecture Notes in Computer Science. Vol. 1411. Berlín, Heidelberg: Springer. pp. 163–175 . doi : 10.1007/BFb0055003 . ISBN 978-3-540-69802-9.
- 1 2 Colket, William Currie (septiembre de 1999). "Análisis de código de software crítico para la seguridad [ sic ] y en tiempo real utilizando ASIS" . ACM SIGAda Ada Letters . XIX (3): 67–76 . doi : 10.1145/319295.319306 . ISSN 1094-3641 .
- 1 2 3 4 5 6 y otros
- ↑ "4. Descripción general de ASIS — Guía del usuario de ASIS para GNAT 22.0w" . docs.adacore.com . Consultado el 20/11/2020 .
- ↑ Bladen, James B.; Spenhoff, David; Blake, Steven J. (1991). "Especificación de interfaz semántica de Ada (ASIS)" . Actas de la conferencia TRI-Ada '91: logros actuales, expectativas futuras - TRI-Ada '91 . Nueva York, Nueva York, EE. UU.: ACM Press. págs. 6-15 . doi : 10.1145/126551.126552 . ISBN 0-89791-445-7. S2CID 19422485 .
- ↑ Drury, Pace (marzo de 1999). "Uso de ASIS para el aislamiento de bases de datos" . ACM SIGAda Ada Letters . XIX (1): 64–65 . doi : 10.1145/311457.311486 . ISSN 1094-3641 . S2CID 37063586 .
Adicional
- ISO/IEC 15291: Tecnología de la información — Lenguajes de programación — Especificación de la 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
Enlaces externos
- Grupo de trabajo de ASIS
- Manual de referencia de ADA
- estándares de lenguajes de programación