SIGAda 2005 Tutorials
SIGAda 2005
Descriptions of Tutorials

Sunday Full-Day Tutorials (9:00am - 5:30pm)

SF1: An Introduction to Ada 95 for programmers
David A. Cook, Eugene W.P. Bingue

Level - Beginner, but attendees should have some experience with another programming language.

This tutorial is designed for those who have some familiarity with a programming language, but who are new to Ada. In the morning, we will discuss the basics of programming in Ada, to include typing, packages, syntax rules, and other Ada programming constructs. In the afternoon, we will cover the concepts of object-oriented programming, and show how object-oriented design can easily be implemented using Ada. Simple Ada programs will be constructed during the class, and the attendees will also see how to use various Ada programming environments and tools that can be downloaded for free over the web.

SF2: The SAE Architecture Analysis and Design Language
Joyce Tokar

Level - Intermediate.

This tutorial will provide an introduction to the AADL language from a textual and graphical perspective. It will also give some guidelines regarding the relationship between existing systems and the generation of AADL models. The tutorial will present several uses of the AADL in the design and analysis of safety-critical real-time systems.

This tutorial is suitable for senior software and systems engineers as an introductory course; the tutorial does not presume prior knowledge of AADL. The course is also useful to software and systems managers responsible for the development and integration of complex critical systems. The attendees should have an understanding of the fundamentals of the development of complex, critical real-time systems.

The Architecture Analysis and Design Language (AADL) is an architecture description language (ADL) that has been developed under the auspices of the International Society of Automotive Engineers (SAE), Avionics Systems Division (ASD) Embedded Computing Systems Committee (AS-2). The AADL was approved as an SAE standard in the fall of 2004.

The language has been defined to provide a consistent and concise notation, both textual and graphical, to be used to develop models of complex, real-time, critical systems such as those used in automotive, avionics, medical, robotic, and space-based systems. The AADL provides the notation to perform various types of analysis of the complex critical systems. In the early stages of design, the AADL enables the definition of the preliminary connectivity between application and execution platform components. As an AADL model is developed, additional components and properties are specified. The properties are the basis of information provided for analysis tools to determine the behavior and performance of the system being modeled. The AADL has been designed to facilitate the development of tools that provide automatic code generation of the system both in terms of the application software components and the underlying execution environment. The AADL may be further used to verify an actual system against the specified model. With automatic code generation, the AADL offers a system model that maintains significant information about a system that is useful throughout the lifetime of the system. Thus, the AADL offers support for all stages of system development.

Monday Full-Day Tutorials (8:30am - 5:00pm)

MF1: Real-Time Java for Ada Programmers
Ben Brosgol

Level - Intermediate. Audience should be familiar with Ada 95 and have a basic knowledge of Java

Although the term "real-time Java" may sound self-contradictory, serious technical activity has been underway since early 1999 on extending the Java platform to satisfy the requirements for real-time systems, and several implementations exist. This work is relevant to the Ada community as both a challenge and an opportunity: on the one hand, it may compete with Ada in the real-time marketplace, but on the other hand some of its ideas may be worthy of consideration in a future version of the Ada language.

This tutorial will focus on the Real-Time Specification for Java ("RTSJ"), which was developed by the Real-Time for Java Expert Group under the auspices of Sun Microsystems' Java Community Process. The tutorial will analyze/critique the Java platform with respect to real-time support, summarize/illustrate the main elements of the RTSJ, and compare/contrast the design with Ada's real-time features (both in Ada 95 and under consideration for Ada 2005). The tutorial will also outline the main aspects of the J-Consortium's "Core Extensions" (a competing real-time Java approach), will summarize a proposed high-integrity profile for the RTSJ, and will provide a status update on the real-time Java work and its usage and prospects.

Monday Morning Tutorials (8:30am - 12:00 noon)

MA1: Systems Engineering and the Impact of Computer Language Selection on it
Richard Conn

Level - Beginner

This presentation discusses Systems Engineering and the impact or lack of impact of computer language selection in various application domains. The talk will cover highlights of large-scale embedded hard real-time systems, large-scale Enterprise systems, medium-scale systems, and small-scale systems (desktop PCs with mobile computers like cell phones, smart phones, and Pocket PCs). Language issues, developer backgrounds and education requirements, engineer backgrounds and education requirements, and language options/tradeoffs would be included. Featured languages would include Ada, Visual Basic, C#, C++, and Java, with an outline of the tradeoffs between each language for each domain discussed.

Materials for Attendees: slides with videos, Systems Engineering CDROM (with contributions from ABET, Crosstalk, SEI, Microsoft, Lockheed Martin, and more)

MA2: Real-time and Parallel Processing in Ada 95
Eugene W.P. Bingue, David A. Cook

Level - Intermediate. This tutorial assumes basic knowledge or experience with the Ada programming language.

This tutorial covers two of the major problems with parallel and real-time programming - time management and storage management. Parallel processing, whether on single-processor machines or multiple processors, has many pitfalls. We will examine these potential pitfalls, and discuss ways to avoid common problems, such as deadlocks and race conditions. We will also discuss how to write code that efficiently passes data with other parallel processes. The basics of parallel processing are covered, leading to a discussion and examples using Ada tasking. In addition, the Ada Real-Time Systems Annex is also covered.

Monday Afternoon Tutorials (1:30 - 5:00pm)

MP1: A#: Programming PDAs and .NET devices with Ada
Martin C. Carlisle

Level - Intermediate. Attendees should be familiar with Ada 95. Basic knowledge of C# or Java is also recommended.

This tutorial describes A#, an Ada environment for programming the Windows .NET and .NET Compact Frameworks. Attendees will learn how to create Ada applications that take advantage of the rich set of libraries available with the .NET Framework, and also how to deploy Ada applications onto PDAs using the .NET Compact Framework.

Attendees will also learn how to create multilanguage applications combining both C# and Ada. In particular, attendees will learn how to create a user-interface with Visual Studio .NET, and use Ada for the computation behind this interface.

This tutorial will be very hands-on. Attendees should bring laptop computers on which A# will be installed.

MP2: PolyORB: A Schizophrenic Middleware
Thomas Quinot

Level - Intermediate.

PolyORB is the reference implementation of the "schizophrenic" middleware architecture. This innovative architecture resolves middleware-to-middleware introperability issues: it allows seamless integration of partitions in heterogeneous distribution environments (CORBA, DSA, web services) through the collaboration of multiple colocated personalities.

We first present the general principles of schizophrenic middleware, and show how this architecture can be adapted to meet stringent application requirements, particularly in the context of embedded, real-time systems.

We then focus on two applications of PolyORB in an Ada context:

  1. as a CORBA implementation, using the idlac IDL-to-Ada compiler, allowing integration in multi-language distributed applications;
  2. as a supporting partition communication subsystem for the Ada Distributed Systems Annex (annex E), using the gnatdist partitioning tool.

Finally we show how to take advantage of some of PolyORB's schizophrenic features, for example in order to incorporate DSA partitions in CORBA or SOAP applications.

PolyORB is developed by ENST, LIP6 and AdaCore, and supported by AdaCore. The PolyORB project is a member of the ObjectWeb consortium.

Back to Main Page Back to Main Page
last updated 11 November 2005 - cgr