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: SPARK, an Intensive Overview
Level - Intermediate. This tutorial is intended primarily for those with current or recent experience of software development in Ada, especially those who will work on or lead safety critical or other high integrity developments.
SPARK is an annotated sub-language of Ada which is unambiguous and suitable for rigorous static analysis. The tutorial, which is extracted from the four-day "Software Engineering with SPARK" course will provide an intensive introduction to SPARK and the static analysis performed by the SPARK Examiner.
Attendees will be encouraged to bring laptop computers on which the SPARK Examiner will be installed.
SF3: Real-Time Java for Ada Programmers
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 05). 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.
SF4: Introduction to UML 2
The Object Management Group's (OMG) Unified Modeling Language (UML), v1.x, met the need for a standard notation for object-oriented design; but it lacked adequate semantic definition, was unnecessarily complex, and didn't adequately support advanced concepts like architecture design. UML 2 attempts to solve these problems and others.
This tutorial will look at the new UML 2 standard and how it supports large system development, including profiles for real-time specification and for the Society of Automotive Engineers' (SAE) Architecture Analysis and Design Language (AADL).
Monday Full-Day Tutorials (8:30am - 5:00pm)
MF1: Developing a Web Server in Ada with AWS
Level - Intermediate. Attendees should have some knowledge of Ada programming. No previous knowledge of Web programming or HTML is required.
This tutorial describes AWS, the Ada Web Server, and how to use it for the development of web applications. It describes the principles of AWS, from the most basic functionalities to the more advanced ones (Authentication, SOAP interface, session management, hotplugs, multi-server applications, etc.) The seminar emphasizes practical usage of AWS, and presents design patterns that have proved effective for developing existing applications. It compares the development process with AWS to other techniques.
The tutorial provides attendees with the information needed to assess whether AWS is appropriate to their needs, and the necessary knowledge to start writing full-scale Web applications.
AWS is a free (GMGPL) software component written by Pascal Obry and Dmitriy Anisimkov that allows developing Web applications in Ada. Unlike other methods that require a dedicated server (like Apache), AWS provides services to develop applications that act as autonomous Web servers, using the Ada language for the semantic part of the application instead of scripting languages like Perl or Python. This allows AWS to be used for regular Web servers as well as for writing applications that offer a Web interface to control more traditional processing functions. AWS is a mature product that has been used in many professional applications.
MF2: The Architecture Analysis and Design Language (AADL)
Joyce Tokar, Bruce Lewis
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 Morning Tutorials (8:30am - 12:00 noon)
MA1: 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.
MA2: Microsoft Solutions Framework and the Microsoft Operations Framework
Level - Beginner. This tutorial compares and contrasts three different approaches to improve the reliability of software-intensive products. The approaches covered by this paper are:
(1) the Microsoft Solutions Framework and Trustworthy Computing,
(2) the Software Engineering Institute's Capability Maturity Models, the Team Software Process, and the Personal Software Process, and
(3) Extreme Programming.
These approaches have emerged over time from several different sources (Microsoft, the Software Engineering Institute, and the Extreme Programming community) driven by different needs and requirements in different application domains and different development and user cultures. There are many similarities to these approaches - primary of which is the fundamental need to produce reliable software products that provide a useful, often vital, function in the real world. This tutorial provides brief overviews of each approach, comparing and contrasting these approaches. It will also discuss how Ada fits into each of the approaches. In addition, each attendee will be provided with a CD containing the white papers and other documentation on the various frameworks.
Monday Afternoon Tutorials (1:30 - 5:00pm)
MP1: High-integrity Ravenscar Using SPARK
Level - Intermediate. This tutorial would be suitable for those with an interest in using the Ravenscar Profile in a high integrity system that requires static verification of deterministic and error-free behavior. The tutorial assumes a reasonable but not expert knowledge of sequential SPARK. Suitable preparation could include:
1. Attendance at a previous one-day SPARK tutorial or full 4-day SPARK course.
2. Use of SPARK on a project.
3. Reading "High Integrity Software - the SPARK approach" by John Barnes, and experimenting with its demo tools.
SPARK is a well-established, unambiguous and fully-analyzable annotated subset of Ada. In its original form SPARK excluded all forms of concurrency because weaknesses in the Ada tasking model made it incompatible with the design goals of SPARK. The advent of the Ravenscar Profile has provided an opportunity to extend SPARK to include concurrency and to enable the SPARK Examiner to analyze concurrent programs.
The tutorial will describe the way SPARK has been extended to include the Ravenscar Profile and how static analysis techniques can eliminate all of the erroneous behavior, bounded errors and implementation- defined behavior that remain in the concurrency model defined by the Profile.
MP2: A#: Programming PDAs and .NET devices with Ada
Level - Intermediate. Attendees should be familiar with Ada 95. Preferable to have a basic knowledge of C# or Java.
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.