Adalog provides "Semtools", two ASIS tools including Adadep (dependency analyzer) and Adasubst (intelligent identifiers substitution). They are freely available with source code.
For more information, contact: Adalog, email: Rosen@Adalog.FR. WWW:http://www.adalog.fr/compo2.htm
The Task Stack Analysis Tool (TSAT) is used to determine appropriate
sizes for task stacks within an Ada application. It does this by
analysis of the Ada library containing the compiled application. The
user can apply the stack requirements reported by TSAT to the task
stack specification in
'Size clauses and in the Linker
TSAT consists of two parts: 1) Data Collection and 2) Analysis. Data
Collection occurs during compilation of the program to be analyzed.
The Data Collection phase occurs when the Ada compiler Code Generator
saves information about subprogram stack use in the Ada library. The
"atsat" tool implements the Analysis phase. It reads the
information saved by the compiler then analyzes it and reports the
You may examine an on-line TSAT User's Guide, if you wish.
For more information, contact: Aonix, 67 South
Bedford Street, Burlington, MA 01803, USA; Tel: (617)270-0030, FAX:
I can make no claims that they will work with any ASIS implementation other than ObjectAda, but they should be easy to port. Perhaps we can all learn something if someone will attempt it. Yes, there should be more comments, but there aren't. If this helps anyone with the difficult task of learning ASIS, then they will have served their purpose.
I don't have simple example programs that use these. The tools we have built are proprietary. Perhaps someday...
The Asis.Report package is not released. Just replace it with a boolean value.
Comments are welcome. Good Luck.
Please refer to www.adastat.com for additional information. AdaSTAT will first be available for GNAT 3.13 on Solaris, Windows NT, and Red Hat Linux. You may also contact Bill Pritchett (E-mail WPritche@DCSCorp.Com) at DCS Corporation, 1330 Braddock Place, Alexandria, VA 22314. Phone: (800) 333-6923. FAX: (703) 783-8252. E-mail Info@AdaSTAT.Com WWW:http://www.adastat.com/
AdaMAT is a comprehensive source code static analyzer, developed and commercialized by Dynamics Research Corportaion, to automate the monitoring of the quality of Ada software systems. AdaMAT reports on hundreds of Ada-specific quality metrics that focus on the most effective use of Ada language and software quality engineering principles.
High-level parameters measure such areas as reliability, portability, and maintainability. Other metrics address specific programming concerns such as simplicity, self-descriptiveness, clarity, and independence.
To measure exactness and modularity, AdaMAT utilizes ASIS-based metrics. This semantic analysis facilitates the collection and reporting of information across modules.
AdaMAT builds on the checks already performed by Ada compilers, to address recognized Ada practices that must be adhered to in order to make significant gains in software quality.
By applying AdaMAT to existing coding standards and guidelines, significant reductions in resource requirements are realized by automating design (PDL), code walkthoughs, or software inspections.
Although AdaMAT executes on several different platforms, only the Rational APEX platform uses ASIS just now.
For further information, visit the Web page for AdaMAT: Ada Measurement and Analysis Tool or contact David C. Blackwell, Software Products Group, Dynamics Research Corporation, 60 Frontage Road, Andover, MA 01810. Phone: (508) 475-9090 x1678. E-mail DBlackwell@S1.SRC.Com WWW:http://www.drc.com/
AdaQuest was developed by Ada software engineers for Ada software engineers to identify errors, measure compliance with programming standards, and collect source-derived quality measures. We support established standards like the Software Productivity Consortium's Ada Quality and Style Guidelines, the Software Engineering Institute's Software Size Measurement Framework, the Rome Laboratory Software Quality Framework, and McCabe's cyclomatic complexity. The Rome Laboratory Software Quality Framework deserves special mention since it is actively in the process of being validated by a consortium of major aerospace corporations to ensure the accuracy of its predictive measures. AdaQuest is the only tool that strictly adheres to, and collects, the low-level measures specified in the Rome framework.
Features of AdaQuest 2.2 include:
As a user of ASIS, GRC has built the AdaQuest 2.0 Metric Analysis Tool.
GRC recently completed one of the AJPO's ATIP projects: ASIS Program View Layer (PVL). ASIS/PVL is a widget-like layer of abstractions that model commonly-used views of Ada program structure.
SEE-Ada is a commercial product that uses the Ada Semantic Interface Specification (ASIS) to analyze Ada software and display the relationships and attributes of Ada objects. SEE-Ada provides a means of visualizing Ada software systems and integrating data provided by external measurement/metric tools. Features include:
Query/Display provides structured queries by definition of threshold
conditions and associated colors.
GRC developed the Ada Semantic Interface Specification Program View Layer (ASIS/PVL) under the Ada Technology Insertion Program. It is available as public domain software from the ASISWG.
ASIS/PVL is a "layered" interface built on top of ASIS which provides a set of structured "views" supporting comprehensive static analysis, graphical visualization, and automated documentation of Ada programs. These structured "views" can be thought of as "semantic widgets" providing high-level views of the program (e.g., control flow graph, symbol table, etc.) built on the low-level primitives provided by ASIS and analogous to the X Window System where MOTIF provides a set of higher level graphic widget abstractions on top of the lower level Xlib functions.
For further information, contact Tom Strelich, General Research Corporation, 5383 Hollister Avenue, Santa Barbara, CA 93111. Tel: (805) 964-7724 x327; FAX: (805) 967-7094; Email: TStrelich@SB.GRCI.Com; WWW: http://www.grci.com/
gch is available in source form and it is distributed as free software.
This tool checks Ada code against a given set of rules. In the current gch version a subset of rules from Ada 95 Quality and Style is implemented. The file http://www.kolumbus.fi/vitali.kaufman/gch/gnat_tests.txt (155K) contains the output of checking all Ada sources from gnat_3.11p-src by the gch. It takes nearly 15 min on Pentium II 260 MHz, 64MB.
Our plans for the near future are to extend the set of rules checked by gch and to provide the means that would allow a user having some experience with ASIS programming to add checks for new rules with minimal changes in the gch code.
gch may be used as a basis for developing different kinds of rule checking tools.
For more information, comments, or bug reports, contact: Dr. Vitali Sh. Kaufman; Telephone: (358)-9-388-1095; GSM: 050-5810298; Email: Vitali.Kaufman@iname.com; URL: http://www.kolumbus.fi/vitali.kaufman
Auto_Text_IO is a tool for automatically generating a Text_IO package for an Ada package. The Text_IO package contains Put and Get subprograms for all the types in the Ada package, based on Ada.Text_IO. The Put and Get subprograms use named notation aggregates (although Get does not support the full flexibility of Ada source code). This makes it extremely easy to write readable unit tests for the Ada packages, and to provide persistent storage in a readable form.
Auto_Text_IO is an ASIS application. It also uses some SAL (Stephe's Ada Library) data structures. It currently uses the GNAT implementation of ASIS, including some ASIS extensions. I'd be interested to help in porting it to other ASIS implementations.
Auto_Text_IO uses ASIS to iterate through all the types declared in a package (called the "parent"). It creates a child package, containing Get and Put routines for each type. For scalar types, Auto_Text_IO generates an instantiation of the appropriate Ada.Text_IO package. For array types, it instantiates a package from Generic_Array_IO, a run-time package provided with Auto_Text_IO. For record types, it generates code to Put and Get an aggregate, optionally using named notation. The Get routine can read what Put outputs, but it is not as flexible as an Ada compiler. For example, the components must be in declaration order.
Auto_Text_IO is copyright 2001 by Stephen Leake, released under the Gnu Public License. The run-time portions are released under the GNAT Modified Gnu Public License (the same one that covers the GNAT run time libraries).
For more information, check out the Auto_Text_IO website; or you may contact: Stephen Leake, Email: Stephen_Leake@ACM.Org.
The goal of the Ada Analyzer is to support the assessment of software quality in Ada programs and the improvement of that quality software under analysis. It accomplishes this goal by locating code segments that have suspect quality, collecting relevant information in a condensed form for review by the user, and allowing direct traversal to the actual code so that changes can be made. The Ada Analyzer is a set of support tools that scans large amounts of Ada code, locates items of interest, and summarizes related information for developers, project managers, quality-assurance personnel, and integration and testing personnel. Data dictionary information can be used internally for reference or included in the documentation delivered to the customer.
Dan Ehrenfried is also offering the LRM interfaces on top of ASIS 83. "LRM Interfaces" are a (no longer supported) Rational product which was the ancestor of ASIS. Dan's offering is an enhanced version of the LRM Interfaces: his product and ASIS both have the original Rational product as common ancestors. Many of the declarations are just renamings of the corresponding ASIS declarations; but the rest of it qualifies as a secondary, non-primitive layer above ASIS, implementing (among other features) the iterator capability that had been so hotly debated in past ASISWG meetings.
For more information, contact: Dan Ehrenfried, Little Tree Consulting, 155 Hubbart Dam Road, Marion, MT 59925. Tel: (406) 854-2160; FAX: (406) 854-2170; Email: DHE@LittleTree.Com.
ReEngineer is a product of Loral Defense Systems-Eagan. For further information: Telephone (612)456-7517, FAX (612) 456-2029, or email firstname.lastname@example.org.
Mark V Systems announces it's new Ada Reverse Engineering tool, the first customizable reverse engineering tool for Ada, now produces UML diagrams, and also the first to use the ASIS interfaces.
Key features of ObjectMaker Ada Reverse Engineering:
ObjectMaker Ada Reverse Engineering is implemented using the ObjectMaker Tool Development Kit (TDK).
ObjectMaker supports 27 popular diagramming methods including Buhr 84, Buhr 90, Booch, Colbert, OPEN OML, and UML.
The ObjectMaker Tool Development Kit (TDK) offers developers, integrators, OEMs, consultants, and methodologists the opportunity to customize methods, notations, syntax rules, syntax checking, semantic specification and repository capture of all semantics, and other information and relationships important to your process and problem space. The TDK provides direct access to the rules (predicate logic) that create, control, and pre- and post-condition all tool behavior, and manage all repository navigation and iteration. The TDK offers you the possibility of growing your tool and method support as your organization and process grows and matures. This is more than just being able to use the next method that comes along, more than mixing and matching notations to create the multiple views necessary for today's problems. It means you can add to the notation you select, add to the semantics, add to the checking, add to the code generation, and more as you gain experience and understand that what you need is beyond what the published methods offer. Published methods, especially the object oriented methods, are good starting points. Your process will mature past the published methods. You will need to recognize and capture the information and relationships important for your problem space. The ObjectMaker TDK provides tailorable support which enables you to develop and extend your own methods. The TDK gives you the opportunity to use and reuse your repository contents, your application models, your component libraries by giving you the facilities for data and control integration with other life cycle tools.
Mark V Systems designs, develops and markets advanced software products for the process, workflow, enterprise modeling, business process re-engineering and software engineering markets. Products are marketed directly in North America and worldwide through a distributor network.
Contact ObjectMaker marketing: Phone: +1 818 995 7671; FAX: +1 818 990 0216; Email: Info@MarkV.Com URL:http://www.markv.com
McKae Technologies offers DTraq
a data logging and playback debugging tool providing near realtime data
logging and analysis to aid debugging and validation. Captured, or
'tapped' data from a program can be viewed live while the program is
running or, since it is being logged to a file, played back or printed
out later for off-line review and analysis.
DTraq differs from other logging and playback tools in that no data layout maps or byte interpretations or "data dumpers" need to be manually created. Nor is the application responsible for converting the raw binary data to text form before logging it. DTraq handles all conversion automatically by scanning the application's source code, identifying tapped data items, and extracting the information it needs to properly convert and display the logged items-simple scalar items as well as arrays and records. When the layout of data items change, rescanning automatically picks up the changes.
DTraq information, including usage and screenshots, is available at
For more information about DTraq, contact
and please be sure to include the word DTraq in the subject.
Avaotx ("Ada, Via Asis, To Xml") accepts an Ada compliation unit
and traverses its elements via ASIS to produce an XML representation
of the unit. Avatox tries to be a bit smart by making some components,
like literals, into attributes. It also extracts the line and column
information for every ASIS element and puts that into the XML as well.
Avatox is available with source code on the McKae Technologies website at
and the DTraq user manual may be downloaded from
Odyssey Research Associates, Inc.
For more information about DTraq, contact email@example.com and please be sure to include the word DTraq in the subject. URL: http://www.dtraq.com/
Avaotx ("Ada, Via Asis, To Xml") accepts an Ada compliation unit and traverses its elements via ASIS to produce an XML representation of the unit. Avatox tries to be a bit smart by making some components, like literals, into attributes. It also extracts the line and column information for every ASIS element and puts that into the XML as well.
Avatox is available with source code on the McKae Technologies website at
ORA is pleased to announce the release of AdaWise as shareware. The source code and documentation are available via anonymous ftp from ORA.
AdaWise tools perform automatic checks to verify at compile-time the absence of some common run-time errors in Ada code. The AdaWise tools check for improper aliasing, non-portabilities in the order of elaborating compilation units, incorrect order dependences, and use of undefined variables.
AdaWise uses ASIS and consists of more than 33,000 lines of Ada source and documentation. Relatively portable, AdaWise contains less than 4,000 lines that are vendor-specific. There are working versions for Alsys RISCAda, Rational VADS (SunAda), and an untested working version for Rational Apex. There are several reusable packages that could be useful to ASIS users (not to mention, a good test of ASIS implementations).
AdaWise is not in the public domain, but you can use it freely for academic use. You can use AdaWise for internal business purposes for a small fee. Licensing for other commercial use is negotiated as needed. Using AdaWise for more than an initial evaluation requires that you abide by the terms specified in the README and LICENSE files provided with the distribution.
"This would represent the first publicly available ASIS tool. I think it would be extremely valuable and could consequently serve as an excellent artifact for the Ada community for using ASIS capabilities, for learning about ASIS, for testing ASIS implementations, and for reuse of code for newer applications." -- Currie Colket, chair of ASISWG.
The source code and documentation are available via anonymous ftp or through the ORA home page (by following the Current Projects link, then Formal Methods, and then the AdaWise link. Or, the AdaWise page can be found directly at: http://www.oracorp.com/ada/adawise.html.
For further information, contact Cheryl Barbasch, ORA Corporation, 301 Dates Drive, Ithaca, NY 14850-1326. Tel: (607) 277-2020; Email: AdaWise@ORACorp.Com WWW:http://www.oracorp.com/
The four tools are built on top of the ASIS interface.
The Restructure tool is run in a batch mode. It uses an input command file, and supports Copy, Move, and Convert operations. The Copy operation will copy a declaration from one location to another, with the option of changing the name in the process. In the latter case all references to the old declaration will be updated to refer to the new declaration. The Move operation is a copy with a delete of the original declaration. The Convert operation will change the type of a variable declaration, and check all usages of the object to determine if typecasts are needed for compilation in which case they will be added.
Restructure performs CMVC checkout of the Ada objects it is modifying, and logs those changes to a journal file which can be later used to process additional source code with the same batch commands. The changes can be undone if you aren't satisfied with the results.
The Rename Local Tool Is An Interactive Tool Allowing Object Renaming At The Ada Unit Level, Which Will Then Update All References To The Object.
The Make Procedure Local tool is an interactive tool which converts a designated block of code into a stand-alone procedure. It will compute the parameter profile and replace the statements with a call to the new procedure.
The Convert Local tool is an interactive tool with which object type conversion is performed at the Ada unit level. The tool will add any reauired typecasting to the object references.
For more information, contact: Shelly Richard, Rational Software Corporation, 3320 Scott Boulevard, Santa Clara, CA 95054 3197, USA; Tel: (408) 496-3600; FAX: (408) 496-3636; Email: ShellyR@Rational.Com. WWW:http://www.rational.com/
The mission of SofTools is research into Computer Aided Software Engineering, particurarly into the development and the underlying theory of Software Testing and Analysis Tools. Our Web Page, http://www.softools.org, provides the essential information on the following topics:
For more information, please contact Janusz Laski; Tel: (248) 370 2214 or (248) 853 7602; FAX: (248) 370 4261; Email: Laski@Oakland.Edu; WWW: http://www.softools.org
The Ada 95 Pretty Printer, written by Armin Descloux (with the Java interface by Jorg Kienzle), contains the following formatting utilities:
It also provides a Java-based user interface.
For more information, contact: Prof. Alfred Strohmeier, Swiss Fed Inst of Technology in Lausanne, EPFL-DI-LGL, CH-1015 Lausanne, Switzerland; Tel: +41 21 693 4231; FAX: +41 21 693 5079; Email: firstname.lastname@example.org. WWW: http://lglwww.epfl.ch/
AdaBrowse is a javadoc-like HTML generator for Ada 95. It is available in both source and executable (for GNAT 3.14p on Windows NT/2000) form.
AdaBrowse is copyright (c) 2002 by Thomas Wolf. It is distributed under the GPL (the GNU General Public License).
AdaBrowse produces a fully cross-referenced HTML rendering of Ada 95 library unit specs (no bodies) similar to what javadoc does for Java sources. AdaBrowse is a command-line utility; it has no graphical user interface.
AdaBrowse is highly configurable through command-line options, style sheets, and configuration files. You can customize just about any aspect of the generated HTML.
AdaBrowse completely takes apart the source code and produces a structured and fully cross-referenced HTML documentation containing:
For each item, AdaBrowse also tries to extract comments from the source and uses them to produce a description of the item. Which comments are to be taken for which items can be configured in a configuration file.
AdaBrowse is not a pretty-printer! Any source chunks in the generated HTML retain the formatting as in the source file (except for cross-referencing and syntax coloring). To get the best results, the source should not contain tabs.
AdaBrowse does a few things that could be considered some very weak form of pretty printing, though:
Storage_Size" in "
for X'Storage_Size use ...", or "
Write" in "
However, it does not re-indent things, and it preserves the original line breaks in source code chunks.
AdaBrowse is very simple to use; it provides sensible defaults for all of the many aspects that can be configured. Some of the things that are customizable are:
The distribution comes with a comprehensive "readme" file explaining all these features in detail.
AdaBrowse has been developed using GNAT and ASIS-for-GNAT, both the 3.13p and 3.14p versions. The code is largely OS-independent and should compile and run fine on Unix-like systems, too. Porting it to other ASIS implementations also is easy; the "readme" file identifies all constructs specific to ASIS-for-GNAT (like implementation-specific parameters etc.).
Bug reports and enhancement proposals can be sent to the author at the
twolf AT acm DOT org.
"ASIS 2 XML" converts a unit's ASIS representation into XML, so as to make it easier to develop transformational tools using (for example) XSLT.
As supplied, it relies on GNAT to a limited extent, though it hasn't
been tested against other ASIS implementations. The GNAT feature it
uses is that
Data_Decomposition.Size has been extended
to work for Subtype indications, the purpose is to work out how many
bytes a record component will occupy when streamed. This was the
original motivation for the work.
The program is in the gnat-asis archive at
and can be downloaded from
For more information, check out the ASIS 2 XML website or you may contact: Simon Wright, Email: Simon@Pushface.Org.
Last update 19 October 2011. Questions, comments to Clyde Roby (CRoby@IDA.Org)