SIGAda 2009 Tutorials

SIGAda 2009 logo
Descriptions of Tutorials

SIGAda 2009 Home

Conference Registration Information

Hotel Rates and Reservations

Exhibiting and Sponsorship Opportunities

Conference at a Glance
Advance Program:
    (PDF/US) or (PDF/A4)


Workshops and BoFs

Media Information

Conference Officers

Program Committee

Important Dates

Grants to Educators

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

SF1: Introduction to Ada
Michael B. Feldman

Level — Beginner, but attendees should have some experience with a high-level 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, including types, packages, syntax rules, and other Ada programming constructs. In the afternoon, we will cover Ada’s object-oriented programming and concurrent-programming features. Many examples will be shown; freely downloadable Ada programming environments and tools will be demonstrated.

Sunday Morning Tutorials (9:00am - 12:30pm)

SA1: How Ada Object Orientation Works
Jeanne Murtagh, Drew Hamilton

Level — Intermediate.

Recommended Prerequisites: Familiarity with Object Oriented Programming principles in a language such as Ada, Java, or C++ is recommended. Previous experience with C or Ada 83 is strongly recommended.

This tutorial will briefly describe the Object-Oriented (OO) features provided by Ada 95, and then discuss in detail how some of these features are implemented “under the hood.” The bulk of the tutorial will show, via code examples and discussion, how dynamic dispatching is implemented in Ada 95, issues associated with the class tag, and the effort required to add a sibling class and a child class to an existing class hierarchy.

We will briefly discuss several Ada 2005 features, and the value these features add over an Ada 95 implementation of a program.

We will conclude with a brief discussion of the “overloaded vocabulary” issues encountered by Java and C++ programmers as they transition to an Ada 95 or Ada 2005 project “on the fly.”

Sunday Afternoon Tutorials (2:00 - 5:30pm)

SP1: Embedded Systems Engineering with the AADL: Modeling & Analysis
David Gluch

Level — Intermediate.

The SAE Architecture Analysis & Design Language (AADL) is an architecture description language for real-time, fault-tolerant, scalable, embedded, modular multiprocessor systems. It enables the development of highly evolvable systems, early and quantitative analyses of a system’s architecture, and evolution of an architecture model for continued analysis throughout the lifecycle. In this tutorial, we provide an overview of the AADL; demonstrate the AADL’s capabilities in creating and analyzing component-based models of the task and task interaction architectures of embedded software; discuss interfacing to physical devices; highlight AADL capabilities for predictive analyses of operational characteristics such as meeting deadline, response time, and throughput requirements; and describe how the AADL can discover system integration problems early in a development effort.

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

MF1: SPARK - The Libre Language and Toolset for High-Assurance Software
Trevor Jennings

Level — Intermediate

SPARK is an annotated sub-language of Ada which is unambiguous and suitable for rigorous static analysis. It has been extensively used in industrial applications where safety and security are paramount, such as miltary aerospace, rail signaling, and high-grade cryptographic systems.

The design of SPARK aligns closely with rigorous engineering approaches such as PSP/TSP, Six- Sigma, and the principles of the Lean Engineering movement in taking a “zero tolerance” approach to defect reduction.

In this light, SPARK is far more than “just a programming language” - it offers a distinct engineering mindset and discipline for the development of high-assurance systems.

The tutorial, which is extracted from the four-day “Software Engineering with SPARK” course will cover: The rationale and design goals of SPARK, the core SPARK language, and SPARK analyses including information flow, exception freedom, and formal verification, and the impact of SPARK on software process. The tutorial will also cover the “Libre” release of the SPARK technology and the research topics that this opens, such as more advanced forms of analysis and proof, model-checking, and language extensions.

Monday Morning Tutorials (9:00am - 12:30pm)

MA1: Unmanned Systems and Ada
Cynthia Cicalese, Joel Sherrill, Ricky E. Sward, Richard Weatherly

Level — Intermediate

This tutorial provides an introduction to the growing field of Unmanned Systems and the role that Ada plays in solving the challenges presented when designing, building, and operating Unmanned Systems. The tutorial begins with an introduction to the fundamentals of ground, air, and maritime Unmanned Systems and the specific challenges of these systems. The authors will demonstrate how they are using Ada over RTEMS in developing Large Unmanned Ground Vehicles. RTEMS is an open source, real-time operating system that provides a high performance environment for embedded applications on a range of processors and embedded hardware. The attendee will gain hands-on experience in developing an Ada application over RTEMS using an environment that provides a complete GNAT Ada installation with all sources and scripts as well as the prebuilt toolset and simulators. The attendee will gain from this tutorial an understanding of Unmanned Systems and a practical application of how Ada can be used in the development of these systems.

MA2: Ada for Real-Time and Parallel Processing
John W. McCormick

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 (2:00 - 5:30pm)

MP1: Service Oriented Architecture (SOA) Concepts and Implementations for Ada
Ricky E. Sward

Level — Intermediate

This tutorial covers the principles of Service-Oriented Architectures (SOA) including loose coupling, encapsulation, reusability, composibility, etc. The attendee will learn about the Ada Web Server (AWS) and how SOA interfaces, session management, etc. are implemented using AWS. The tutorial will also cover the fundamentals of the Enterprise Service Bus (ESB), a key enabling component of the SOA. Attendees will learn about ESB endpoints, data routing, automatic translations, etc. They will also learn how to connect Ada web services to an ESB, how to expose the web services, and how to use AWS with the ESB through in-class exercises and demonstrations.

MP2: Embedded, Hard, Real-Time Systems with Ada
Pat Rogers

Level — Intermediate/Advanced.

Development of real-time systems is expensive and difficult, in part because of low-level languages that force developers to use facilities that are ad hoc, incomplete, and not portable. The Real-Time Systems Annex of Ada 2005 (along with the language core) represents the state-of-the-art in real-time programming languages and offers an extensive set of standardized packages and facilities for this domain. In addition, the language-defined Ravenscar profile describes a tasking subset that is analyzable for both high-integrity and hard real-time applications, and is small enough for very tightly resource-constrained applications as well. This tutorial examines the packages and pragmas defined by the annex for direct application use, examines the Ravenscar profile, and provides detailed examples of how they both are meant to be applied.

MP3: Multi-Language Programming with Ada
Quentin Ochem

Level — Intermediate.

Building complex applications often requires putting together pieces of software or requirements that have not been made to work together in the first place. Thinking of a project with a high integrity kernel written in Ada, using a set of low level libraries and drivers written in C or C++, with a graphical interface done in Java and unit tests driven by python is not thinking of science-fiction anymore. It?s actual concrete and day-to-day work. Unfortunately, having all of these technologies talking one to another is not straightforward, and often requires a deep knowledge of both sides of the technology and extensive manual work.

In this tutorial, we’ll first study how to interface directly Ada with native languages, such as C or C++. We’ll then have a deep look at communications with languages running on virtual machines, such as Java, Python and the .NET framework. Finally, we’ll see how Ada can be interfaced with an arbitrary language using a middleware solution, such as SOAP or CORBA We?ll see how the communication can be manually done using low level features and APIs, and how a substantial part of this process can be automated using high level binding generators.

last updated 30 November 2009 - cgr