International Conference on

Reliable Software Technologies

Ada-Europe '97


Tutorial programme at a glance

Monday 2 June

09.30 - 17.30 (full day)

Mark Gerhardt & Doug Locke

Real-time object oriented architecture

09.30 - 17.30 (full day)

Mike Feldman

Ada 95 as a foundation language for undergraduate programs

09.30 - 13.00 (half-day)

Tucker Taft

Writing JavaÔ­compatible applets in Ada 95

14.00 - 17.30 (half-day)

Yvon Kermarrec, Laurent Pautet & Samuel Tardieu

Programming distributed applications with Ada 95 and an inside look at the GNATDIST implementation

Friday 6 June

09.00 - 17.00 (full-day)

Alfred Strohmeier & Thomas Wolf

Object-oriented programming with Ada 95

09.00 - 17.00 (full-day)

Magnus Kempe

Elements of software architecture with Ada 95

09.00 - 17.00 (full-day)

Ed Colbert

Object-oriented analysis & design for Ada 95 with Colbert's object-oriented software development method

09.00 - 17.00 (full-day)

John Barnes & Bernard Carré

High Integrity Ada with SPARK 95


by Mark Gerhardt (Lockheed Martin Space and Range Systems) and Doug Locke (Lockheed Martin Software Systems Resource Center

The concepts of architecture, object­oriented development and programming, and real­time systems are historically very disjoint, having emerged from separate communities. Members of all three communities commonly believe that the concepts of object oriented architecture and real­time response are mutually contradictory. In fact, the software intensive systems being designed and built today need to merge these concepts into a unified approach for systems and software development. Many object­oriented design approaches defer dealing with timing and concurrency until late in the design process; in contrast, the authors address timing concerns early in the process. A continuous interaction between partitioning, schedulability analysis, and performance is integral to our method.

This tutorial will use a combination of lecture, discussion, and the simple design exercise to highlight the motivations underlying our method, convey an overview of the process of creating a predictably successful real­time architecture, and cite experiences gained to date regarding its introduction and use. The tutorial includes a class participation example, designed to highlight the difficulties of creating objects when starting with a blank slate, giving the students the opportunity to experience the discovery process of object creation and analysis.

It is assumed that the student has been exposed to introductory Object­Oriented Terminology, but need not have more than beginning familiarity with OO terminology and usage, or real­time systems theory.

Mark Gerhardt has been in the aerospace and defense industry for over twenty five years. He has designed and built real­time systems for signal and radar processing, computer architectures, fault tolerant systems as well as designed and implemented embedded software applications including C3I and early warning receivers. Mark is currently a member of the Advanced Technology Department at Lockheed Martin Western Development Labs in San Jose, CA. Mark's interests include software and system engineering methods, system and software architecture, object­based languages and Ada. He has been involved with Ada since the inception of the Higher Order Language Working Group in 1975. He has presented many tutorials and lectures at ACM SIGAda meetings. Mark is currently Past Chairperson of ACM SIGAda and was a Distinguished Reviewer for Ada95.

Doug Locke is the Chief Scientist for Lockheed Martin Corporation's Software Systems Resource Center where he has spent 30 years designing and building large real­time systems over a wide range of applications including command & control, space, aircraft, shipboard, submarine systems, and information systems. Currently, Dr. Locke acts as a consultant for a wide variety of Lockheed Martin system development, research, and product development activities on issues related to real­time systems development, open systems, Ada real­time applications, object­oriented development issues, and general systems and software performance. In addition, he serves as the Chairman of the IEEE Technical Committee on Real­Time Systems, he is an associate editor of the Real­Time Systems Journal, and has served as program/general chair and on numerous program committees for such events as the Real­Time Systems Symposium, and the International Workshops on Ada Real­Time Issues. As a member of the POSIX 1003.4 Real­Time Extensions Working Group, he was the principal author of the scheduling chapter in the POSIX standard. He received his B.A. in Physics from Kalamazoo College, Kalamazoo, Michigan, and his Ph.D. in Computer Science from Carnegie Mellon University, Pittsburgh, Pennsylvania, USA. His principal technical interests consist of real­time systems theory and practice, operating systems, object­oriented development, and software/ systems architecture for real­time and non-real-time applications.


by Michael B. Feldman (George Washington University), Chairman of the SIGAda Education Working Group

Ada is currently the foundation language in over 100 institutions worldwide. Teachers of Ada 95 are building on a ten­year base of experience with Ada 83 as a foundation language; moreover, Ada 95 is supported by a range of undergraduate textbooks (including at least four at introductory level), as well as several stable and inexpensive compilers and toolsets for the most popular academic computing platforms.

This tutorial will provide a general background on the advantages of Ada in the undergraduate curriculum, especially as a foundation language, and will summarise available Ada 95 resources. It will discuss the role of "object thinking" in introductory courses, and the role of encapsulation, generic templates, and inheritance in this context. It will look in detail at a typical introductory­level course with Ada 95, with fully­coded examples of typical projects, and at a typical second­level course (software construction and data structures), again with fully­coded project examples (including Java byte code applets coded in Ada 95). Finally, it will discuss Ada's role in higher­level courses such as file structures, compiler construction, and real­time systems.

Attendees should have interest and experience in teaching academic courses in computing. No extensive familiarity with Ada is assumed.

Michael Feldman is a Professor in the Department of Electrical Engineering and Computer Science at The George Washington University, Washington, DC, where he has been a faculty member since 1975. He has taught a CS2­level course with Ada every year since 1985, and a CS1­level course with Ada every year since 1991. Both courses are now in their second year using Ada 95. Prof. Feldman also teaches a real­time course which is built around a scale model of the Washington, D.C. rapid transit (metro) system, with Ada 95 controls. Prof. Feldman has published numerous articles on Ada in undergraduate courses and related issues. He is the author of two well­received 1996 textbooks, "Ada 95 Problem Solving and Program Design" (with Elliot Koffman) and "Software Construction and Data Structures with Ada 95". These are texts at CS1 and CS2 level, respectively.


by S. Tucker Taft (Intermetrics Products and Technology Group)

JavaÔ is a new technology from Sun which allows small applications ("applets") to be automatically downloaded to a client machine as part of browsing an HTML Web page with a Java­enabled Web browser. Sun has designed a new object­oriented language called "Java" as part of this technology, and provides a compiler to translate Java source programs into a byte­code representation ("J­code") for secure and efficient transmission across the Internet. When a Java­enabled browser encounters an HTML Web page with a reference to a Java applet, the J­code for the applet is automatically downloaded and executed, giving it control over a specified part of the screen displaying the Web page.

J­code is a platform independent byte­code, and is intended for efficient execution by an interpreter, or efficient on­the­fly translation to machine­code for execution by the client hardware.

As it turns out, the semantics of Ada 95 fit remarkably well the underlying capability of J­code. Recognising this, Intermetrics has adapted its validated Ada 95 front end to directly generate J­code, allowing Java­compatible applets to be implemented in Ada 95. This new product is called AppletMagicÔ.

This tutorial will provide an introduction to the Java language, its virtual machine, and the standard Java classes. It will explain how the Intermetrics Ada95/Java compiler maps Ada95 to J­code, what programming and naming conventions should be followed, and how to use the compiler with a Java­enabled browser, the Java interpreter, or a Java applet viewer. It will explain how to write applets for different purposes in Ada 95, using a number of examples. Finally, it will discuss the future of Ada 95 and Java on the Web, and the potential of J­code for creating a true multilingual programming culture.

S. Tucker Taft is Technical Director of the Intermetrics Products and Technology Group and is chief architect for Intermetrics' Ada 95 technology, called "AdaMagicÔ". Mr. Taft graduated from Harvard College in 1975 with a bachelor's in Chemistry, Summa Cum Laude, and then worked four years for Harvard in the student computer center, managing the first UNIX system that was installed outside of AT&T. Thereafter he worked one year as a private consultant, and then in 1980 joined Intermetrics. While at Intermetrics, he participated in the development of the Ada Integrated Environment for the Air Force, a commercial C cross­compiler, the Common APSE Interface Set (CAIS), and an Ada binding to SQL (SAME). From 1990 to 1995, Mr. Taft led the Ada 9X language design team, culminating in the February 1995 approval of Ada 95 as the first ISO standardised object­oriented programming language. More recently, Mr. Taft led the development of Intermetrics' Ada 95 to Java byte­code compiler.


by Yvon Kermarrec (Télécom Bretagne University), Laurent Pautet (Télécom Paris University), and Samuel Tardieu (Télécom Paris University)

This tutorial is intended for designers and programmers of Ada applications that will be executed on a distributed system.

Ada 95 presents an approach for programming distributed systems which is quite complete. Nevertheless, the potentials of the language are not immediate and the reader of the Reference Manual might become puzzled with the number of restrictions which are stated.

The first part of the tutorial is devoted to the benefits of Ada 95 and to its paradigms: client/server, distributed objects and shared memory. Our aim is to present a programmer's view of distributed applications and to compare the Ada approach with other existing technologies: CORBA and OSF DCE.

The second part of the tutorial will be devoted to a presentation of GNATDIST which is our approach for configuring distributed applications, and to the current implementation of the Distributed Systems Annex in GNAT. This will give the attendees the opportunity to experiment with the paradigms studied in the first part. The information will also be of practical interest for those who need to incorporate additional features in our current implementation.

Attendees should have experience or concerns in programming distributed applications, or be familiar with classical approaches (UNIX network programming, client/server model).

Dr. Yvon Kermarrec is assistant Professor at ENST de Bretagne in Brest. He is a member of the GNAT team and is working on the design and implementation of the Distributed System Annex of Ada 95. His research interests are distributed systems and platforms, CORBA, OSF DCE and software engineering. He is the main designer of the implementation of the distributed system features into GNAT. He has written many papers on distributed systems and Ada.

Dr. Laurent Pautet is assistant Professor at ENST, Paris and member of the GNAT team. His research interests include software engineering, distributed systems, and real­time systems. He is currently participating to the implementation of the Ada 95 Distributed System Annex in the realm of the GNAT project. He is the main architect of GARLIC (the communication support for distributed Ada applications) and GNATDIST. He has written many papers on distributed systems and Ada.

Samuel Tardieu is a PhD student at ENST, Paris and member of the GNAT team. His research areas include distributed, embedded and real-time systems. He is currently participating in the implementation of the Ada 95 Distributed System Annex for GNAT (called GLADE). He also maintains the Ada-France WWW server and mailing-list in his spare time.


by Alfred Strohmeier and Thomas Wolf (Swiss Federal Institute of Technology, Lausanne)

This tutorial provides a comprehensive view of object­oriented programming with Ada 95. It covers the new object­oriented features of the language, how to integrate them into good programming practice, and examples demonstrating the proper use of the language features.

The tutorial starts by examining the object-oriented features of the language, their use, and how they fit into Ada's strong typing system and genericity mechanisms. Basic object­oriented mechanisms are covered: encapsulation, inheritance, and polymorphism. An overview of system structuring by hierarchical library units is also presented. The integration of these mechanisms into good programming practice is then shown; topics include incremental programming, class-wide programming, heterogeneous data structures, mixin and sibling inheritance, and design for reuse. A short chapter shows how to transition smoothly from Ada 83 to Ada 95. Finally, the standard object-oriented idioms in Ada are compared with those of other major object-oriented languages, i.e. C++, Smalltalk and Eiffel.

Attendees will find it useful to have some knowledge of Ada, although this tutorial will be of interest to programmers familiar with other object­oriented programming languages.

Alfred Strohmeier is a Professor of Computer Science at the Swiss Federal Institute of Technology at Lausanne, Switzerland, where he leads the Software Engineering Laboratory. He has been teaching object­oriented technologies and Ada (since 1981) in academic and industrial settings. He was a Distinguished Reviewer of Ada 95 and participated in its definition. His current interests are software engineering; software development methodologies, especially object­oriented approaches; software development environments; and technologies related to the Ada language, including software components and bindings.

Thomas Wolf is a research assistant at the Software Engineering Laboratory at the Swiss Federal Institute of Technology in Lausanne (EPFL) since 1995, where he works on a Ph.D. thesis in fault­tolerant computing. After his graduation at ETH Zurich in 1991 he worked for four years in the compiler industry. Current interests include distributed and fault­tolerant computing, programming languages, and object­oriented programming.


by Magnus Kempe (Kempe Software Capital Enterprises)

Software architecture deals with design problems that extend beyond algorithms and data structures; it enables the development of firm and stable foundations for large­scale software systems.

This tutorial provides a practical introduction to software architecture with Ada 95 and shows how to use, evaluate, and write fundamental, proven architectural building blocks. In addition to appreciating the importance of software architecture for large­scale software systems, participants will gain a practical understanding of styles and basic elements of software architecture. Participants will be able to immediately integrate useful architectural elements in the systems they develop, and they will be ready to actively monitor the emergence of this field in software engineering.

The tutorial has five parts: the nature and value of software architecture; architectural styles and structures (e.g. subsystems, layers, implicit invocation, repositories, distribution); how to design for adaptability (e.g. genericity, table­driven mechanisms, object­orientation, external configuration); some proven, fundamental elements of software architectures written in Ada 95 (e.g. containers, filters, model­view­controller, blackboard); and finally how to find or create further useful architectural elements (metaphors and patterns).

Tutorial attendees should have knowledge of generics and object­oriented mechanisms in Ada 95, but need have no previous acquaintance with software architecture.

Magnus Kempe has taught "Object­Oriented Programming with Ada 95" tutorials at many international conferences (e.g. TRI­Ada, OOPSLA, Ada­Europe); these tutorials have been very well received. This tutorial on software architecture was first given at TRI-Ada'96; the 1997 version has been improved based on experience teaching it. Magnus Kempe is the editor and publisher of the Ada Home Web site and maintains the Ada FAQs regularly posted to the comp.lang.ada usenet newsgroup. He has worked as a lecturer at the Swiss Federal Institute of Technology in Lausanne, a prominent academic institution in Switzerland. He has excellent knowledge of Ada 95, having been involved in the ISO revision process and a member of the ARG; he has also written several papers on advanced uses of the OO mechanisms of Ada 95.


by Edward Colbert (Absolute Software Co., Inc.)

This tutorial will explore Colbert's Object­Oriented Software Development method (OOSD) and its support for Ada, including Ada 95. OOSD focuses on the objects of a problem throughout development, and is particularly compatible with Ada. OOSD addresses real­time issues, quickly communicates the information developed during analysis and design, and allows exceptionally high re­use of both design representation and code. Its rigorous analysis of behaviour is valuable whenever high reliability is needed, and allows early error detection; this rigour can be relaxed where appropriate. It has been used in system engineering, enterprise modelling, and simulations.

The student will learn to model a system using an "objects first" approach, to identify classes by generating them from objects in the system, and to refine the system object into its component objects. The student will learn how to validate the model against the user's needs during requirements analysis, and how to verify iteratively against the requirements during design. OOSD detailed design provides a smooth transition to Ada 95 code.

Participants should have a general familiarity with object­oriented concepts, and languages such as Ada 83.

Familiarity with Ada 95, and experience developing large real­time or distributed systems, are useful, but not required.

Ed Colbert, creator of the Object­Oriented Software Development method (OOSD), is SIGAda's Patterns Working Group Chair and Ada Awareness Manager, and previously Vice­Chair for Liaison (1989­95). He has taught and consulted on Ada, object­oriented methods, and software engineering since 1982. Clients of his Absolute Software company include Honeywell, KPMG Peat Marwick, Lockheed Martin Vought Systems, NASA Langley Research Center, and TRW. Ed has delivered presentations at TRI­Ada (1996, '95, '92, '89, '88), Ada UK (1995), UNICOM (1993), OOPSLA (1993), Object Expo (1993), Object Expo Europe (1992), LOOK (1992), OOP (1992), and SCOOP Europe (1991).


by John Barnes (John Barnes Informatics) and Bernard Carré (Praxis Critical Systems)

SPARK is used in organisations developing safety critical software in avionics, railway signalling and similar industries. The recent revisions to Ada resulting in Ada 95 stimulated a reconsideration of the definition of SPARK which has resulted in a revised version known as SPARK 95.

The prime goal of SPARK is to enable programs to be constructed correctly and to be shown to be correct. The ability to do this depends on having an appropriate language model. A number of the revisions to Ada provide a better foundation for this.

As a consequence of the revisions, SPARK can now be used at three levels: (i) a normal level which encourages good software structures and detects many flaws through detailed analysis of information flow; (ii) a rather simpler level especially useful for reverse engineering when a program has already been written; this provides data flow analysis at minimum annotation burden; (iii) full formal proof through verification conditions; this level is particularly applicable to high risk software which just has to be correct.

Attendees will gain a good appreciation of the capabilities of SPARK and its associated tools. This tutorial will be of interest to all who wish to write programs correctly and not just to those in the safety critical area. Attendees should have prior knowledge of the general principles of Ada 95, but need not be familiar with SPARK.

The tutorial will draw widely on material from the book by John Barnes entitled "High Integrity Ada: the SPARK Approach". Attendees will receive a copy of the book as well as tutorial notes.

John Barnes was a member of the Ada 83 and Ada 95 design teams, was the principal author of the Ada 95 Rationale and has given lectures on Ada for nearly twenty years. He is President of Ada-Europe.

Bernard Carré is the principal designer of SPARK and has given many lectures on SPARK world- wide over the last ten years. He is Product Strategy Director of Praxis Critical Systems.

Organised by Ada UK on behalf of Ada-Europe, in co-operation with ACM SIGAda.

This site maintained by Jim Briggs. We appreciate and welcome all comments.

Last updated 21 May 1997