Course: Software Engineering and Technology

Eindhoven University of Technology, Eindhoven
January 21-25, 2013

IPA organises Advanced Courses on each of its major research fields: Algorithmics and Complexity, Formal Methods and Software Technology. Each of these Advanced Courses intends to give an overview of (part of) the research of IPA in this specific field.

The Advanced Course, which is hosted by IPA at the Eindhoven University of Technology, focusses on subject areas in software engineering and software technology where successful research is being conducted by groups in IPA. From several of these areas, functional programming, coordination, model driven architecture and model driven engineering, topics are taken to which an entire course day is dedicated. Course days consist of lectures mixed with active training (exercises, assignments, etc.).

Dates, Location and Programme

The overall schedule of the course is as follows, course days will start at 10.00 and last until approximately 16.30 hours. Short breaks are planned at 11.00 and 14.30 and a lunch break at 12.15-13.30. The lecture room is MF 11 in MetaForum. Click on the titles in the table below to reveal the contents of the lecture and links to the slides and exercises.

21 January, 2013 Doaitse Swierstra and Atze Dijkstra (UU)
Topic: Compiler Construction in Haskell
(Slides and Exercises and Course Webpage) The label ‘Compiler Construction’ covers the kind of software in which a textual (or binary) description of some data, written in a particular language (or datastructure), is compiled (translated) to another description in a (possibly other) language. The traditional niche of programs usually associated with this label deals with translation of programs into executables, but actually most programs involve some form of translation. Compiler Construction techniques are therefore useful in and applicable to many areas dealing with program construction and translation of data.The standard structure of a compiler, or translator, usually consists of the following stages:

  1. Parse (i.e. read) a description of data into an abstract representation of this data, the abstract syntax tree (AST).
  2. Compute, analyse, generate new values using the AST, amongst which usually a translation to another description of parsed data.
  3. Generate output (i.e. write, pretty-print) a newly computed description.

The course will make you acquainted with these 3 stages using Haskell, Parsing Combinators, and Attribute Grammars. After the course you will have had:

    • hands-on experience with the tools we use, including the setup of a proper working environment.
    • a starting point for further exploring the tools by means of a first minimal example.
    • some insight into problem areas and solutions lying beyond the scope of this course, but pointing towards what can be done using the flexibility of the tools.

The practical exercises require a working installation of Haskell and the UU Attribute Grammar system (install with ‘cabal install uuagc’).

22 January, 2013 Ivan Kurtev and Luis Ferreira Pires (UT)
Topic: Model-Driven Engineering
(Slides and Exercises) MDE facilitates software adaptability at relatively high level of abstraction. In MDE, models play a key role in the software development, by driving the development, documentation and evolution of software systems. The main topics of this module are:

  • Model and metamodel
  • Metamodeling stacks (MOF, EMF)
  • Multilevel metamodeling
  • Ontological interpretation of languages
  • Model transformation pattern and scenarios
  • Example transformation languages: ATL
  • Practical work with modeling and model transformation environments

After completing this module, the student is able to:

  • explain the principles and main concepts of metamodeling and model transformations;
  • explain the motivation and benefits of multilevel metamodeling;
  • explain the motivation and benefits of the ontological interpretation of languages;
  • explain the basic constructs of ATL transformation language and to apply ATL in simple transformation problems.
23 January, 2013 Rudolf Mak and Reinder Bril (TU/e)
Topics: Virtualization for real-time systems/Scalability of distributed systems
(Slides and Exercises)
Virtualization for real-time systems. Traditionally, virtualization is a technology allowing a single computer to host multiple virtual machines, where each virtual machine can run a different operating system. Advantages of virtualization include:

  • Fault-containment: failure in one virtual machine will not jeopardize the operation of another virtual machine;
  • Cost-reduction: applications running in different virtual machines can safely share a single platform.

Whereas virtualization in data centers exists for more than a decade, virtualization only entered the embedded systems domain more recently.

In this course, we give an overview of virtualization for real-time systems. In particular, we show how virtualization can allow for independent development and analysis of subsystems with real-time constraints.

Scalability of distributed systems. Many modern distributed systems, such as those behind social media and large web-stores, exhibit exceptional growth rates. This implies that scalability is an important quality attribute of their architecture which has to be taken into account right from the beginning rather than as an afterthought.

There is, however, no consensus on the definition of scalability, and frameworks to deal with it in an architectural setting are scarce. In this lecture we will review and exercise with a few of these definitions.

24 January, 2013 Farhad Arbab, Natallia Kokash and Sung-Shik Jongmans (CWI)
Topic: Coordination
(Slides and Exercises) Complex software intensive systems of today challenge the aptness of traditional software engineering practices because they do not adequately support compositional formal methods to model, construct, and verify the properties of interest in domains such as, e.g., cyber-physical systems, collaborating distributed services, or massively concurrent systems. Overcoming this inadequacy requires formal models for compositional coordination of the behavior of interacting concurrent parts of a system.The term “coordination models and languages” refers to a class of formalisms developed over the past decades, for specification and implementation of interaction protocols for communicating software entities. This class includes Reo: a formalism for compositional construction of interaction protocols, manifested as connectors. A connector in Reo serves as a communication medium that imposes its respective protocol as a constraint on the observable behavior of the components that interact with each other through that connector. Although ostensibly simple, Reo connectors can describe arbitrarily complex protocols.In session we cover the basics of Reo through talks and demos, and describe the various semantic models for its analysis using e.g., mCRL2, UPPAAL, and model-based testing. The students will develop some simple applications, such as a composite service, and go through the process of designing the models using Reo (perhaps starting with UML or BPMN) and Reo’s ECT tools. After verifying their models, the students can go through the process of generating code from Reo to integrate the various components of their design.
25 January, 2013 Marko van Eekelen, Bernard van Gastel and Rody Kersten (RU/OU)
Topic: Resource Consumption Analysis
(Slides and Exercises) Estimating resource consumption is an active research area as it becomes more and more an issue in many applications. Examples of possible application areas include programming for small devices, e.g. smart cards, mobile phones, embedded systems, distributed computing, and safety critical applications. It is important to give as accurate bounds for resource consumption as possible to avoid unnecessarily expensive and even unpractical estimates for small devices and high integrity real-time applications. Furthermore, a proper memory allocation conform an analysed safe upper-bound can avoid security problems due to lack of memory, e.g. in a Denial Of Service attack.Subjects covered will be size analysis, loop bound analysis, heap and stack consumption analysis. Techniques used are e.g. typing, polynomial interpolation, cost models and recurrence solving. Background information can be found on A large part of the covered research has been performed in the NWO AHA project and the EU Artemis CHARTER project.


The venue for the course is Metaforum, a new building that is located behind the main building (“hoofdgebouw”) of the TU/e, marked “MF” on the campus map. The TU/e campus is only a few minutes walk from Eindhoven Central Station. After arriving at the station, take the stairs down from the platform and turn to your right. Exit the station on the north side (bus station) to the main road. Enter the diagonal walk way to your right. At the end you will come to a crossing with a main road, guarded by traffic lights. The entrance to the campus is across the main road. Follow the winding footpath along the circular building till the end. You are now on a square with the main building in front of you and a green glass building to your right.

Course Material

Course material will be handed out during the course. Where possible, this material will be made available for downloading via this page.


The courses are intended for IPA PhD students, giving them an overview of IPA’s research. For IPA PhD students, participation is free of charge (including overnight accommodation if necessary, see below), but registration is required. Other IPA-members can attend if there is capacity left, and the same holds for members of associated research schools. For these categories we will charge costs for the course material, lunches, etc, and IPA will not provide overnight accommodation. Contact us for information regarding pricing. For all categories, in case of no show extra charges may apply.


You can register using the online registration form. The form allows you to specify which course days you will attend. To make the course count as one of the required elements in the “Opleidings- en Begeleidingsplan” of an IPA Ph.D student, at least 80 percent of the course days must be attended. If you require overnight accommodation in Eindhoven for one or more nights during the course, please specify this in the “Remarks” box of the form. Registration closes on Monday 14 January, 2013.


Unlike Spring Days and Fall Days, overnight accommodation is not included for this course. The schedule is set up in such a way that it is feasible for most students to commute. In the event this is not feasible, we will provide basic overnight accommodation.  You can specify your accommodation needs on the registration form.