SIGAda 2000, held 12-16 November 2000, in Laurel, Maryland, had a number of ASIS activities, including:
This was an excellent time to find out more about ASIS and to get involved in the ASIS Community!
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:
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:
The SIGAda 2000 Conference also has a number of ASIS related activities. These include:
These artifacts are published on the SIGAda 2000 Conference Proceedings CDROM.
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.
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
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.
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.
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.
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.
Last update 19 November 2001. Questions, comments to Clyde Roby (CRoby@IDA.Org)