[Up] [SIGAda] [ACM]

ASIS at SIGAda 2000


SIGAda 2000, held 12-16 November 2000, in Laurel, Maryland, had a number of ASIS activities, including:

  1. Sunday, 12 November, from 7:00-10:00 P.M. ASIS Workshop: ASIS Extensions for Higher Level Abstractions by ASISWG/ASISRG. Currie Colket, the Chair of ASISWG, chaired the Workshop.
  2. Monday, 13 November, from 1:30-5:00 P.M., ASIS Tutorial: "Building Ada Development Tools with ASIS-for-GNAT" by Sergey Rybin and Vasily Fofanov.
  3. Friday, 17 November, ISO/IEC JTC1/SC22 WG9 Meeting, Currie Colket gave the ASISRG Report.

This was an excellent time to find out more about ASIS and to get involved in the ASIS Community!


Sunday, 12 November 2000; ASIS Workshop

The primary focus of the Ada Semantic Interface Specification (ASIS) Working Group and ASIS Rapporteur Group has been to evolve ASIS as an interface to the Ada 95 compilation environment. ASIS now provides a powerful mechanism to perform code analysis for mission-critical and safety-critical applications. A variety of highly effective tools have been built using ASIS. ASIS became an ISO standard in 1999.

As in previous years, the results will be published in Ada Letters, and will guide the activities of the ASIS community for years to come. The results of the SIGAda 2000 ASIS Workshop are now available as a MS Word document and a PDF document.

An ASIS Workshop was held on Sunday, 12 November, as part of SIGAda 2000 in Laurel, Maryland to address several outstanding issues. These issues are:

  1. ASIS Charter - Now that ASIS is an ISO standard, the ASIS Charter needs revision. This workshop proposed a revised charter to address our current focus.
  2. Use of Electronic Mail Lists - There have been concerns over the use of the ASIS Technical maillist. Do we need an additional maillist?
  3. Revision to ASIS for Ada 05 - WG9 is planning to have an evolved version of the Ada language circa 2005. How can we position the Toolkit Layer and Extensions Layer to support the evolution of ASIS?
  4. Future Directions of ASIS Technology - What can we do to better position ASIS technology to our current/new users and future ASIS Standards?

Participants from the compiler vendor community and user community were present and provided their views and their needs. The following were participants in this ASIS Workshop:

Currie Colket, Workshop Chair, colket@colket.org
Clyde Roby, Workshop Recorder, IDA, roby@ida.org
David R. Phillips, Cohesion Force, david@cohesionforce.com
Sergey Rybin, ACT, Rybin@gnat.com
Alok Srivastava, TRW, alok.srivastava@trw.com

ASIS has had a presence at Ada-Europe 2000 and will have a presence at SIGAda 2000. The following papers were presented at Ada-Europe:

  1. Rybin, S., A. Strohmeier, V. Fofanov, and A. Kuchumov, ASIS-for-GNAT: A Report of Practical Experiences, Lecture Notes in Computer Science, 1845, Reliable Software Technologies Ada-Europe 2000, Springer-Verlag, Berlin, pp. 125-137. This paper discusses the main difficulties met when implementing ASIS, the problems in using ASIS, and missing features (e.g., analysis of object-oriented programs). An Object-Oriented ASIS (OASIS) research project to develop an ASIS secondary library of interfaces is discussed. This report provides an excellent focal point for future activities to evolve ASIS when we eventually support the next version of the Ada programming language.
  2. Hovater, S., W. Marksteiner, and A. Butturini, Generation of Interface Design Description Documents Using ASIS, Lecture Notes in Computer Science, 1845, Reliable Software Technologies Ada-Europe 2000, Springer-Verlag, Berlin, pp. 138-148. This paper discusses the automatic creation of Interface Design Description documentation can by using representation clauses and annotations for key record types and ASIS-based tools to extract this information from the Ada compilation environment.
  3. Closhen, P. and H. Hoffmann, An Ada95 Programming Style Checker Using the GNAT ASIS Implementation, Lecture Notes in Computer Science, 1845, Reliable Software Technologies Ada-Europe 2000, Springer-Verlag, Berlin, pp. 149-160. An implementation of a style checking framework written in Ada95 and using GNAT ASIS is presented. The framework allows one to specify what is being presented.

The SIGAda 2000 Conference also has a number of ASIS related activities. These include:

  1. ASIS Workshop -- 7:00-9:00 PM, Sunday, 12 November.
  2. Tutorial - Building Ada Development Tools with ASIS-for-GNAT by Sergey Rybin, Monday, 15 November, 1:30-5:00 PM.
  3. Invited Paper - Generation of Documentation using ASIS Tools by Steve Hovater, Wednesday, 15 November, 4:00-4:45 PM.
  4. Invited Paper - Ada Code Analysis: Technology, Experience, and Issues by Dan Cooper, Thursday, 16 November, 9:30-10:15 AM, WG9 - Friday

These artifacts are published on the SIGAda 2000 Conference Proceedings CDROM.

ASISWG Charter

We made a change to the ASISWG Charter. It was agreed that the proposed charter should be circulated amongst the ASIS electronic mail list for comments. The resulting document would be presented to the ACM SIGAda Executive Committee for approval.

Additional ASIS Mailing Lists

Currently the ASISWG two electronic mail forums: one for general ASIS information and one for technical discussions about ASIS itself:

SIGAda-ASIS @ acm.org for ASIS high-level discussions
SIGAda-ASIS-Tech @ acm.org for ASIS technical discussions

ASIS Evolution

In our recent history, ASIS technical had been used primarily to support the ASIS standardization discussions. Recently new (and experienced) ASIS users have been using the ASIS technical list to ask questions as to the best way to use ASIS to perform various types of analysis. The recommendation was to create a third list to separate ASIS standardization issues from ASIS usage issues. After much discussion, it was decided that since the standardization issues are currently low volume, that it might be best to use the ASIS technical list to support both standardization and Ada usage issues. It was further noted that frequently Ada usage issues provide guidance as to how the ASIS standard should evolve so the 2 areas do complement each other.

WG9 is planning to have an evolved version of the Ada language circa 2005. How can we position the Toolkit Layer and Extensions Layer to support the evolution of ASIS? ASIS Toolkit/Extensions Layers was the primary topic of discussion at SIGAda'99 in the ASIS Workshop. ASIS developers could extend ASIS: through a Toolkit Layer and an Extensions Layer. The Toolkit Layer would provide higher level, abstract secondary queries built from ASIS primitives and other portable services. It would be portable to ASIS implementations provided by ASIS vendors. Such queries would be valuable as examples to reduce the learning curve in using ASIS. The Extensions Layer would allow vendors to fill holes and gaps in the ASIS interface and support queries that ASIS was never intended to support such as dynamic semantics. Figure 1 depicts the relationship between the Toolkit Layer and the Extensions Layer to the ASIS Interface, the Ada Compilation Environment, and the Host or Target Environment. The Extensions Layer would be able to use queries from the Toolkit Layer, as these are portable. The converse is not true; should the Toolkit Layer use queries from the Extensions Layer, the Toolkit Layer would no longer be portable.

Even with the limitation of using ASIS interfaces, the Toolkit functionality is limitless. It would be able to support the following types of functionality in a portable way across all Ada vendors supporting the ASIS Standard:

Functionality from the Extensions Layer would support an even greater level of capabilities not possible with the ASIS interfaces alone, such as:

There are known weaknesses in the ASIS ISO Standard. The production of interfaces for the Toolkit Layer and Extensions Layer represent an excellent way to compensate for the current weaknesses and prepare ourselves for the next version of ASIS. Assuming that the next version of ASIS is going to build on the existing version of ASIS, then vendors will develop interfaces that will fall into either the Toolkit Layer or the Extensions Layer. Take for example the Object-Oriented ASIS secondary layer proposed in Dr. Rybin's Ada-Europe 2000 paper. This is being developed, as the existing ASIS interfaces are weak in their support for OO. It is obvious that an additional layer such as OASIS might contain interfaces in both the Toolkit and Extensions layer. We need to set up a process to periodically review these interfaces and formally identify potentially valuable interfaces for the next version of the ASIS interface. The user community will have the opportunity to use the interfaces and provide feedback thus improving the interfaces for the ASIS community. If these are made available to the international ASIS community to promote the portability of tools across platforms, then the ASISWG/ASISRG could recommend to WG9 those that are valuable for the next version of ASIS. This is a good time to set up the process to facilitate the generation of the next ASIS interface. This would expedite the approval of the next ASIS ISO Standard.

Please see the ASIS Workshop for SIGAda'99 for additional discussion to include proposed guidelines on how the two new child packages Asis.Toolkit and Asis.Extensions might be used.

Future Directions of ASIS Technology

All agreed that we need more ASIS-based tools. There are probably about a dozen such tools, most provided via ACT and Rational. The major new player is DCS. DCS is currently marketing a tool to automatically analyze Ada95 source code, especially for functional metrics, object-oriented metrics, and ISO WG9 Safety and Security Rapporteur Group (HRG) restrictions checking. It is very encouraging to have a tool vendor, who is not also a compiler provider, provide ASIS-based tools. In discussing this issue, it was recognized that there are likely many more ASIS-based tools internal to companies and vendor's organizations. One of the new roles identified in the charter is to proactively encourage the development of ASIS-based tools.

The question is how do we go about doing this? Porting tools from one compilation environment to another was a design goal of ASIS. Although differences in operating systems and compilation environments mean that this can not be achieved for most tools, it is hoped that tools can be developed that are extremely easy to port from one compiler provider's environment to another. Currently such a tool does not exist. The existence proof with a highly portable ASIS-based tool might be an excellent way to proactively encourage the development of ASIS-based tools. Perhaps it would be valuable to have an ASIS-based tool in the public domain that provides something extremely useful. Then we can address issues associated with porting the tool to the ACT, DDC-I, OC Systems, and Rational environments. This would go a long way in quantifying the effort to make a port. It would also provide us with knowledge that might help us reduce the porting effort when an ASIS for a future version of Ada is developed. Some candidate tools were discussed that would be useful to the Ada community. These included:

It was noted that not even the examples in Appendix B of the ASIS ISO Standard are fully portable across all vendor platforms. A useful tool that was portable explicitly demonstrating what is needed to make the tool satisfactorily execute in each environment was viewed as being extremely important to proactively encourage the development of ASIS-based tools. This was viewed as a goal we should achieve by next fall.

Conclusion

The workshop recognized that ASISWG and ASISRG had done an excellent job in developing the ASIS standard. A proposed charter revision has been made to guide the ASISWG over the near future. The ASISWG will now explicitly continue its role to proactively encourage the development of ASIS-based tools. This will be of tremendous value to the Ada international community. The ASISWG/ASISRG will position itself to produce an ASIS ISO Standard for Ada 05. The Toolkit Layer and Extensions Layer should be valuable to the process of selecting candidate interfaces for the next version of ASIS. We would like to thank the Workshop participants for the valuable insight they provided.


Monday, 13 November; Half Day Tutorial

Building Development Tools with ASIS-for-GNAT

Sergey I. Rybin
Vasiliy Fofanov

Building Development Tools with ASIS-for-GNAT is the tutorial given by Sergey and Vasiliy.

This tutorial explains how you can build your development and analysis tools when working with GNAT. Some sample tools were presented to demonstrate different approaches to tool development. Participants should have a good understanding of Ada semantics, and basic experience in programming with GNAT is helpful, but not required.

The first part starts from the general overview of GNAT, including the compiler's internal data structures and existing GNAT toolset. Then different technologies for building tools for GNAT are compared to give some ideas which technology should be used for a specific tool. ASIS is positioned as a technology which provides a proper (that is, standardized, stable and high-level) interface to the compiler's internals and allows you to build both free and proprietary tools for GNAT.

The second part is an introductory ASIS (sub)tutorial, and its main goal is to help the audience to get started with writing their own ASIS tools. It starts from the general definition of ASIS, examples of ASIS-based code fragments and tools which can be built on top of ASIS. The main ASIS abstractions, such as Context, Compilation Unit and Element, are described.


[Up] [SIGAda] [ACM]

Last update 19 November 2001. Questions, comments to Clyde Roby (CRoby@IDA.Org)