21st International Conference on Reliable Software Technologies

Ada-Europe 2016

13-17 June 2016, Pisa, Italy

Tutorials

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

 

  Monday
Morning T1 - A Semi-formal Approach to Software Development
W. Bail
T3 - Embedded ARM Programming with Ada 2012
P. Rogers
T4 - Ada 2012 (Sub)types and Subprogram Contracts in Practice
J. Sparre-Andersen
Afternoon T2 - Software Test and Verification Techniques for Dependable Systems
W. Bail
T5 - Towards Energy Awareness and Predictability in the Linux Kernel
J. Lelli

  Friday
Morning T6 - Access Types and Memory Management in Ada 2012
J.P. Rosen
T8 - Parallelism in Ada, C, Java and C#, Today and Tomorrow
B. Moore, S. Michell
DeCPS Workshop
Afternoon T7 - Using Gnoga for Desktop/Mobile GUI and Web development in Ada
J.P. Rosen

Tutorials will take place Monday, June 13th, and Friday, June 17th, at TeCIP. Morning tutorial sessions run from 09:30 to 13:00, with a break 11:00-11:30. Afternoon tutorial sessions run from 14:00 to 17:30 with a break 15:30-16:00.

 

T1 - A Semi-formal Approach to Software Development

William Bail, The MITRE Corporation

This tutorial will describe an approach to software development that is strongly based in theory but that allows construction without the need to fully apply the theory – the “hidden guiding hand”. It starts with an overview of the history and experience of various development techniques, emphasizing previous formal approaches. It then describes the core activities, starting with requirements development using the enumeration technique.  Based on the requirements, the design and code are generated, driven by the underlying theory (Kleene’s Theorem).  Subsequently, the resulting state machines are transformed into predefined code templates, resulting in the code that conforms to the requirements. Each step is accompanied with a proof of consistency, ensuring that the semantics of the requirements are preserved. Finally, the resulting code is verified using auto-generated test cases defined in accordance with the expected operational profiles to be applied to the system once placed into service

Level

Intermediate. The target audience are those who are responsible for verifying systems at various levels, including testing as well as quality control. Target audience also includes those who are managing such activities

Reasons for attending

This tutorial will provide the attendee with the basic understanding of an effective semi-formal development technique. The perspective gained can be directly applied to development efforts that are not necessarily using formal techniques, resulting in a higher quality product and a more predictable development experience.


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.

Dr. Bail's technical areas of focus include dependable software design and assessment, 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, Ada-Europe, 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. 
 

T2 - Software Test and Verification Techniques for Dependable Systems

William Bail, The MITRE Corporation

The practice of testing is a key aspect of any software development effort, and is tightly intertwined with the construction of the software. In this tutorial we examine the nature of testing as applied to software systems with high expectations of dependability, and present techniques that have been shown to increase quality and dependability. We emphasize that test as a form of verification is more than just a “testing” activity, and includes practices that include testing as well as other valuable techniques, such as reviews, inspections, and audits. We describe these practices, point out their individual strengths and weaknesses, and provide advice on how to select the appropriate practices based on the nature of the system under development. A key aspect of this selection process is correlating the techniques to the different types of requirements, recognizing that the requirements define the desired attributes of the system. We describe some challenges in applying test, and describe how to approach these challenges to improve the results.

Level

Intermediate. The target audience are those who are responsible for verifying systems at various levels, including testing as well as quality control.  Target audience also includes are those who are managing such activities

Reasons for attending

This tutorial will provide the attendee with the basic understanding of different test techniques, and advice on how to select and apply them based on the system to be developed. This information will assist in planning for complex systems development by providing a framework of test practices that will balance cost efficiency with the need to demonstrate that systems are able to deliver their required high levels of dependability

 

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.

Dr. Bail's technical areas of focus include dependable software design and assessment, 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, Ada-Europe, 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.

 

T3 - Embedded ARM Programming with Ada 2012

Patrick Rogers, AdaCore

We present both a tutorial and a developer workshop based on the tutorial material. The workshop will constitute approximately half of the total time.
The tutorial covers the use of Ada in programming embedded systems. We focus on the facilities provided to developers for use at the application level. Hence there are four major sections: the language facilities for embedded systems programming, exploration of selected application-level packages and pragmas defined in the Real-Time Annex for applications with hard deadlines, an overview of the Ravenscar Profile, and the workshop itself. 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. Instructions will be provided to attendees for tools installation prior to the conference.)

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 realtime and embedded programming domains is not required but is obviously helpful.
Reasons for attending Developers will understand the unmatched embedded programming facilities provided by Ada. The low-level programming facilities, so often misunderstood, are covered in detail. In addition, overviews of the Ada realtime programming features corresponding to the target environment typically provided by vendors - including that which is used in the workshop - are included. The hands-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.

 

T4 - Ada 2012 (Sub)types 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.

 

 

 

T5 - Towards Energy Awareness and Predictability in the Linux Kernel

J. Lelli, ARM Ltd.

Today’s widespread adoption of heterogeneous multiprocessor architectures for the mobile market is calling for integrated software solutions that are able to meet always raising user quality of service requirements while still operating on battery constrained devices. Hence, such solutions have to necessarily work tradingoff
energy savings for performance and predictability.
In this tutorial design decisions, implementation details and benchmark results of software solutions developed by ARM Ltd. on this context will be presented. For what concerns tasks scheduling two approaches will be discussed: the first one, named Heterogeneous MultiProcessing (HMP), has already been used in several products, but is not meant for upstream inclusion; the second one, named Energy Aware Scheduling (EAS), is currently well placed for both upstream and product adoption. Also, an implementation of a real-time scheduler targeting applications that requires quality of service guarantees will be presented.
Regarding CPU clock frequency selection, a high level description of the Linux kernel CPUFreq subsystem will be given and a proposed solution addressing shortcomings of the current implementation discussed. Open source tools used to evaluate the proposed solutions will be presented as well.
Most of the material covered by this tutorial is currently proposed for acceptance in Linux; thus this tutorial is an opportunity to get a detailed update about the Linux kernel. Besides that, this tutorial works also as a gentle introduction to several Linux subsystems and how the Linux kernel development process works in general.

Level

Intermediate. No in depth previous knowledge of the topic is required. A general familiarity with some or all the presented subjects is however advised to make actively participating to the tutorial easier.

Reasons for attending

The audience will receive a general introduction to several subsystems of the Linux kernel and will also understand how the Linux kernel development works. These basic notions will be complemented with an indepth analysis of the challenges that heterogeneous systems pose concerning predictability and energy efficiency, and how those are addressed. Finally a set of open source tools that make development, analysis and sharing of results will be presented. At the end of the tutorial the audience will then have gained knowledge about such topics and about the tooling that is necessary to develop and understand new technology.

Presenter

The presenter has an academic background and has given presentations at both academic conferences and industry oriented gatherings. He has also been invited as a keynote speaker on occasions.
The presenter is actively working on the topic as part of his role in ARM Ltd. On a daily basis he also interacts with the Linux community and he is known for his contributions to Linux. He already presented similar material to public audiences attending Linux focused conferences (e.g., Linux Plumbers).

 

T6 - 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.

 

 

 

 

T7 - Using Gnoga for Desktop/Mobile GUI and Web development in Ada

J.P. Rosen, Adalog

Gnoga is a framework and associated tools for developing GUI and Web applications using the Ada language. Gnoga should not be confused with web development frameworks compensating for stateless client/server connections to attempt to create usable UIs, Gnoga uses a bidirectional websocket connection allowing the browser to function as a live rendering engine with instant real time responses for both desktop GUI applications on local machines or remotely over on the web. Gnoga’s framework allows for rapid development of client server desktop, mobile and cloud applications and is far more capable for web application development than any existing framework regardless of language. Gnoga is open source under the “non-viral” GPLv3 with runtime exceptions and may be used for proprietary as well as free applications.
 
Level

Intermediate. Expected audience experience: Casual knowledge of Ada.

Reasons for attending

- Understand how to make GUI applications in Ada independently of the host system (Windows, Mac, Linux).
- Learn how to use the same tools and framework for desktop, mobile and web applications

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.

 

 

 

 

T8 - Parallelism in Ada, C, Java and C#, Today and Tomorrow

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

The tutorial covers the topic of parallelism, and how it can be applied to Ada, C, C#, C++ and Java today. The tutorial starts by showing trends for multicore technologies, and how multicore is the direction of the future when it comes to increasing performance. As systems become more complex, it will be imperative to make better use of the available hardware.  A quick review of Ada tasking and threading concepts should bring everyone up to speed on how one could apply course grained parallelism using tasks and threads. A simple tutorial example will show how this can be tedious and error prone. The example would also highlight missing features that more fine grained parallelism provides, such as load balancing, automatic dividing the problem to pieces of work suitable size for the available cores, and reverting to sequential behaviour if cores are already loaded, or if the code happens to be executing on a single core processor.
The tutorial will show that a library approach would be beneficial if it can eliminate a lot of the code needed to provide the fine grained parallelism so that the programmer can start with a sequential version of the code, and then make minimal changes to the code to introduce parallelism. A discussion of approaches from other frameworks such as Cilk and OpenMP will then be covered, followed by the introduction of the open source Paraffin libraries.

The notion of a tasklet in Ada, strands/tasks in CILK/OpenMP/C++/C#, and streams in Java is introduced. The capabilities of Paraffin are described including capabilities for parallel loops, parallel recursion, and parallel blocks, as well as Paraffin load balancing strategies, Work Sharing, Work Stealing, and Work Seeking. The load balancing approaches of Paraffin will be compared with Cilk and OpenMP. Work Seeking is a strategy unique to Paraffin, which generally yields good results.

The tutorial then works through some simple examples of parallel loops, and parallel blocks.
Attendees will be able to experiment and determine the effects of overriding the control choices. Some of the parameters to experiment with include coming up with answers to the following questions:
- How does changing the number of executors affects the performance relative to the number of cores;
- Comparing and contrasting different model/approaches in Ada/Paraffin, OpenMP, CILK, Java, C, C++, and C#;
- The effect of  lambdas (Java, C# and C++) on parallel system design and how to use them, compared to nested subprograms in Ada, (and supported in gcc C) and a possible design for lambdas in Ada;
- The possibility of adding lambda like capabilities to Ada will be considered and explored.
- How to use reductions and to preserve order when non-commutative reductions are needed.
- What differences are there between reductions involving reducer functions, vs reductions without such functions ?

Level


The tutorial material is targeted for an intermediate level of understanding. 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. A knowledge of Ada or one or more of the other languages is recommended. 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.

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.