

                            ASIS Program View Layer

                                   Overview

                                 January 1995



The ASIS Program View Layer (ASIS/PVL) is a set of reusable
abstractions built upon the Ada Semantic Interface Specification
(ASIS).

ASIS is a programmatic interface between an Ada compiler's library
database and any tool or program requiring information in this
library.  ASIS is an open and published specification that gives
CASE-tool and application developers access to both the syntactic and
semantic information contained in an Ada compiler library.  ASIS has
been designed to be independent of underlying compiler library
implementations; thus supporting portability of CASE tools while
relieving users from having to understand the complexities of an Ada
compiler library's internal representation of data.
 
The ASIS/PVL abstractions are "views" of Ada software structure that
are commonly used in the static analysis of programs.  For each view,
ASIS/PVL provides a subsystem which constructs a view data structure
using ASIS queries.  Together, these subsystems form a layer enabling
tool builders to gather information for analysis without having to
write detailed ASIS traversals.  Thus, in the same way that a widget
set hides the intricacies of low-level window system calls, ASIS/PVL
simplifies the job of building tools on ASIS.

ASIS/PVL was developed by General Research Corporation of Santa
Barbara, California for the Ada Joint Program Office (AJPO) under the
FY93 Ada Technology Insertion Program (ATIP).


THE VIEWS
---------

ASIS/PVL contains the following views:

   * The Region View, which identifies the declarative regions (i.e.,
     symbol scopes) of an Ada library unit and organizes them into a tree
     structure to reflect their nesting relationships.

   * The Namespace View, which identifies the set of Ada entities (i.e.,
     types, objects, subprograms, etc.) declared within an Ada unit.

   * The Reference View, which identifies the set of Ada
     entities referenced within an Ada unit.  Each reference is classified
     with respect to its context, e.g., object references can be classified
     as 'read' or 'update'.

   * The Control Flow view, which identifies all possible transfers of
     control among the statements of an Ada program unit and represents
     them as a directed graph.

ASIS/PVL also provides a general purpose traversal template ("Scan")
which can be used to construct ASIS applications.


REQUIREMENTS
------------

The ASIS/PVL views are views of Ada 83 programs.  ASIS 1.1.1 (the most
recent version of ASIS for Ada 83) is used to construct the views.
Tool builders wishing to use ASIS/PVL will need an Ada 83 compilation
system that includes an ASIS 1.1.1 implementation.

The ASIS/PVL subsystems are themselves written in Ada 83.

The ASIS 1.1.1 specification (a set of Ada 83 package specifications)
can be found on the AJPO host. The current location is:

  ftp site  : sw-eng.falls-church.va.us
  directory : /public/AdaIC/work-grp/asiswg

Conforming ASIS implementations are currently available from Rational
Software Corporation and Alsys, Inc.  Other implementations may be
under development.

ASIS/PVL was developed using the Rational Apex environment and tested
against Apex ASIS 111.2.7.2.


SOFTWARE ORGANIZATION
---------------------

The ASIS/PVL software is partitioned into subsystems.  Each subsystem
resides in a directory that bears the subsystem name.  Some subsystems
are dependent on other subsystems, i.e., the Ada units in a given
subsystem may refer to units in a different subsystem.  The specific
dependencies are documented in the README file in each directory.

There is one subsystem for each view:

      control_flow           Control Flow View
      namespace              Namespace View
      region                 Region View
      reference              Reference View

The view subsystems all depend a set of common abstractions and
utilities, which are found in the following subsystem:

      common                 Common abstractions and utilities

The traversal template is located in:

      scan                   General purpose traversal template

Also provided is a traversal which locates Ada declarative regions
within a compilation unit.  This traversal is found in:

      region_scan            Declarative region traversal

Finally, most of the subsystems depend on a subsystem called 'asis'.
This should be the implementation of ASIS 1.1.1 in the user's
compilation environment.

Each subsystem directory contains a README file which describes:

      * Purpose of the view
      * Files in the directory
      * Ada library units comprising the subsystem
      * Subsystem dependencies
      * Organization of the view data structure

Included in each view subsystem are one or more test drivers.  These
can be used to create an executable program which builds the view and
dumps it in a textual format for inspection.

Files containing Ada compilation units follow a naming convention:

      Specifications have the suffix ".1.ada"

      Bodies and subunits have the suffix ".2.ada".
