[Up]
[SIGAda]
[ACM]
ASISWG Documents and Artifacts
ASIS Specification Documents and Software
ASIS, Version 2.0
The version of ASIS for Ada 95 is known as ASIS 95.
ASISWG/ASISRG has evolved
the ASIS Specification (616 KBytes)
through resolution of
technical issues and
editorial comments
during its development.
ASIS Tutorials
There are several tutorial resources for ASIS. These
include the following:
- An introduction to the ASIS interface
- ASIS Basic Concepts --
The ASIS Basic Concepts discusses the Ada environment, the ASIS
notion of the Ada compilation environment, ASIS Queries, Structural
Queries, Semantic Queries, and General ASIS query processing.
- ASIS Architecture --
The ASIS architecture identifies the architecture of the ASIS interface which
includes types, subtypes, procedure, and function calls. ASIS is
organized in child packages. A tool or application using ASIS has
visibility to the entire declarative region of package ASIS including
all child packages.
- ASIS Notional Application --
ASIS applications may take on many forms. This example presents a
notional ASIS application using a restrictions checker. This
restrictions checker is intended to visit every element in an ASIS
context to determine if a violation of a safety-critical check has
been made.
- Traverse Compilation Unit Example
-- This example demonstrates the use of ASIS to traverse a compilation
unit. The example prints the name of all explicit declarations along
with its kind. This example is provided ready to compile. It
contains a sample test program called asis_test and the result of
executing the ASIS Application Example.
- Call Tree Example
-- This example demonstrates the use of ASIS to print call tree
information for each compilation unit in the context. This example is
provided ready to compile. It contains a sample set of
compilation units for the context and the output resulting from
processing by the ASIS Call Tree Example.
- Glossary --
A Glossary of ASIS terms.
- Rationale --
A rationale for ASIS-based code analysis.
Links to Other Useful ASIS Tutorial Resources
There is a wealth of other useful ASIS tutorial information available.
Such information includes vendor tutorials at conferences, conference
presentations, vendor tutorials on web sites, and even publically
available ASIS applications with source code. These sites provide a
different perspective that is valuable to one learning ASIS. These
include:
- Building Ada Development Tools with ASIS-for-GNAT (PDF file, 916 KBytes),
by Sergey Rybin and Vasiliy Fofanov, is
an excellent tutorial that was presented at SIGAda 2000.
- A Static Analysis Tool for High-Integrity Systems (PDF file; 176 KBytes)
provides an analysis of how ASIS can be used to statically detect
certain Ada 95 language features that have been deemed to be
potentially unsafe in certain safety-critial applications. Although
the paper was intended to outline the development work that led to the
AdaSTAT tool, it is an excellent demonstration of how to apply ASIS
queries for many specific purposes. As such, it goes a long way
towards introducing new users to the practical application of the ASIS
interface.
- SofTools Home Page.
Follow the link to Using ASIS. This site provides a mini
tutorial on the use of ASIS and provides an example of building a
flowgraph for a subprogram using ASIS.
- Slide sets from the
Software Technology Conference (STC'99)
might be useful from an ASIS 95 tutorial perspective. This slide set
introduces the concept of a template for executing ASIS
applications. This template will be available shortly. An announcement
to the ASISWG/ASISRG will be made when the template is available.
Publically available ASIS Applications
with source code!
How to do things in ASIS
-- or Answers to ASIS email questions form the SIGAda-ASIS-Tech
(ASIS Technical) mailing list.
- ASIS 83 Tutorials
are also available.
ASIS Secondary Library
Thanks to Sergey Rybin, Dan Cooper, and Steve Blake for the information
below related to secondary libraries.
Sergey Rybin defines an ASIS secondary library as a library defining
ASIS secondary queries. ASIS secondary queries are simplly some
typical combinations of the standard ASIS queries which are of a
particular interest or which are often used in a particular ASIS
tool. The idea is to encapsulate these combinations of standard ASIS
queries in a form similar to the standard ASIS queries and then to use
these secondary queries similar to high-level ASIS queries in the code
of that tool.
For example, in ASIS, you have the Corresponding_Name_Definition query
defined for simple names only. But in your tool, you may need to know
what is the meaning of a given simple or expanded name. And you may
define your own "query" applicable to An_Identifier and
A_Selected_Component elements. This query then will analyze its
argument and, depending on the argument kind, it uses this or that
method for defining the "meaning" of the argument.
Defining a tool-specific ASIS secondary library is a part of the first
step of an ASIS tool design and implementation.
Steve Blake also adds that the use of secondary layer queries greatly
simplifies development using ASIS. Most tools have common needs such
as outputting an expression or declaration name in fully qualified
form. Steve found that most tools can use a relatively small pool of
common secondary queries and then define several specific secondary
operations for their own special purpose. So, it is not such a
daunting task as it might first seem. Steve has a
sample of secondary libraries
that he used when he was at Aonix; most of these queries should work
with GNAT ASIS, too.
C. Dan Cooper says that Steve's observations match his own experience,
too. But just to underscore what Sergey said: the significant insight
is that, unlike Steve's and my experiences, which were largely ad-hoc,
you should deliberately plan an up-front effort to design the
high-level queries you expect to need in your application. The
importance of this step stems not from the difficulty, but rather from
the benefits. These include:
- lack of (or reduced?) frustration with ASIS
- highly focused queries that are not ad-hoc
- can write the application with "elegant" code
- opportunities for reuse
and more. Having thus defined the queries you would like to
have, you can then implement them using the available ASIS
interface. This is a very different experience from the ad-hoc
approach, wherein you instead react to observed mismatches in
what you need versus what ASIS provides.
Highlights and Minutes of Past Meetings
-
25-26 March 1997 -- Phoenix, AZ
- Minutes of the ASISWG/ASISRG meeting of 25-26 March 1997 are now available
in text form.
Highlights of this meeting
are also available
in text form.
-
3 December 1996 -- Philadelphia, PA
- Minutes of the ASISWG/ASISRG meeting of 3 December 1996 are now available
in text form and
in PostScript form.
Highlights of this meeting
are also available
in text form and
in PostScript form.
-
10 June 1996 -- Montreux, Switzerland
- Minutes of the ASISWG/ASISRG meeting of 10 June 1996 are now available
in text form,
in PostScript form, and
as a Microsoft Word document.
Highlights of this meeting
are also available
in text form,
in PostScript form, and
as a Microsoft Word document,
-
11-12 March 1996 -- Ft. Lauderdale, FL
- Minutes of the ASISWG meeting of 11-12 March 1996 are now available
in text form,
as a Microsoft Word document,
and
in PostScript form.
-
2-3 November 1995 -- San Diego, CA
- Minutes of the ASISWG meeting of 2-3 November 1995 are now available
in text form
and
in PostScript form.
Highlights of this meeting
are also available
in text form and
in PostScript form.
-
4 October 1995 -- ASIS Workshop at Ada Europe'95
- The planned ASIS Workshop at the
Ada in Europe 95
conference (held 2-6 October), actually took place on Wednesday,
October 4.
Minutes of the ASIS Workshop are
now available.
-
26-27 June 1996 -- McLean, VA
- Minutes of the ASISWG meeting of 26-27 June 1995 are now available
in text form.
Highlights of this meeting
are also available
in text form and
in PostScript form.
-
6-8 March 1995 -- Ft. Lauderdale, FL
- Minutes of the ASISWG meeting of 6-8 March 1995 are now available
in text form and
in PostScript form.
Highlights of this meeting are also available
in text form and
in PostScript form.
[Up]
[SIGAda]
[ACM]
Last update 10 April 2002.
Questions, comments to
Clyde Roby (CRoby@IDA.Org)