Design of multithreaded software: The entity-life modeling approach

IEEE Computer Society Press/Wiley 2011

ISBN-13: 9780470876596

This book is intended for designers and programmers of multitask software. While it contains an overview of the tasking/threading support in Ada and Java, it is really intended for architects, designers and programmers who understand tasking/threading. It introduces entity-life modeling, an intuitive design approach. With entity-life modeling, you pattern tasks on event threads in the problem domain much as an object-oriented program is patterned on objects in the problem domain. With multiprocessors and cores becoming commonplace, we should stop regarding concurrency as a pragmatic engineering device and view it as another way to model the problem structure in the software.

The book is more Ada oriented than the title suggests. Most examples are in Ada. Earlier versions of the manuscript have been available on the Web for some time under the title Multithreading.

I. Foundations
1. Introduction
2. Support for multithreading (Ada, Java and Real-Time Java, and Pthreads)
3. State modeling

II The ELM way
4. Entity-life modeling
5. Design patterns based on event threads
6. Event-thread patterns for resource sharing
7. Simultaneous exclusive access to multiple resources

III Background and discussion
8. Real-time software architectures and data-flow design approaches
9. The origins of entity-life modeling

Author: Bo Sandén (Colorado Technical University)
Keywords: Ada 2005; reactive software; embedded software; real-time systems programming; object-oriented programming; software design; software architecture; multithreading; multitasking; thread architecture

Link to the publisher's server  

Concurrent and Real-Time Programming in Ada 2005

Cambridge University Press, 2007

ISBN-13: 9780521866972

Ada is the only ISO-standard, object-oriented, concurrent, real-time programming language. It is intended for use in large, long-lived applications where reliability and efficiency are essential, particularly real-time and embedded systems. In this book, Alan Burns and Andy Wellings give a thorough, self-contained account of how the Ada tasking model can be used to construct a wide range of concurrent and real-time systems. This is the only book that focuses on an in-depth discussion of the Ada tasking model. Following on from the authors' earlier title Concurrency in Ada, this book brings the discussion up to date to include the new Ada 2005 language and the recent advances in real-time programming techniques. It will be of value to software professionals and advanced students of programming alike: indeed every Ada programmer will find it essential reading and a primary reference work that will sit alongside the language reference manual.

Authors: Alan Burns & Andy Wellings (University of York)
Keywords: Ada 2005; real-time systems programming; object-oriented programming; book

Link to the publisher server  

Ada Plus Data Structures: An Object-Oriented Approach, Second Edition

Jones and Bartlett Publishers, 2007

This is the most up-to-date, student-friendly Ada text available. Using the newly updated Ada 2005, the text introduces and discusses such familiar topics as strings, sets, stacks, queues, lists, trees, graphs, and much more. The recurring theme throughout the text is modeling with levels of abstraction, presenting each class from three different perspectives: their specification, their abstraction, and their implementation. Using this approach, the authors stress computer science theory and software engineering principles including information hiding, data encapsulation, data abstraction, stepwise refinement, and visual aids. With its Object-Oriented presentation, real-world applications, and traditional Dale Pedagogy, Ada Plus Data Structures is a pleasure to read and learn from.

Authors: Nell Dale and John McCormick
Keywords: Ada 2005; Programming; book

Link to the publisher server  


Programming in Ada 2005

Addison Wesley, 2006

ISBN13: 9780321340788, ISBN10: 0321340787

Ada has carved itself a niche in the safety-critical/embedded/real-time areas. It is the language of choice in application areas where reliability, long term maintainability and similar features are very important. Typical of such areas are defence embedded systems, railway signalling, air traffic control and so on. Note especially that SPARK which is very successful for critical systems is based on Ada. No other language really has a suitable underlying structure. This latest edition of the highly successful Programming in Ada has been fully updated to the latest version of the language: Ada 2005.

Author: John Barnes
Keywords: Ada 2005; GNAT, SPARK, programming; book

Link to the publisher server (10% discount)  

Ada Distilled: An Introduction to Ada Programming for Experienced Computer Programmers

Copyright AdaWorks Software Engineering, 2002

This book is aimed at experienced programmers who want to learn Ada at the programming level. It is not a "...for dummies" book, nor is it intended as a program design book. Instead, we highlight some key features of the Ada language, with coded examples, that are essential for getting started as an Ada programmer. This book emphasizes syntax, control structures, subprogram rules, and how-to coding issues rather than design issues. There are other really fine books available that deal with design. Also, this is not a comprehensive treatment of the Ada language. The bibliography lists some books that can help you once you have finished the material in this book. Think of this a quick-start book, one that enables you, the experienced programmer, to get into the Ada language quickly and easily. The examples use text-oriented programs for simplicity of learning. If you prefer to do the exercises for a GUI environment, check out the sites listed for compilers and tools so you can download bindings for programming in a variety of windowing environments, including Wintel, Linux, and Unix. Of particular interest to those wanting to explore Window style programming are GtkAda, CLAW, GWindows, and JEWL.

Author: Richard Riehle
Keywords: Programming, Ada 95; book
License: Public Edition. Permission to copy if AdaWorks is acknowledged in copies.
Version: July 2003


Programming and Problem Solving with Ada 95, Second Edition

Jones and Bartlett Publishers, 2000. ISBN: 0763707929

Programming and Problem Solving with Ada 95 provides a solid introduction to programming while introducing the capabilities of Ada 95 and its syntax without overwhelming the student. The book focuses on the development of good programming habits. This text offers superior pedagogy that has long defined computer science education, including problem solving case studies, testing and debugging sections, quick checks, exam preparation, programming warm-up exercises, and programming problems.

Authors: Nell Dale, Chip Weems, John W. McCormick
Keywords: Ada 95; Programming; book

Link to the publisher server

Ada for Software Engineers

John Wiley & Sons, 1998, ISBN 0-471-97912-0

This book teaches the language as it is used in practice through relatively large case-studies such as a discrete event simulation. The presentation emphasizes the features for object-oriented and systems programming that were introduced in Ada 95.

Author: M. Ben-Ari
Keywords: Software Engineering, Ada 95; book
License: Copyright 2005 by M. Ben-Ari. You may download, display and print one copy for your personal use in non-commercial academic research and teaching. Instructors in non-commerical academic institutions may make one copy for each student in his/her class. All other rights reserved. In particular, posting this document on web sites is prohibited without the express permission of the author.

Link to the download server  

Ada95: the Craft of Object-Oriented Programming

Prentice Hall Europe, 1996 (ISBN 0-13-230350-7)

This text teachs Ada by concentrating on a relatively small number of examples which are capable of improvement and to refine them throughout the book. The result is that the order of topics is primarily example driven; new topics are introduced by adding extra 'bells and whistles' to existing examples. The examples start with the traditional 'Hello world' program and gradually get more and more elaborate, culminating in two reasonably sized examples: an electronic diary and a spreadsheet. Although these are only about a thousand lines of code each in their final versions, they nevertheless show the sort of maintenance problems that arise in 'real world' applications and illustrate how careful design can alleviate such problems.

Author: John English
Keywords: Software Engineering, Ada 95; book
License: Permission is given to redistribute this work for non-profit educational use only, provided that all the constituent files are distributed unchanged and without charge.

Link to the download server  

GNAT: The GNU Ada Compiler

Free book that documents the internals of the GNAT compiler.

Authors: Javier Miranda and Edmond Schonberg
Keywords: book; compilation; gnat
License: GNU Free Documentation License

ZIP (contains HTML, PostScript and PDF).

Teaching Materials

Teaching Ada by Examples

Prof. Ted Baker teaches Ada as one of the parts of a general programming languages course. He found that running through a catalog of Ada features in class would take too much time, so he decided to try teaching Ada by examples, introducing various Ada language features in the examples that he uses for illustration of language implementation concepts (so far, mainly scanning and recursive descent parsing). For example he uses exception handling for error recovery, and explains how Ada does it as he walks through the code of the parser. In addition he starts with fully qualified names, and then introduce renaming declarations in the examples to shorten the code to fit better on the web pages. This web server provides his collection of examples but also some introductory material to the Ada language (documents originally writen by Robert Dewar and Ed Schonberg and slightly extended by Ted Baker).

Author: Ted Baker
Keywords: Programming languages, Ada; examples

Link to the download server  

Course on Compilers Construction (Slides)

This course covers the following items: architecture of a modern compiler (GNAT), lexical scanning, parsing, automatic parser construction, semantic analysis, type checking, run-time organization, intermediate code generation, code generation, and optimization techniques.

Author: Edmond Schonberg
Keywords: Compiler construction, GNAT; slides

Link to the download server  

Ada 95 Distributed Systems Annex (Slides)

These slides are used to teach Ada distributed systems at ENST.

Author: Laurent Pautet; Franco Gasperoni
Keywords: teaching material; distributed systems
Compatible with GAP version: all (checked by Thomas Quinot)
License: GNU Free Documentation License


Laboratory Materials

The GNAT-on-Mindstorms project

Authors: AdaCore
Description: The GNAT-on-Mindstorms project aims at porting the GNAT technology to the Lego Mindstorms NXT. The final goal of the project is to provide an ideal platform to aswer the industrial need for education in High-Integrity Embedded Systems development.
PDF Slides

Real-Time Embedded Systems Lab (Model Train Laboratory)

Authors: John W. McCormick Team
Address: Computer Science Department. University of Northern Iowa.
Description: Describes how to mount a model train laboratory that allows your students to experiment with real-time concepts in a nice environment.

Link to the Main Page
Direct link to the video


Run-Time System for GAP compilers based on MaRTE OS

This run-time for x86-Linux is based on MaRTE OS acting as a threads-library. Since it does not rely on Linux threads (as the other run-times for x86-Linux do) it allows Ada programs to have a behaviour that follows the Real-Time Systems Annex (proper use of priorities and FIFO_Within_Priorities scheduling policy) without super-user privileges.

Authors: Mario Aldea Rivas and Michael Gonzalez Harbour
Keywords: Run-Time System; Real-Time Ada; GNAT.
Compatible with GAP version: GAP 2005a
License: GPL

Index page on U. Cantabria site.

MARTE OS: Real-Time kernel

Real-time kernel for embedded applications that follows the Minimal Real-Time POSIX.13 subset. Most of its code is written in Ada with some C and assembler parts. Although originally intended for embedded systems, MaRTE OS has been also adapted to behave as a POSIX-threads library for the Linux operating system. The current version incorporates the ability to run a MaRTE OS program as a linux process.

Authors: Mario Aldea Rivas and Michael Gonzalez Harbour
Keywords: Operating System; Real-Time; POSIX.
Compatible with GAP version: all (checked by Javier Miranda)
License: GPL

Index page on U. Cantabria site.

Win_IO: A Set of Packages for Simple Graphical Input and Output

Win_IO is a set of packages for graphical input and output. It is designed specially for students or Ada users who do not want to spend their time learning a complex graphical user interface, but who are "tired" of the old-fashioned text-oriented input and output.

Author: Michael Gonzalez Harbour
Keywords: GUI; Windows; portable
Compatible with GAP
License: GPL

Index page on U. Cantabria site.

Tools and Utilities


Authors: The LISYC Team (mainly by Frank Singhoff)
Keywords: Real-time Ada scheduling tools; queuing system;
License: GPL
Copyright owners: University of Brest, Frank Singhoff, Alain Plantec
Description: Cheddar is a real time scheduling Ada framework designed for prototyping of real time schedulers and for educational purpose. The Cheddar framework is a set of Ada packages which aims at performing performance analysis of real time architectures. It includes analytical scheduling tools and most of classical scheduling simulation algorithms. The Cheddar framework also offers a domain specific language and a set of tools (eg. interpreters, compilers) for the design and the analysis of schedulers which are not already implemented into the framework.
Main page in the University of Brest.


Author: Martin C. Carlisle.
Address: US Air Force Academy. Department of Computer Science.
Keywords: GAP tools; utilities
License: Public Domain
Description: Allows user to easily add remove libraries from GNAT GAP


Author: Martin C. Carlisle.
Address: US Air Force Academy. Department of Computer Science.
Keywords: GAP tools; utilities
License: Public Domain
Description: Wrapper that opens exe and source file in GAP debugger

USAFA Utilities

Miscellaneous Ada utilities from US Air Force Academy
Keywords: .NET; A#; programming tools; utilities
Compatible with GAP.
License: see distribution
Index page on the USAFA site.