T1: The Theory and Practice of Modeling Language Design for Model-Driven Development
Monday 15 Sept 2008, 9:00 - 12:30

Bran Selic
Malina Software Corp.

Model-driven development (MDD), while far from being a panacea, has demonstrated its effectiveness in alleviating some of the most critical design hurdles that impede the design and development of complex software systems. There are numerous examples of large-scale industrial systems that were developed using MDD techniques and technologies. Unfortunately, although models and modeling have a long tradition in software, there is still no established systematic theoretical framework to support MDD. This tutorial focuses on one particularly vital aspect of MDD: the design of modeling languages for MDD. The objective is not only to provide an overview of the current state of the art in modeling language design, but also to identify key open issues and research directions that would lead to a sound theory of modeling-language design comparable to that which already exists for programming languages. The first part of the tutorial examines the overall MDD landscape. Next, two widely used modeling language standards are described in somewhat greater detail: the Meta Object Facility (MOF) and the most recent version of the Unified Modeling Language (UML 2). Different approaches to so-called domain-specific modeling language design are covered next. This is followed by a brief survey of model transformation techniques used for automatic code generation as well as model-to-model translations. The tutorial concludes with a survey of current research trends and challenges.


T2: Autonomic Computing: basic concepts and existing infrastructures
Monday 15 Sept 2008, 14:00 - 17:30

Luciano Baresi, Elisabetta De Nitto, Raffaela Mirandola
Politecnico di Milano

The term Autonomic Computing has been introduced by IBM in its Manifesto where it was seen as a way to deal with complexity of IT systems by introducing some self-management mechanisms into the systems themselves. The scope of autonomic computing has been broadening over time, becoming a challenge not only to support the management of enterprise systems, but also to build pervasive, distributed systems able to dynamically evolve during their lifetime. In this context, the interesting and critical aspect is to have global behaviors emerging from the cooperation and interaction among distributed and independent components, that are able to create some networks of cooperation whenever it is needed. In this tutorial we aim at providing an overview of the field and at presenting existing infrastructures, including the one that has been developed within the Cascadas FET IP project. The tutorial starts with an overview talk (Chapter 1) followed by talks on specific topics. In particular, Chapter 2 will focus on the presentation of the existing infrastructures to support the development of autonomic systems, while Chapter 3 will focus on the approach that we are developing within the Cascadas project. The tutorial will be highly interactive and attendees will be encouraged to ask questions and make comments at any time.


T3: Developing Language-Specific IDEs for Eclipse Using the IDE Meta-tooling Platform (IMP)
Tuesday 16 Sept 2008, 9:00 - 12:30

Robert M. Fuhrer, Stanley M. Sutton
IBM T. J. Watson Research Center

New programming languages are regularly proposed, and the number of extant programming languages continues to grow. The utility and success of a new language can depend significantly on the availability of a supporting technology, notably an integrated development environment (IDE). The Eclipse Java Development Toolkit (JDT) is one of the best examples of a modern IDE. However, a full-featured IDE, such as the JDT, is large and complex and its development can require more time and effort than the language it is intended to support. To address this problem, we have developed IMP: the IDE Meta-tooling Platform, an Eclipse Technology project (http://www.eclipse.org/imp/). IMP facilitates the creation of language-specific IDEs in Eclipse. It simplifies and speeds the IDE development process through the combination of a language-independent framework, automated generation of skeletons for language-specific service implementations, and support for the completion of service implementations by declarative specification or focused imperative programming. The IMP IDE development process is iterative and selective, and it allows for the incremental customization of IDE services. This tutorial will give participants an overview of IMP and take them through the hands-on development of a working Eclipse-based IDE for a simple (but non-trivial) programming language. The process will address language definition; parser generation; editor services such as token coloring, text folding, reference resolution, hover help, documentation providers, content assist, and hyper-linking; the outline view; a builder; preferences and preference pages; and text formatting (subject to time constraints). We will also take a quick look at the IMP framework architecture and runtime, for participants who may be interested in contributing to the development of IMP. Participants will also use IMP-based IDEs for specification languages that are part of the IDE development process


T4: Search-Based Software Engineering
Tuesday 16 Sept 2008, 14:00 - 17:30

Simon Poulding, John Clark
University of York

Search-Based Software Engineering (SBSE) reformulates software engineering tasks as optimisation problems. The objective becomes that of locating, from among all possible solutions to the problem, one that is sufficiently good according to an appropriate fitness metric. This seemingly straightforward reformulation has two significant benefits. Firstly, there are a large number of computer-based algorithms that are highly effective at finding solutions to optimisation problems. By applying these algorithms to software engineering reformulated in this way, tasks can be partly or fully automated, thereby avoiding labour-intensive, and often costly, manual processes. Secondly, the computer-based techniques of SBSE promise significantly better scalability than traditional approaches to software engineering. For some large, complex and highly-constrained software engineering problems, SBSE may be the only tractable method of finding a solution. The combination of readily available, high-performance computing power, and new, more efficient, search algorithms has made SBSE a practical solution method for many software engineering problems. This is reflected in the recent flourishing of interest in this field, both in academia and industry, and the very wide range of applications to which it has been successfully applied. These applications are found throughout the software engineering lifecycle and include: requirements engineering, test data generation and sequencing, project planning, designing power-efficient algorithms, automated maintenance, optimising source code, and task allocation. The objective of this tutorial is to explain state-of-the-art SBSE techniques to attendees, both researchers and practitioners, that are new to the field. The material will cover the design of fitness metrics and the use of efficient optimisation algorithms, illustrate these concepts with recent work on applications from different parts of the software lifecycle, and discuss issues to consider when implementing the technique.