[Up] [SIGAda] [ACM]

ASIS Frequently Asked Questions (FAQ)

ASIS FAQ Version: 13 May 1999

Contents

  • What is ASIS?
  • How Can I Get ASIS Information?
  • What type of Code Analysis Tools can be developed with ASIS?
  • How would a Code Analysis Tool use ASIS?
  • Why Use ASIS to get Information from the Ada Environment?
  • How might an Application use ASIS?
  • How can I get the ISO/IEC ASIS Standard?
  • Where did ASIS originate?
  • Will ASIS work with every Ada Vendor?
  • How do I get involved with ASISWG/ASISRG?

  • What is ASIS?

    The Ada Semantic Interface Specification (ASIS) is an interface between an Ada environment (as defined by ISO/IEC 8652:1995) and any tool or application requiring information from it. An Ada environment includes valuable semantic and syntactic information. ASIS is an open and published callable interface which gives CASE tool and application developers access to this information. ASIS has been designed to be independent of underlying Ada environment implementations, thus supporting portability of software engineering tools while relieving tool developers from needing to understand the complexities of an Ada environment's proprietary internal representation. In short, ASIS can provide the foundation for your code analysis activities.


    How Can I Get ASIS Information?

    All publicly available information is on the ASIS web site. There is a host of information there including tutorials, examples, bibliography, ASIS news, and ASIS products. The ASIS Home Page => http://www.acm.org/sigada/wg/asiswg


    What type of Code Analysis Tools can be developed with ASIS?

    Examples of tools that benefit from the ASIS interface include: code restructuring tools, code browsing and navigation tools, coding style and standards compliance tools, cross-reference tools, data flow analysis tools, dependency tree analysis tools, design tools, document generation tools, invocation (call) tree analysis tools, language- sensitive editing and pretty-printing tools, language translation tools, quality assessment tools, reverse engineering tools, re- engineering tools, safety and security compliance tools, static correctness verifiers, tasking analysis tools, test-case generation and coverage analysis tools, and usage, quality, and complexity metrics tools. In fact most of these have already been developed using the ASIS interfaces by people in Australia, Canada, China, Denmark, France, Germany, Japan, Russia, Sweden, Switzerland, the United Kingdom, and the United States.


    How would a Code Analysis Tool use ASIS?

    For example, ASIS can be used by a metrics tool to evaluate Ada application code. The symbolic name, type, and usage of each object declared can be obtained through the ASIS interface to support the requirements of the metrics tool. Use of the object can be identified by traversal of a logical semantic tree using the ASIS interfaces. ASIS can map objects to their correct declaration and type despite multiple renaming through multiple package chaining. Counts for the numbers of each desired occurrence can then be presented to users of the metrics tool. Examples of commercial tools which use ASIS include: Ada Analyzer by Little Tree Consulting, Adamat by DRC, AdaQuest by GRC, ObjectMaker by Mark V (the first ASIS 95 commercial product - an Ada 83 syntactic parser and semantic analyzer for the graphical representation portion was replaced with ASIS 95 calls; the original effort was approximately 6.5 man-year; the updated version for Ada 95 for STC'97 exhibition took about 1 week), AdaWise by Odyssey Research Associates, and ReEngineer by Loral Defense Systems. ASIS makes it easy to roll-your-own tool to support your own requirements. For example, Boeing and MITRE use ASIS to support their own special needs.


    Why Use ASIS to get Information from the Ada Environment?

    Tools needing syntactic and semantic information would otherwise have to recompute the information from all the source code (which could take a long time and require the semantic analysis of a compiler), fake the information (dangerous when reliable information is needed), or access the information through proprietary interfaces to an implementor's Ada environment (non-portable and breaks when proprietary interfaces change as they frequently do from one release to the next). ASIS provides a highly portable, easy-to-use interface, insulating users from changes in proprietary representations.


    How might an Application use ASIS?

    The Universal Delogger was built using ASIS for an Air Force satellite system called "System 1" to analyze (delog) messages sent from the satellite to a ground station. The satellite communicates to the ground station via messages in a byte-stream. An earlier delogger implementation required a rigorous interface protocol and specialized processing for each possible message. Instead of a rigorous protocol, the message header provides a number which maps to an Ada record type. The remaining portion of the message byte-stream contains the composite value of that record. When the message is received, the Universal Delogger assigns portions of the byte stream to named components using ASIS and the optional ASIS data decomposition interfaces. The named components with their values are then presented to an operator. The most notable developmental cost benefit: Each major build had to rebuild the message dictionary; the time required to build this "types dictionary" was reduced from 704 hours to 2 hours for each rebuild. The paper and presentation from STC'93 is available on the ASIS Home page following the ASIS Bibliography link for 1993.


    How can I get the ISO/IEC ASIS Standard?

    ASIS is now available as ISO/IEC International Standard. It's designation is:
    ISO/IEC 15291:1999
    Information technology — Programming languages — Ada Semantic Interface Specification (ASIS)

    The ASIS Standard is available via the ISO Catalog at http://www.iso.ch/infoe/catinfo.html; the ASIS specific reference is located at http://www.iso.ch/cate/d27169.html. The ASIS Standard should also be available through ISO member nations. The ASIS Standard contains 23 clauses and 4 annexes. These include: General introduction, ASIS Technical Concepts, the compilable ASIS Interface (Clauses 3-23), Glossary, ASIS Usage Examples, I/O & CORBA IDL Examples, and Rationale.


    Where did ASIS originate?

    ASIS was initiated as a STARS activity in 1989. It became unfunded for FY90 when the STARS program decided not to fund standardization activities. Several vendors continued work in ASIS on their own. In 1992 the Ada Board recognized the potential benefits to the Ada community of an ASIS standard and recommended that the Ada Joint Program Office (AJPO) director support by whatever means possible the development of an ASIS standard and its submission to ISO/WG9 for publication. On 8 February, 1993, the Association for Computing Machinery (ACM's) Special Interest Group on Ada (SIGAda) chartered the ASIS Working Group (ASISWG) to develop the ASIS interface for Ada 83. On December 1993, the AJPO recommended that ASIS be used as the interface to the Ada 83 program library. The ASIS Rapporteur Group (ASISRG) was established on 28 April 1995 by ISO/IEC JTC1/SC22 WG9 to standardize ASIS as an international standard for Ada 95. ASIS was approved as an ISO/IEC standard through the FDIS Ballot on 9 December 1998 and published by ISO/IEC as 15291:1999.


    Will ASIS work with Every Ada Vendor?

    ASIS is designed to be implemented on a variety of software development environments by a high percentage of Ada Vendors and to support Ada semantic requirements for a wide range of client tools. If ASIS is not available for your favorite hardware and operating system, you might talk to your vendor about providing ASIS interfaces in the near future.


    How do I get involved with ASISWG/ASISRG?

    Your comments and participation are welcome. The following electronic mail forums now exist for the ASISWG/ASISRG:
    1. For high-level non-technical discussions =>
      	SIGAda-ASIS@ACM.Org
      
      To subscribe or to unsubscribe, send email to:
      	SIGAda-ASIS-request@ACM.Org
      
    2. For detailed technical discussions =>
      	SIGAda-ASIS-Tech@ACM.Org
      
      To subscribe or to unsubscribe, send email to:
      	SIGAda-ASIS-Tech-request@ACM.Org
      

    When subscribing, please give the following information:

    For other questions, contact Mr. Currie Colket, Chair of ASISWG/ASISRG, Colket@ACM.Org, Phone: +1 (703) 883-7381; or Mr. Clyde Roby, Recorder of ASISWG, ClydeRoby@ACM.Org, Phone: +1 (703) 845-6666.


    [Up] [SIGAda] [ACM]

    Last update 13 May 1999. Questions, comments to Clyde Roby (CRoby@IDA.Org)