20th International Conference on Reliable Software Technologies

Ada-Europe 2015

22-26 June 2015, Madrid, Spain

Tutorials

Improve the benefits of coming to the conference further by attending our tutorials, all given by well-known experts.

Monday
Morning T1 - Access Types and Memory Management in Ada 2012
J.P. Rosen
T3 - Parallelism in Ada, Today and Tomorrow
B. Moore, S. Michell
T4 - Probabilistic Timing Analysis
F. Cazorla, T. Vardanega, J. Abella, M. Pierce.
Afternoon T2 - Designing and Checking Coding Standards for Ada
J.P. Rosen

Friday
Morning T5 - Ada 2012 (Sub)types and Subprogram Contracts in Practice
J. Sparre-Andersen
T7 - Software Measures for Dependable Software Systems
W. Bail
T9 - Real-Time and Embedded Programming with Ada 2012
P. Rogers
Afternoon T6- When Ada Meets Python: Extensibility through Scripting
E. Briot, B. Brosgol
T8- Software Design Concepts and Pitfalls
W. Bail

Morning tutorial sessions run from 09:30 to 13:00, with a break 11:00-11:30. Afternoon tutorial sessions run from 14:30 to 18:00 with a break 16:00-16:30.

Warning: Tutorial T6 will take place on Friday afternoon. Please note that the time is wrong on the printed Advance Program.

T1 - Access Types and Memory Management in Ada 2012

J.P. Rosen, Adalog

In most languages, pointers are either low-level (pure hardware addresses in C), or implicit (Java, C#).
Ada provides explicit pointers, but of a higher level of abstraction (hence the use of the term “access”), disconnected from the hardware level, and as safe as possible. In addition, the language includes sophisticated features for controlling memory allocation and deallocation. While this has great benefits, it may confuse those who are used to pointers in other languages. Proper usage also requires some difficult to grasp notions, like accessibility levels. This tutorial explains all the issues with Ada access types, from basic usage to sophisticated features like remote access types. Many practical examples demonstrate how to use them and how to control memory allocation, and special emphasis is provided for the latest features offered by Ada 2005 and 2012.
A must-attend for all those using access types.

Level

Intermediate. Expected audience experience: Casual knowledge of Ada.

Reasons for attending

  • Understand what makes Ada access types different from other languages’ pointers
  • Explore rarely taught issues, like accessibility levels, storage pools and subpools, remote access types...
  • Learn when and how to use access types – and when not to use them.

Presenter

JP Rosen is a professional teacher, teaching Ada (since 1979, it was preliminary Ada!), methods, and software engineering. He runs Adalog, a company specialized in providing training, consultancy, and services in all areas connected to the Ada language and software engineering. He is chairman of AFNOR's (French standardization body) Ada group, AFNOR's spokeperson at WG9, member of the Vulnerabilities group of WG9, and chairman of Ada-France.

Adalog offers regularly on-site and off-site training sessions in Ada. This tutorial is based in part on the “advanced Ada” course offered by Adalog.

T2 - Designing and Checking Coding Standards for Ada

J.P. Rosen, Adalog

Most companies have developed coding standards (often because having one is a requirement for certification), but few have conducted a real analysis of the value, consistency, and efficiency of the coding standard.

This tutorial presents the challenges of establishing a coding standard, not just for the sake of having one, but with the goal of actually improving the quality of software. This implies not only having “good” rules, but also having rules that are understood, accepted, and adhered to by the programming team.

The issues of automatically checking the rules is also fundamental: experience shows that no manual checking can cover the programming rules to a satisfactory extent. The tutorial presents the tools available, and criteria for choosing such a tool.

This tutorial is an update of the one given at previous Ada-Europe conferences.

Level

Intermediate. Expected audience experience: No special requirement.

Reasons for attending

  • Understand the value of coding standards.
  • Learn how to choose you own coding rules, in a way thats both useful and efficient.
  • Consider the difficulties and pitfalls of introducing coding standard to the development teams, and how to overcome them.

Presenter

JP Rosen is a professional teacher, teaching Ada (since 1979, it was preliminary Ada!), methods, and software engineering. He runs Adalog, a company specialized in providing training, consultancy, and services in all areas connected to the Ada language and software engineering. He is chairman of AFNOR's (French standardization body) Ada group, AFNOR's spokeperson at WG9, member of the Vulnerabilities group of WG9, and chairman of Ada-France.

Adalog offers regularly on-site and off-site training sessions in Ada. Adalog has developed AdaControl, a free popular coding standard checking tool, and has helped several customers in devising their own coding standard.

T3 - Parallelism in Ada, Today and Tomorrow

Brad Moore, General Dynamics Canada, and Stephen Michell, Maurya Software

Since inception, the Ada programming language has supported concurrency and parallelism. A task in Ada provides excellent support for course grained parallelism, but with the advent of multicore technologies, finer grained parallelism solutions are now desired that make it easier to spread the workload across the available cores. This tutorial takes a hands-on approach to explore available solutions that work in Ada today, using the Paraffin open source libraries. Topics covered include: Divide and Conquer problems, load balancing strategies including Work Stealing, Work Sharing, Work Seeking, parallel loops, parallel recursion, parallel blocks, executor pools, reductions, synchronization, real-time parallelism, Ravenscar compliancy, oversubscription avoidance, and strategies for determining where best to inject parallelism.

The tutorial will provide examples to work through, which attendees can use to further their understanding of the concepts. Attendees may also find it interesting to compare their performance results from different operating systems and platforms. The tutorial then explores how syntax proposals being considered for Ada 202x could further simplify how one could express parallelism in their source code. This part of the discussion will describe the notion of tasklets, and also describe how the tasklet model can be applied to tie the proposed syntax to the implemenation behaviour to support general and real-time systems.

The morning session will focus on a quick review of the parallelism and concurrency features built into the Ada 2012 standard, followed by how the Paraffin libraries may be applied to achieve fine-grained parallelism. Various examples and problems will be worked through, which will continue into the afternoon session. The afternoon will conclude by examining the future proposals for parallelism in Ada 202X.

Level

The tutorial material is targeted for an intermediate level of understanding of multicore computing, and the Ada programming language. Familiarity with these topics is helpful, but not essential. Ada 2005 and Ada 2012 features will be used during the presentation but attendees will not need to be familiar with those features, since they are not fundamental to the concepts being presented. The material should be of interest to anyone seeking to improve performance of their code on multicore platforms, and make better use of the available processing resources to solve problems.

Reasons for attending

The attendees will become familiar with divide and conquer parallelism, and how it can be applied in their Ada 2005 and Ada 2012 programs. Attendees will learn how to choose an optimal strategy for a given parallelism opportunity, and develop a better understanding of the effects of various controls and inputs to the parallelism.

Presenters

Brad Moore works as a software engineer at General Dynamics Canada developing communication systems for military use. A long time user of Ada, he became involved with ISO/IEC JTC1/SC22/WG9, the working group maintaining the Ada standard, during the Ada 2005 standardization process, when he also joined the Ada Rapporteur Group (ARG). Since then he has been involved with WG9 and the ARG in the work associated with producing the Ada 2012 version of the standard. He also has been involved in the real-time community for Ada and has participated in recent IRTAW workshops. In 2009, he happened to attend a parallelism conference where a paper was presented entitled “Reducers and other Cilk++ Hyperobjects”. This presentation ignited an interest in parallelism, which led to the development of the Paraffin libraries for Ada. Since then, Brad has been involved in several papers and presentations on the topic of parallelism in Ada. Brad and Steve form part of the gang of four currently developing parallelism proposals to be considered for a future revision of the Ada, standard informally known as Ada 202x. Brad holds a BSc from the University of Calgary, Canada.

Stephen Michell has been a contributing member of the Ada community for more than 30 years. He has concentrated on the safety, security and concurrency aspects of Ada through most of this time. He implemented Ada83 on a multiprocessor platform, was a distinguished reviewer for Ada 9X, authored the initial Guidance for the use of Ada in high integrity systems, helped to develop the Ravenscar Tasking Profile, and is developing proposals for parallelism in Ada. Stephen is also deeply involved in the standardization of programming languages at the international level, chairing the Canadian mirror committee to ISO/IEC/JTC 1/SC 22 Programming Languages subcommittee and convening ISO/IEC/JTC 1/SC 22/WG 23 Programming Language Vulnerabilities working group. Stephen holds a B Mathematics from the University of Waterloo, Canada, and a MSc in Mathematics and Systems Engineering from Carleton University, Canada.

T4 - Probabilistic Timing Analysis

Francisco J. Cazorla, Barcelona Supercomputing Center, Tullio Vardanega, University of Padua, Jaume Abella, Barcelona Supercomputing Center, and Mark Pearce, Rapita Systems Ltd.

The market for Critical Real-Time Embedded Systems (CRTES) is experiencing an unprecedented growth. The inclusion in CRTES of increasingly sophisticated value-added functions, such as for example Advanced Driver Assistance Systems, causes CRTES makers to continue to seek increasingly more guaranteed computation performance. CRTES designers also consider mixed-criticality solutions so that more functional value can be obtained per unit of product. Probabilistic techniques may greatly aid in this regard. In particular, with Measurement-Based Probabilistic Timing Analysis (MBPTA) methods the execution time of the application can be accurately modelled – at some level of execution granularity – by a probability distribution. MBPTA seeks to determine worst-case execution time (WCET) estimates for arbitrarily low probabilities of exceedance, termed probabilistic WCET or pWCET. Even if any pWCET may in principle be exceeded, this can only happen with a given probability, which can be determined at a level low enough for the application domain; for example, in the region of 10-15 per hour of operation, largely below the acceptable probability of failure in certified systems.

In the last few years, probabilistic timing analysis (PTA) in general, and MBPTA in particular, has emerged as a viable alternative to classic timing analysis approaches. Owing to its observation-based nature, MBPTA requires considerably less information on the detailed internal behaviour of the hardware and the software of the system, which is instead the crux of classic WCET methods. PTA has become an acknowledged area of scientific interest with an increasing number of active researchers and a good and rising score of publications. As a testimony to that, the last 2 RTSS editions (2012 and 2013) have had 1 paper in PTA and ECRTS 2014 has 4 papers on PTA related topics and a specific session on Probabilistic Methods. Furthermore, the Best Paper Award in the DAC 2014conference went to a PTA-related paper. There also is high industrial interest on PTA, sensed via direct and indirect participation in the PROXIMA project, which focuses on furthering PTA methods and technology for multicore and manycore processors.

This tutorial introduces attendees to Measurement-Based Probabilistic Timing Analysis (MBPTA) with emphasis on its properties from the end user point of view and its requirements on the underlying hardware and software platform. Through didactic material and several examples, the audience will be exposed to understanding MBPTA concepts. The tutorial also presents the current advances of MBPTA and the main challenges it has to address to be increasingly used by industry.

The tutorial will consist on two main parts: An introductory part to PTA and MBPTA and a hands-on session.

The morning introductory session will cover the basics of PTA as well as the latest techniques on PTA:

  • Introduction to PTA technology
  • PTA bottom-up:
    • PTA-enabling hardware designs
    • PTA-enabling software designs
  • Challenges in deriving pWCET estimates on COTS processors
  • The case of cache memories
  • Conclusions and outlook

Afternoon hands-on session: We will carry out a set of exercises using PTA tools so that the audience can get hands-on experience with PTA techniques and technology. To that end, the attendees will be provided a virtual machine to be run in their laptop on which experiments will be carried out.

Each attendant is required to have a laptop with a standard Linux or Windows distributions. They will be provided a virtual machine with a set of preinstalled PTA tools.

Level

Introductory. The audience should have basic knowledge on real-time systems and be familiar with basic concepts of WCET analysis, knowing the basic difference between static and measurement-based timing analysis. No prior knowledge on PTA is required.

Reasons for attending

The envisioned tutorial will cause benefits in two directions:

  • Introducing researchers and industrial practitioners to the PTA requirements, benefits, and basic functioning. With PTA acknowledged as a fertile area of research, this part of the tutorial will allow participants to catch up with the essentials of PTA faster and to a greater depth.
  • Expose participants to the latest advances in PTA for method, techniques and requirements on the hardware and the software of the system, with a view to how they compare to other techniques in the state of the art.

Presenters

Francisco J. Cazorla is the leader of the CAOS research group at BSC and researcher in the Spanish National Research Council (IIIA-CSIC). Francisco has led several bilateral projects with industry: IBM, Sun Microsystems (now Oracle) and the European Space Agency. He also currently leads the PROXIMA FP7 STREP EU project. He has three submitted patents on the area of hard-real time systems. His research area focuses on multithreaded architectures for both high-performance and real-time systems on which he is co-advising ten PhD theses. He has co-authored over 80 papers in international refereed conferences. He spent five months as intern in IBM‘s T.J. Watson in New York in 2004.

Tullio Vardanega is at the University of Padua, Italy, since January 2002. He holds a master degree in Computer Science from the University of Pisa, Italy, and a PhD in Computer Science from the Technical University of Delft, Netherlands. He worked at European Space Agency Research and Technology Center from July 1991 to December 2001. At the University of Padua, he teaches and leads research in the areas of high-integrity distributed real-time systems and advanced software engineering methods. He has a vast network of national and international research collaborations. He has co-authored 90+ refereed papers and held organizational roles in several international events and bodies, for ESA, the European Commission, ISO, IEEE and Ada-Europe.

Jaume Abella is a senior PhD. Researcher in the CAOS group at BSC and member of HIPEAC. He worked at the Intel Barcelona Research Center from 2005 to 2009 in the low-level design and modelling of circuits and microarchitectures for fault-tolerance and low power, and led the group on memory hierarchies. Jaume authored 15 patents at Intel. He joined the BSC in 2009 where he is in charge of hardware designs for FP7 PROXIMA, BSC certification activities in VeTeSS, and involved in H2020 SAFURE and two ESA projects. He has authored more than 80 papers in top conferences and journals in the area. He has advised 6 PhD/master students and is co-advisor of 7 PhD/master students.

Mark Pearce is a Software Engineering specialist working with Rapita Systems Limited. He is currently actively involved in a number of research and development projects developing probabilistic timing analysis techniques and other timing solutions for multi-core architectures. Prior to this, he has gained extensive experience working on complex embedded real-time systems in a number of industry sectors including aerospace, defence and manufacturing. Whilst developing broad experience across the entire software life cycle, he has also specialized in the area of testing and integration. Mark gained a B.Eng degree studying Microelecronics and Microprocessor Applications and an MBA through study at Henley Management College.

T5 - Ada 2012 (Sub)type and Subprogram Contracts in Practice

Jacob Sparre Andersen, JSA Research & Innovation

One of the important, new features in Ada 2012 is a streamlined support for contract- based programming with “contract aspects”. They allow the programmer to specify even more details about types and subprograms in a formal and testable form. If used carefully, they can make package specifications easier to read, and help identifying use and implementation errors faster.

To really make sense, it is important that the contract aspects are applied in a consistent way. The goal of this tutorial is to help the programmer in that direction. It is organised in three sections: An introduction to Ada 2012 contract aspects. Guidance on how one can ensure a consistent application of contract aspects across a whole package. And finally a guided, practical exercise in applying contract aspects.

Level

The tutorial is intended to be on an intermediate level. The intended audience is software engineers, who already know Ada, but have not yet used the new “programming by contract” aspects added in Ada 2012.

It is advised that the attendees bring laptops (with an Ada 2012 compiler installed) along for the tutorial, even if the practical exercises can be worked through with pen and paper.

Reasons for attending

The tutorial will give the participants guidance and practical exercises in applying contract aspects consistently across a set of (sub)types and subprograms.

The tutorial is intended to prepare existing Ada programmers for using Ada 2012 contract aspects in future projects.

Presenter

Jacob Sparre Andersen has previously given talks and tutorials on the use of Ada 2012 for contract- based programming at Ada-Europe 2013, DANSAS'13, FOSDEM 2014, Ada-Europe 2014, Linux- Day/Cagliari 2014 and FOSDEM 2015.

He has previously taught on courses in physics, mathematics, statistics, software engineering (and financial instruments).

Jacob Sparre Andersen runs his own consulting company in Hørsholm, Denmark. See http: //www.jacob-sparre.dk/cv/ for a full curriculum vitae.

T6 - When Ada meets Python: Extensibility through Scripting

Emmanuel Briot and Ben Brosgol, AdaCore

Python, like many scripting languages, lends itself quite well to controlling or working cooperatively with applications written in other languages; in so doing it allows such applications to be customized or extended by their users.

In the first part of this tutorial we will summarize the main elements of the Python language and describe the consequences of Python’s dynamic typing, its memory management mechanism, and related topics. In the second part we will explain how Python code can be integrated into existing Ada applications (without recompiling) through a freely available API in the GNAT Components Collections (GNATColl.Scripts) and then discuss specific usage scenarios. We will show how GNATColl.Scripts is used for extensibility in the GNAT Programming Studio (GPS) IDE and will also summarize how to use Python in connection with gdb and pretty printers.

Level

Intermediate level. Attendees should be familiar with Ada 95 or a more recent version of the language standard. Knowledge of Python is not required.

Reasons for attending

Attendees will learn how to exploit the benefits of a scripting language in conjunction with Ada, in particular how to use Python to extend existing applications with new functionality.

Presenters

Emmanuel Briot has been with AdaCore since 1998. He has been involved in a variety of projects, in particular oriented towards graphical user interfaces, including GtkAda, GPS, XML/Ada, the GNAT Components Collection, GNATtracker, and AdaCore’s internal Customer Relations Management tool. He holds an engineering degree from the Ecole Nationale des Telecommunications (Brest, France).

Dr. Benjamin Brosgol joined AdaCore in 2000 and is a senior member of the technical staff. He has been involved with programming language design and implementation for more than 30 years, concentrating on languages and technologies for high-integrity systems. He participated in the design of Ada 83 and Ada 95, and he was a member of the Expert Group for the Real-Time Specification for Java. Dr. Brosgol holds a BA in Mathematics from Amherst College, and MS and PhD degrees in Applied Mathematics from Harvard University.

T7 - Software Measures for Dependable Software Systems

William Bail, The MITRE Corporation

Software measurement is a key practice in software development, allowing developers to monitor the emerging attributes of the software product as well as the processes used to develop the product. Such monitoring is crucial in order to achieve the desired attributes of the system and avoid surprises late in the system development, which would negatively affect cost and quality. The exercise of proper and appropriate software measurement can assist in this goal. One key is to select and apply the right measures, and to avoid those that do not provide useful information. There is a temptation to collect many metrics with the idea that more data is better. Such a collection strategy results in wasted effort and at times misleading indicators such as false positives and false negatives.

This tutorial surveys the range of popular and effective measures, and provides guidelines for their selection, application, and interpretation. It provides an assessment of the utility of many popular measures, and makes recommendations for effective subsets that provide cost-effective feedback and predictive information.

Level

Intermediate. The target audience should be familiar with software development and code construction, as well as aspects of software management. Attendees should have at least 2 years experience in software development, involving hands-on experience in software measurement.

Reasons for attending

This tutorial will provide the attendee with the basic understanding of the role of software measures and how they can be used to support the management of a software development project. The tutorial will also discuss different categories of measures and how to select specific measures based on the nature of the development effort. The information presented will help attendees in establishing and conducting an effective metrics program will focus on measures that provide utility and that are cost-effective, ensuring that any emerging issues are identified early providing an opportunity for correction.

Presenter

Since 1990, Dr. Bail has worked for The MITRE Corporation in McLean VA as a Computer Scientist in the Software Engineering Center (SWEC) . MITRE is a not-for-profit corporation chartered to provide systems engineering services to the U.S. Government agencies, primarily the DoD, the FAA, and the IRS. Within MITRE, the SWEC focuses on supporting various programs with consultation, particularly transitioning emerging technologies into practice. He has written software measurement policy and guidance for multiple customers.

Dr. Bail's technical areas of focus include dependable software design and assessment, metric definition and application, error handling policies, techniques for software specification development, design methodologies, metric definition and application, and verification and validation. Prior to 1990, Dr. Bail worked at Intermetrics Inc. in Bethesda MD.

From 1989 to 2011, he served as a part-time Adjunct Professor at the University of Maryland University College where he develops instructional materials and teaches courses in software engineering, in topics such as Software Requirements, Verification and Validation, Software Design, Software Engineering, Fault Tolerant Software, and others. Previously, Dr. Bail taught part-time at The University of Maryland from 1983-1986 in the Computer Science Department for undergraduate courses in discrete mathematics, computer architecture, and programming language theory.

Dr. Bail has presented tutorials on Cleanroom Software Engineering, Semi-Formal Development Techniques, Statistical Testing, and Requirements Engineering for Dependable Systems at SIGAda, AdaEurope, NDIA Systems Engineering Conference, and other conferences.

Dr. Bail received a BS in Mathematics from Carnegie Institute of Technology, and an MS and Ph.D. in Computer Science from the University of Maryland.

T8 - Software Design Concepts and Pitfalls

William Bail, The MITRE Corporation

Software design is a key activity in overall software development - without some aspect of design, SW development cannot take place.. Software design is tightly intertwined with the requirements engineering process. Understanding its concepts and principles is essential to being able to develop large, dependable software systems. It is also important to understand how design relates to the other development activities.

This tutorial will present a perspective of design and provide the framework within which software design efforts can be formed. This tutorial will not provide in-depth analysis of all facets of design due to time limitations. The design of software involves the transformation of the system’s requirements into an arrangement of components whose interactions will satisfy the allocated requirements. All designs have inherent properties, with not all designs having the same properties, resulting in a need to select a design for a system that is coherent with the system’s intended role and usage profile. In addition, there are commonly-used design patterns selected for their properties, but some patterns are less effective, creating pitfalls.

The tutorial will examine the core concepts of software design and architecture, and explain how design relates to the requirements assigned to the system. It will discuss design-related standards and present some design quality attributes which need to be assessed as systems undergo the design process. In addition, the tutorial will provide some examples of good and faulty design. The tutorial will also discuss unsolved areas of design and areas where research is needed to fill in gaps in knowledge. The tutorial will describe the SWEBOK view of design and how it relates to the information being presented.

Level

Intermediate, with the target audience being those practitioners responsible for creating a design for software systems.

Reasons for attending

The tutorial will present a perspective of design and provide the framework within which software design efforts can be formed. It will provide practical guidance on how to approach a design effort, and will give insight into detecting design qualities. It will also provide some trade-offs in selecting design techniques. The tutorial will discuss issues and challenges commonly encountered in development projects today, and will describe some heuristics in overcoming the risks inherent in these challenges.

Presenter

Since 1990, Dr. Bail has worked for The MITRE Corporation in McLean VA as a Computer Scientist in the Software Engineering Center (SWEC) . MITRE is a not-for-profit corporation chartered to provide systems engineering services to the U.S. Government agencies, primarily the DoD, the FAA, and the IRS. Within MITRE, the SWEC focuses on supporting various programs with consultation, particularly transitioning emerging technologies into practice. He has written software measurement policy and guidance for multiple customers.

Dr. Bail's technical areas of focus include dependable software design and assessment, metric definition and application, error handling policies, techniques for software specification development, design methodologies, metric definition and application, and verification and validation. Prior to 1990, Dr. Bail worked at Intermetrics Inc. in Bethesda MD.

From 1989 to 2011, he served as a part-time Adjunct Professor at the University of Maryland University College where he develops instructional materials and teaches courses in software engineering, in topics such as Software Requirements, Verification and Validation, Software Design, Software Engineering, Fault Tolerant Software, and others. Previously, Dr. Bail taught part-time at The University of Maryland from 1983-1986 in the Computer Science Department for undergraduate courses in discrete mathematics, computer architecture, and programming language theory.

Dr. Bail has presented tutorials on Cleanroom Software Engineering, Semi-Formal Development Techniques, Statistical Testing, and Requirements Engineering for Dependable Systems at SIGAda, AdaEurope, NDIA Systems Engineering Conference, and other conferences.

Dr. Bail received a BS in Mathematics from Carnegie Institute of Technology, and an MS and Ph.D. in Computer Science from the University of Maryland.

T9 - Real-Time and Embedded Programming with Ada 2012

Patrick Rogers, AdaCore

We present both a tutorial and a developer workshop based on the tutorial material.

The tutorial covers the use of Ada in programming real-time and/or embedded systems. We focus on the facilities provided to developers for use at the application level, but also cover the required run-time library semantics. Hence there are four major sections: the language facilities for embedded systems programming, the standard run-time library support for analyzing and meeting hard deadlines, the application-level packages and pragmas defined in the Real-Time Annex for applications with hard deadlines, and the Ravenscar Profile. The focus is on the rationale and expected usage of the facilities, with extensive examples.

The developer workshop allows the student to put some of the material learned in the tutorial section into practice using an ARM-based embedded target platform providing a Ravenscar-compliant run-time environment. AdaCore will provide an Ada 2012 tool-chain and several ARM-based target boards. Students may keep both the tools and ARM board at the end of the day, if they wish. (Students must provide their own computers having at least one USB port and the ability to run Windows or Linux either natively or in a virtual machine.)

Level

This tutorial is intended for developers familiar with some of the more advanced features of Ada, including tasking and access types. Hence it is an upper-intermediate to advanced tutorial. Prior experience in the real- time and embedded programming domains is not required but is obviously helpful.

Reasons for attending

Developers will understand the unmatched real-time programming facilities provided by Ada. In addition, the low-level programming facilities, so often misunderstood, are covered in detail. The hand-on developer’s workshop will make these facilities concrete.

Presenter

Patrick Rogers is product manager for bare-board systems and a Senior Member of the Technical Staff with Ada Core Technologies, specializing in high-integrity and real-time application support. A computing professional since 1975 and an Ada developer since 1980, he has extensive experience in real-time applications in both embedded bare-board and POSIX-based environments. An experienced lecturer and trainer since 1981, he has provided numerous tutorials and courses in real-time programming, software fault tolerance, hard real-time schedulability analysis, object-oriented programming, and the Ada programming language. He holds B.S. and M.S. degrees in computer science from the University of Houston and a Ph.D. in computer science from the University of York, England, as a member of the Real-Time Systems Research Group.