Note: To see or save the complete lectures please click at the "Download" - link on each abstract. If you don´t have the software to read these files (f.e. MS PowerPoint, Adobe Acrobat Reader,...) please install the necessary Plug-Ins, which you can find on your STJA-CD.
 
Track 9: Language Compostition
11.00 am - 11.30 am

Vanilla: an open language framework

Simon Dobson, Paddy Nixon, Vincent Wade, Sotirios Terzis, John Fuller

Department of Computer Science
Trinity College,
Dublin 2, Ireland
Simon Dobson <simon.dobson@cs.tcd.ie>

A trend in current research is towards component-based systems, where applications are built by combining re-usable fragments or components. In this paper we argue the case for building programming languages from components. We describe Vanilla, a component-based architecture for language tools. The core of Vanilla is a set of components, each implementing the type checking and behaviour of a single language feature, which are integrated within a well-structured framework to provide a programming language interpreter. Features may be extensively re-used across a variety of languages, allowing rapid prototyping and simplifying the exploration of new constructs. We describe the design and implementation of the system, and draw some general conclusions from the experience of building with components.
Subject areas: language design and implementation; frameworks.

Download

11.30 am - 12.00 am

From Macros to Reusable Generative Programming

Shriram Krishnamurthi, Matthias Felleisen (Rice University), Bruce F. Duba (Seattle University)

Department of Computer Science
Rice University
Houston, TX 77005­1892, USA

Generative programming is widely used both to develop new programming languages and to extend existing ones with (domain-specific) sub-languages. This paper describes McMicMac, a framework for generative programming. McMicMac uses tree-transforming macros as language specifications, and enhances them with inherited and synthesized attributes. The enhanced transformers can describe general compilation tasks. Families of these specifications are grouped into mixin-like collections called vocabularies. Programmers can define new languages by composing these vocabularies. We have implemented McMicMac for Scheme and used it to build several systems, including the DrScheme programming environment. The principles of McMicMac carry over to other languages and environments.

Download

12.00 am - 12.30 pm

Aspect­Oriented Compilers

Oege de Moor, Eric Van Wyk (Oxford University), Simon Peyton (Jones Microsoft Research Cambridge)

Oxford University
Computing Laboratory
Oege de Moor <oege@comlab.ox.ac.uk>
Eric Van Wyk <evanwyk@comlab.ox.ac.uk>

Jones Microsoft Research Cambridge
Simon Peyton <simonpj@microsoft.com>

Aspect­oriented programming provides the programmer with means to cross­cut conventional program structures, in par­ ticular the class hierarchies of object­oriented programming. This paper studies the use of aspect orientation in structur­ ing syntax directed compilers.
Syntax­directed compilers are often specified by means of attribute grammars. Such specifications are typically structured by production --- it is hard to structure them by semantic aspects such as `environment', `lexical level' and `type checking'. Even if such structuring is allowed at a syntactic level, it is certainly not possible to parameterise compiler aspects, and to treat them as first­class objects in the specification language.
In this paper we propose a technique for making compiler `aspects' first­class objects, that can be stored, manipulated and combined. We propose a modest set of combinators that achieve this task in the functional programming language Haskell. The combinator library is an application of recent work on polymorphic type systems for record opera­ tions, in particular that of Gaster and Jones, and also of a technique due to R'emy, which types symmetric record con­ catenation `for free'. It is hoped that this embedding of an aspect­oriented programming style in Haskell provides a stepping stone towards a more general study of the semantics of aspect­oriented programming.

Download

Track 14: Component-Oriented Language Idioms
2.00 pm - 2.30 pm

Inner Classes For Component­Based Programming

Linda Seiter (Santa Clara University), Mira Mezini (University of Siegen), Karl Lieberherr (Northeastern University)

Computer Engineering Department, College of Engineering
Santa Clara University
Santa Clara, CA, USA.
Linda Seiter <lseiter@scu.edu>

College of Engineering and Computer Science
University of Siegen, Germany
Mira Mezini <mira@informatik.uni­siegen.de>

College of Computer Science
Northeastern University
Boston, MA, USA
Karl Lieberherr <lieber@ccs.neu.edu>

Frameworks elevate encapsulation and reuse to the level of large­grained components, namely groups of collaborating classes. The abstract model defined in a framework is easily customized into an application­specific model through static subclassing and method overriding. However, this implies non­independent development of the application and framework models and excludes the possibility of dynamically deploying the framework within an application in multiple, potentially conflicting ways.
We describe an architecture for managing such dynamic framework customizations, based on the notion of a dynamic multi­class adapter . The adapter employs the use of Java inner classes to achieve dynamic, non­invasive, composite object customization.

Download

2.30 pm - 3.00 pm

Recursive types and pattern­matching in Java

Remi Forax, Gilles Roussel

Universite de Marne la Vallee
Marne la Vallee CEDEX 2
France
Remi Forax <forax@univ-mlv.fr>

Recursive types definitions and pattern­matching are two useful built­in features of functional languages. There is no such mechanism in the Java language. In this article, we investigate different implementations to support these features in Java. First, we review methods to define recursive types. Then, we expose several approaches allowing to simulate pattern­ matching on structures of these types. Finally, we present re­use techniques for algorithms featuring this mechanism.

Download

3.00 pm- 3.30 pm

C++ Function Object Binders Made Easy

Jaakko Järvi

Turku Centre for Computer Science
Lemminkaisenkatu 14 A
FIN-20520 Turku,
Finland
email: jaakko.jarvi@cs.utu

A novel argument binding mechanism is proposed to be used with STL algorithm invocations. Binding can be applied directly, without any adaptors, with non-member function pointers, const and non-const member function pointers and STL unary and binary function objects. The types, as well as the number of arguments in the functions to be bound can be practically arbitrary, argument list lengths up to few dozens of elements can be supported.
The free arguments are expressed as special placeholders in the argument list allowing binding in any argument position. Hence, bind calls preserve the resemblance to the function prototype of the bound function. The syntax is simple and intuitive.
Binding can be applied recursively. This results in a versatile function decomposition mechanism. The binding mechanism is efficient, inducing no or negligible runtime cost.

Download

Track 19: Domain Analysis and Component-Based Development
4.00 pm - 4.30 pm

Customizable Domain Analysis

Joachim Bayer, Dirk Muthig, Tanya Widen

Fraunhofer Institute for Experimental Software Engineering (IESE)
Sauerwiesen 6
D-67661 Kaiserslautern, Germany
Joachim Bayer <bayer@iese.fhg.de>
Dirk Muthig <muthig@iese.fhg.de>
Tanya Widen <widen@iese.fhg.de>

Generative and component-based software engineering are approaches to reuse. Within both approaches the scope of reuse can vary between general purpose and application specific. We argue for scoping the reusable assets based on a product line. Domain analysis methods provide processes for deter-mining the common and varying requirements for a product line.
However, we experienced that existing methods have problems concerning applicability and instantiation support. Therefore, we have developed the Customizable Domain Analysis (CDA) method.
CDA is customizable to the project context where it will be applied. This ensures that the method and work-products used for modeling are appropriate for the specific needs. CDA also provides full instantiation support for specifying systems in the product line.

Download

4.30 pm - 5.00 pm

A Grey­Box Approach to Component Composition

Hans de Bruin

Vrije Universiteit
Amsterdam, Netherlands
email: hansdb@cs.vu.nl

Despite the obvious advantages of reuse implied by component technology, component based development has not taken off yet. Problems that inhibit general reuse include incomplete component contracts and (undocumented) dependencies of a component on the environment, which makes it hard to assess whether a component will behave in a particular setting as expected. In principle, a black­box approach to component deployment should be favored. In practice, however, we require information that cannot be described solely in terms of externally visible properties of components. For instance, non­functional properties (e.g., space and time requirements), environmental dependencies, and variation points (e.g., places where a component may be adapted or extended) do require insight in the internal construction of a component. In this paper, a grey­box approach to component deployment is discussed. It is based on a scenario­based technique called Use­Case­Maps (UCM), which uses scenarios to describe how several components operate at a high abstraction level. UCM is an informal notation. Its strong point is to show how things work generally. In order to reason about component compositions, we have augmented UCMs with formal specifications of component interfaces. These interface specifications have been borrowed from the concurrent, object­oriented language BCOOPL (Basic Concurrent Object­Oriented Programming Language). A BCOOPL interface is more than just a set of operations, it also describes temporal orderings of operations and the parties that are allowed to invoke a particular operation. The combination of UCMs and BCOOPL interfaces gives us the opportunity to document intra and inter component behavior at a high, but formal abstraction level.

Download

5.00 pm - 5.30 pm

An XML Based Component Model For Generating Scientific Applications and Performing Large Scale Simulations in a Meta­Computing Environment

Omer F. Rana, Maozhen Li, David W. Walker, Matthew Shields

Department of Computer Science
Cardiff University, POBox 916
Cardiff CF2 3XF, UK

The architecture of a component based environment for constructing scientific applications -- generally referred to as a Problem Solving Environment (PSE), is described. Each component is a self­contained program, and may be a sequential code developed in C, Fortran or Java, or may contain internal parallelism using MPI or PVM libraries. A user visually constructs an application by combining components from a local or remote repository as a data flow graph. Components are self­documenting, with their interfaces defined in XML, which enables a user to search for components suitable to a particular application, enables a component to be configured when instantiated, enables each component to register with an event listener and facilitates the sharing of components between repositories. The data flow graph is also encoded in XML, and sent to a resource manager for executing the application on a workstation cluster, or a heterogeneous environment made of workstations and high performance parallel machines.
Components in the PSE can also be wrapped from legacy codes. We also describe the architecture and implementation of a molecular dynamics application based on the Lennard­Jones code [18], containing MPI calls, executed on a cluster of workstations, and based on our generic component model. A user can submit simulation data to the application remotely using a Java based user interface. Users need not download any softwares for the simulation and do not need to know the exact implementation.

Download