Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Ada Semantic Interface Specification
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Interface}} {{primary sources|date=October 2011}} {{wiktionarypar|ASIS}} {{Infobox software platform | name = Ada Semantic Interface Specification (ASIS) | icon = | image = | caption = | developer = <!--organizations that were involved in development, newest first--> Language Lawyers, Ada Lovelace | target = <!--operating systems that the platform publishes applications/content for--> Ada Programming Language Applications and Static Analysis | editor = <!--editor software for the platform--> | runtime = <!--runtime/player software for the platform--> | format = <!--major file formats on the platform--> | language = <!--programming languages used to build content on the platform--> | application = <!--major applications for content developed on the platform--> | status = <!--Planned, Active, Unmaintained, Discontinued, Stalled or Abandonware--> Active | license = <!--Freeware, Shareware, Proprietary, Open-source, etc--> Proprietary }} The '''[[Ada (programming language)|Ada]] Semantic Interface Specification''' ('''ASIS''') is a layered, open architecture providing vendor-independent access to the [[Ada programming language|Ada]] Library Environment. It allows for the [[static analysis]] of Ada programs and libraries. It is an open, published interface library that consists of the Ada environment and their tools and applications. As explained by the [https://www.sigada.org/WG/asiswg/ ASIS Working Group]: ''“ASIS is an interface between an Ada environment as defined by ISO/IEC 8652:1995 (the Ada Reference Manual) and any tool requiring information from this environment”'' (SIGAda, 2020) It is exclusively used for programming language applications and static analysis on Ada programs, therefore giving the relevant information and access to Computer-aided software engineering (CASE) and applicable developers. ASIS also has the ability in utilizing the relevant software engineering tools whilst also embodying an easy understanding of the complexities of an Ada environment display. In addition, it provides procedures, functions and relevant information that can be significantly used to access exclusive information found in reference manuals and the Abstract Syntax Tree (AST). Which in return will advance ASIS to the capability of being portable to transport and retain information and terminology of Ada tools.<ref>{{Cite book|last1=Sward|first1=Ricky E.|last2=Chamillard|first2=A. T.|title=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 |chapter=Re-engineering global variables in Ada |date=2004|chapter-url=http://portal.acm.org/citation.cfm?doid=1032297.1032303|volume=XXIV|issue=4|language=en|location=Atlanta, Georgia, USA|publisher=ACM Press|pages=29–34|doi=10.1145/1032297.1032303|isbn=978-1-58113-906-8|s2cid=31415676 }}</ref> “ASIS consists of 21 packages, 2 are optional and within these packages define 349 queries”.<ref>{{Cite book|last1=Strohmeier|first1=Alfred|last2=Fofanov|first2=Vasiliy|last3=Rybin|first3=Sergey|last4=Barbey|first4=Stéphane|title=Reliable Software Technologies — Ada-Europe |chapter=Quality-for-ASIS: A portable testing facility for ASIS |date=1998|editor-last=Asplund|editor-first=Lars|chapter-url=https://link.springer.com/chapter/10.1007%2FBFb0055003|series=Lecture Notes in Computer Science|volume=1411|language=en|location=Berlin, Heidelberg|publisher=Springer|pages=163–175|doi=10.1007/BFb0055003|isbn=978-3-540-69802-9}}</ref> ASIS will also consist of a package which within it includes child packages that include “Errors Compilation units, Ada environments, implementation, exceptions, elements, iterator, declarations, expressions, clauses, definitions, statements, text and Ids”.<ref name="Colket 67–76">{{Cite journal|last=Colket|first=William Currie|date=September 1999|title=Code analysis of saftey-critical [sic] and real-time software using ASIS|journal=ACM SIGAda Ada Letters|language=en|volume=XIX|issue=3|pages=67–76|doi=10.1145/319295.319306|issn=1094-3641|doi-access=free}}</ref> Overall ASIS is simply a straightforward way to collect data from an ADA program and increases any of the Ada tools portability.[[File:Ada Programming.pdf|thumb|Ada Programming/All Chapters. Vol.1 of 3 volume set. The basis of ASIS]] == Features of ASIS == Ada Semantic Interphase Specification under the ISO/IEC 8652 Ada 95 Reference Manual (Ada Language Referencing Manual, 1994) is defined as an interface amidst an Aria environment and other tools requiring information from the Aria environment. Features of ASIS based tools could include:<ref name=":0"/> * high quality code analysis * automated code monitors * browsers * call tree tools * code reformators * coding standards compliance tools * correctness verifiers * [[debugger]]s * dependency tree analysis tools * design tools * document generators * metrics tools * [[reverse engineering]] tools * re-engineering tools * style checkers * test tools * timing estimators * translators ASIS also provides limited approaches to the structural and semantic information that are found in the Ada library, it aims to provide and produce information that is similar if not exactly the same semantic level as the definition of Ada. This will greatly assist in providing the exact same definitions and information of the Reference Manual for the Ada Programming Language (LRM) to interested individuals and clients (Ehrenfried). ===Main abstractions=== In ASIS, there are 3 main [[abstraction]]s that exist in the Ada 'private' types. This consists of Context, Compilation_Unit and Element.<ref>{{Cite web|title=4. ASIS Overview — ASIS-for-GNAT User's Guide 22.0w documentation|url=https://docs.adacore.com/asis-docs/html/asis_ug/asis_ug/asis_overview.html#main-asis-abstractions|access-date=2020-11-20|website=docs.adacore.com}}</ref> While there are additional types of abstractions also involved but the 3 mentioned are the fundamentals. <syntaxhighlight lang="ada"> Context </syntaxhighlight>The Context abstraction of ASIS consists of the definitions, terms and conditions that are available in ASIS enquiries. It is also used as a way and logical handle for the Ada environment.<ref name=":0"/><syntaxhighlight lang="ada"> Compilation_Unit </syntaxhighlight>The Compilation Unit is also a logical handle for the Ada environment. This abstraction also defines the properties and characteristics which are further seen in the [http://ada-auth.org/standards/ada12.html Ada Reference Manual]. It uses Ada's programming language implementation to convey compilation units through ASIS. As said by Adacore; ''"An ASIS <code>Compilation_Unit</code> provides the ‘black-box’ view of a compilation unit, considering the unit as a whole. It may be decomposed into ASIS <code>Element</code>and then analyzed in ‘white-box’ fashion."''<ref name=":0"/> Examplies of these properties given can include: # Time of last update # Name of object containing unit's source text <syntaxhighlight lang="ada"> Element </syntaxhighlight>Comparably the Element abstraction is also a logical handle to the Compilation Unit discussed above, this can either be explicit or implicit. == Structure of ASIS == The ASIS application structure can be categorized into 3 categories; Setup ASIS Analysis, Process Compilation Units and Complete ASIS Analysis. This structure is to help in supporting various code analysis programs that appear in the Ada programming language.<ref name="Colket 67–76"/> === Setup ASIS analysis === The first step to the structure of ASIS analysis is to set it up efficiently. During this step, various tasks and programs are initialised and established. For example, as identified by William Colket (1999), this step is when the ASIS program initializes ASIS, establishes ASIS context and state object, associates the ASIS Context with the analysis, opens the ASIS context, and performs any pre-processing needed to support the ASIS analysis. The first step is generally to get the ASIS analysis up and running and be ready to use efficiently and effectively. === Process compilation units === The setup is then followed by "processing [[compilation unit]]s", during this time is when elements are sampled and analysed to fit into the ASIS Context that had been opened and associated with at the beginning of the ASIS structure. During this step, it mainly processes most of the ASIS application elements in correlation with the ASIS context, it also has the added capability to perform compilation units before and after processing has been done. === Complete ASIS analysis === The last and final stage of the ASIS structure is the completion of ASIS analysis. This is where everything is finalised and reviewed to perform any post processing to the ASIS analysis. The ASIS context is also closed and disassociated and ASIS is eventually finalised. === Design criteria === As ASIS continues to evolve similarly so does the evolution of its design criteria. The criteria for how ASIS can be designed can be sorted into 9 different categories; wide acceptance, transportability, uniformity and cohesiveness, implementability, state of technology, extensibility, ada terminology and style, performance and minimal set of interfaces.<ref>{{Cite book|last1=Bladen|first1=James B.|last2=Spenhoff|first2=David|last3=Blake|first3=Steven J.|title=Proceedings of the conference on TRI-Ada '91 today's accomplishments; tomorrow's expectations - TRI-Ada '91 |chapter=Ada semantic interface specification (ASIS) |date=1991|chapter-url=https://dl-acm-org.ezproxy1.library.usyd.edu.au/doi/pdf/10.1145/126551.126552|pages=6–15|location=New York, New York, USA|publisher=ACM Press|doi=10.1145/126551.126552|isbn=0-89791-445-7|s2cid=19422485 }}</ref> ==== 1. Wide acceptance ==== It must be designed according to this criterion so that a wide variety of tools can be used for ASIS. Designing it with this allows the interface library to be more flexible and available for tools across other platforms, Ada vendor implementations. It also allows for it to reduce training time for tool users and developers. ==== 2. Transportability ==== ASIS must also be designed so it has the capability to be transferred from one computer to another computer or another environment to another. ==== 3. Uniformity and cohesiveness ==== It should also be consistent in properties, concepts, types and operations but also be kept as a simple and coherent operation. ==== 4. [[Implementation|Implementability]] ==== ASIS is also criticised so that it is "implementable by any Ada Compiler Vendor with a reasonable effort".<ref name=":0"/> As well as maintaining consistency throughout the whole program. ==== 5. State of technology ==== The state of technology must always be updated and advanced to ensure no issues take place. Additionally, it should be ensured that all possible variations and versions of ASIS will be coherent and efficient. ==== 6. [[Extensibility]] ==== "It should not preclude extensions that will make use of the ASIS design model and abstractions."<ref name=":0">et.al</ref> ==== 7. Ada terminology and style ==== ASIS should also adapt to the terms and conditions of style and definitions to the Ada Reference Manual. ==== 8. Performance ==== "ASIS design must allow for efficiency from both the client view and implementation view"<ref name=":0" /> ==== 9. Minimal set of interfaces ==== "It should allow clients to implement additional layered interfaces using the primitive operations provided." == Uses of ASIS == === ASIS for GNAT === ASIS has been used by Adacore to implement an ASIS standard in the utilisation of ASIS-for-GNAT applications. ASIS can be used for GNAT through typical applications such as: “Static Analysis (property verification), Code instrumentation, Design and document generation tools, Metric testing or timing tools, Dependency Tree Analysis Tools, Type Dictionary Generators, Coding standards Enforcement Tools, Language Translators, Quality Assessment Tools, Source Browsers and Formatters and Syntax Directed Editors” (ASIS for GNAT). This methodology has also been used to develop numerous tools with the assistance of ASIS including; # gnatelim # gnatstub # gnatcheck # gnatpp # gnatmetric. === ASIS as insulator === Pace Drury (1999) utilises ASIS to create a code for his project named ‘SIDPERS-3’ where the code is used to identify intimate details and variations seen in Commercial Off the Shelf (COTS) generated from data base interaction Drury used ASIS for his project where ASIS created a new layer of Ada code which successfully insulated the software developer from the same generated Ada code specifics.<ref>{{Cite journal|last=Drury|first=Pace|date=March 1999|title=Using ASIS for data base insulation|url=https://dl.acm.org/doi/10.1145/311457.311486|journal=ACM SIGAda Ada Letters|language=en|volume=XIX|issue=1|pages=64–65|doi=10.1145/311457.311486|s2cid=37063586 |issn=1094-3641|url-access=subscription}}</ref> Having written such a difficult code called ‘generate_db_support_code’ which majorly consisted of Ada code, the aim of it were to open 2 files, examine contents and create two new files based on the prior 2 files. ASIS had been used to examine the structure of the code efficiently, making it easier to store and link to a list containing Ada language. ASIS coherently completes what is asked to do and successfully gains constant and secure access to the data base information which meets the project’s needs. === AdaControl === AdaControl is a free (GMGPL) tool that detects the use of various kinds of constructs in Ada programs. Its uses include checking of coding standards, exploring the use of Ada features, making statistics, and more. It exploits all the power of ASIS, and can be considered as the most typical ASIS application. == References == {{Reflist}} === Additional === #''ISO/IEC 15291: Information technology — Programming languages — Ada Semantic Interface Specification (ASIS)'' #Ada Language Reference Manual. Version 6.0 21 December 1994. Copyright (C) 1992, 1993, 1994, 1995 Intermetrics, Inc. # [http://www.sigada.org/WG/asiswg/specs/asis20s.txt ASIS 2.0 specification] == External links == * [https://www.sigada.org/WG/asiswg ASIS Working Group] * [http://ada-auth.org/standards/ada12.html Ada Reference Manual] {{ISO standards}} {{List of International Electrotechnical Commission standards}} [[Category:Programming language standards]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:ISO standards
(
edit
)
Template:Infobox software platform
(
edit
)
Template:List of International Electrotechnical Commission standards
(
edit
)
Template:Primary sources
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Sister project
(
edit
)
Template:Wiktionary
(
edit
)
Template:Wiktionarypar
(
edit
)