# Tutorials

Below you can find an overview of the tutorials organised at ASE 2010. Please note that ASE 2010 provides other opportunities to make your attendance even more inspiring and productive !

The full program can be consulted online in the Program section of this website. The tutorials are organized on:

## Tutorial Chairs

Thierry Massart
Département d'Informatique
Université Libre de Bruxelles
Brussels (Belgium)
contact

John Penix
Mountain View, CA (USA)
contact

## Monday 20 September 2010

### T1: Inﬁnite games and program synthesis from logical speciﬁcations

by Christof Loeding
(Morning session)

In 1962 Alonzo Church as posed the problem of automatic synthesis of circuits from logical specifications. In this setting the task is to construct a circuit (or more generally a finite state program) that reads a stream of input signals and produces a stream of output signals. When the circuit to be constructed is a control device, then it can be viewed as a non-terminating process reading an infinite sequence of inputs and producing an infinite sequence of outputs. For a given specification that describes the allowed combinations of input and output sequences, the goal is to automatically synthesize a circuit that satisfies this specification. This problem has been solved by Buchi and Landweber in 1969 for a specification logic that allows to express regular properties of infinite sequences. In their solution the situation is modeled as a game of infinite duration between the input player and the output player with a winning condition for the output player corresponding to the specification. Another solution has been developed by Rabin in 1969 based on automata on infinite trees. These works have initiated a lot of research resulting in a rich and interesting theory of infinite games and their connection to automata theory. The aim of this tutorial is to present the main elements of this theory and its relation to the above mentioned task of automatic program synthesis.

### T2: Domain-Specific Modeling: Enabling Full Code Generation

by Juha-Pekka Tolvanen
(Afternoon session)

Domain-Specific Languages and Model-Driven Development have moved from scattered successes, through industry hype, to increasingly widespread practical use. Well-attested benefits include raising the level of abstraction, improving productivity, and improving quality. The main questions are no longer what or why, but where and how. This tutorial will teach participants about Domain-Specific Modeling and code generation, where they can best be used (and where not), and how to apply them effectively to improve your software development. This tutorial introduces DSM and looks at how it differs from modeling languages like UML that focus more on the level of the code world. This is followed by real-life examples of DSM from various fields of software development. The main part of the tutorial addresses the guidelines for implementing DSM: how to choose where to use it, how to identify the domain concepts and formalize them into a metamodel, different ways of building code generation, and how to integrate generated code with legacy or manually-written code. Participants will have the chance to learn practical skills in language creation and modification exercises.

### T5: Automated Component-Based Verification

by Dimitra Giannakopoulou & Corina Pãsãreanu
(Full day tutorial)

This tutorial will provide a detailed overview of the use of automated techniques for component-based verification of safety-critical systems. The aim of such verification is to exploit the structuring of large systems into components to achieve more scalable verification. Over the last 8 years, the presenters have been developing frameworks that automate assume-guarantee reasoning and component interface generation, for software systems. These frameworks use iterative algorithms to build assumptions or interfaces for software components. The frameworks will be presented and illustrated by means of examples. Application to several realistic systems will also be discussed. Finally, participants to the tutorial will get to use these techniques as implemented within JPF, an Open Source Model Checker for Java programs. This will be a full day tutorial, to allow time for extensive discussion of examples and for hands-on experience.

## Tuesday 21 September 2010

### T3: The use of text retrieval techniques in software engineering

by Andrian Marcus & Giuliano Antoniol
(Morning session)

During software evolution many related artifacts are created or modified. Some of these are composed of structured data (e.g., analysis data), some contain semi-structured information (e.g., source code), and many include unstructured information (e.g., natural language text). Software artifacts written in natural language (e.g., requirements, design documents, user manuals, scenarios, bug reports, developers' messages, etc.) together with the comments and identifiers in the source code encode to a large degree the domain of the software, the developers' knowledge about the system, capture design decisions, developer information, etc. In many software projects the amount of the unstructured information exceeds the size of the source code by one order of magnitude. Retrieving and analyzing the textual information existing in software are extremely important in supporting program comprehension and a variety of software evolution tasks. Text retrieval (TR) is a branch of information retrieval (IR) where the information is stored primarily in the form of text. TR methods are suitable candidates to help in the retrieval and the analysis of unstructured data embedded in software. Most software engineering professionals and researchers are not exposed to TR in their training. This tutorial presents some of the most popular TR methods and their applications in software engineering. Special attention is given to two specific tasks, where the use of TR methods proved to be very successful: concept location in software and traceability link recovery between software artifacts. The tutorial aims at providing the sufficient knowledge for any software engineering researcher or practitioner to start using TR methods in their work.

### T4: Research Methods in Computer Science

by Serge Demeyer
(Afternoon session)

This tutorial is aimed at Ph.D. students who want to have a better grasp on what exactly is “good” research. We will explore the role of research methods in computer science, drawing upon practical examples from empirical approaches in software engineering.

After this tutorial, a Ph.D. student will be able to …

• Name and explain different approaches to conduct computer science research (i.e. feasibility study, case study, comparative study, literature survey, …).
• Understand the peer reviewing process inherent in academic research, including the implications it has for their own research (i.e. writing papers).