|
|
| 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 770051892, 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 |
|
AspectOriented
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>
Aspectoriented
programming provides the programmer with means to crosscut conventional
program structures, in par ticular the class hierarchies of objectoriented
programming. This paper studies the use of aspect orientation in
structur ing syntax directed compilers.
Syntaxdirected 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 firstclass objects in the specification language.
In this paper we propose a technique for making compiler
`aspects' firstclass 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
aspectoriented programming style in Haskell provides a stepping
stone towards a more general study of the semantics of aspectoriented
programming.
Download
|
|
|
| Track
14: Component-Oriented Language Idioms |
| 2.00
pm - 2.30 pm |
|
Inner
Classes For ComponentBased 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.unisiegen.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 largegrained components,
namely groups of collaborating classes. The abstract model defined
in a framework is easily customized into an applicationspecific
model through static subclassing and method overriding. However,
this implies nonindependent 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 multiclass
adapter . The adapter employs the use of Java inner classes to achieve
dynamic, noninvasive, composite object customization.
Download
|
|
|
| 2.30
pm - 3.00 pm |
|
Recursive
types and patternmatching 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 patternmatching are two useful builtin 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 reuse 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
GreyBox 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 blackbox 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, nonfunctional 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 greybox approach to component deployment is discussed.
It is based on a scenariobased technique called UseCaseMaps (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, objectoriented language BCOOPL (Basic
Concurrent ObjectOriented 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 MetaComputing 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 selfcontained 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
selfdocumenting, 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 LennardJones 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
|
|