Skip to main content

2006 | Buch

Software Composition

5th International Symposium, SC 2006 Vienna, Austria, March 25-26, 2006 Revised Papers

herausgegeben von: Welf Löwe, Mario Südholt

Verlag: Springer Berlin Heidelberg

Buchreihe : Lecture Notes in Computer Science

insite
SUCHEN

Über dieses Buch

Research in software composition investigates models and techniques to build systems from prede?ned, pretested, reusable components instead of building them from scratch. In recent years, this idea has largely been adopted by - dustry. In the shape of service-oriented architecture, software composition has becomeanin?uentialdesignparadigm,especiallyforthe (re-)organizationofthe IT infrastructure of organizations.On the technical level, the standardization of Web services and other composition technologies has further matured. Current research in software composition aims at (further) developing c- position models and techniques. The aspect-oriented programming and design paradigm, for instance, has gained interest in the research community as a c- position (support) model. Other current research questions concern the sp- i?cation of component contracts, in particular making explicit its observable behavior, and methods of correct components composition. The International Symposium on Software Composition provides a premier forum for discussing these kinds of research questions and presenting original research results. This LNCS volume contains the proceedings of the 5th International S- posium on Software Composition, which was held as a satellite event of the European Joint Conferences on Theory and Practice of Software (ETAPS) in Vienna, Austria, March, 25-26 2006. The symposium started with a keynote on “Semantically Enabled Service-Oriented Architectures” given by Dieter Fensel, DirectoroftheDigitalResearchInstitute.Themainprogramconsistedofpres- tations of research papers on software compositions. These proceedings contain the revised versions of the papers presented at SC 2006.

Inhaltsverzeichnis

Frontmatter
Automatic Checking of Component Protocols in Component-Based Systems
Abstract
We statically check whether each component in a component-based system is used according to its protocol and provide counterexamples if such a check fails. The protocol is given by a finite state machine specifying legal sequences of procedure calls of the interface of a component. The main contribution is that we can deal with call-backs without any restrictions. We achieved this by using context-free grammars instead of finite state machines to describe the use of components.
Wolf Zimmermann, Michael Schaarschmidt
Checking Component Composability
Abstract
Component-Based Software Engineering (CBSE) is one of the approaches to master the development of large scale software. In this setting, the verification concern is still a challenge. The current work addresses the composability of components and their services. A component model (Kmelia) is introduced; an associated formalism, simple but expressive is introduced; it describes the services as extended LTSs and their structuring as components. The composability of components is defined on the basis of the composability of services. To ensure the correctness of component composition, we check that an assembly is possible via the checking of the composability of the linked services, and their behavioural compatibility. In order to mechanize our approach, the services and the components are translated into the Lotos formalism. Finally the Lotos CADP toolbox is used to perform experiments.
Christian Attiogbé, Pascal André, Gilles Ardourel
Static Verification of Indirect Data Sharing in Loosely-coupled Component Systems
Abstract
To maintain loose coupling and facilitate dynamic composition, components in a pipe-and-filter architecture have a very limited syntactic interface and often communicate indirectly by means of a shared data repository. This severely limits the possibilities for compile time compatibility checking. Even static type checking is made largely irrelevant due to the very general types given in the interfaces. The combination of pipe-and-filter and a shared data repository is widely used, and in this paper we study this problem in the context of the Struts framework. We propose simple, but formally specified, behavioural contracts for components in such frameworks and show that automated formal verification of certain semantical compatibility properties is feasible. In particular, our verification guarantees that indirect data sharing through the shared data repository is performed consistently.
Lieven Desmet, Frank Piessens, Wouter Joosen, Pierre Verbaeten
Enforcing Different Contracts in Hierarchical Component-Based Systems
Abstract
Using different specification formalisms together is necessary to leverage better reliability on component-based systems. The ConFract system provides a contracting system for hierarchical software components, but currently, only executable assertions are supported.
In this paper, we describe how TLA, taken as an instance of behavioral sequence-based formalism, was integrated in ConFract. A domain specific language is proposed in order to enable designers to describe the observations needed to appropriately verify their specifications. These observations are automatically generated for assertions and in the case of TLA, we show what kind of observations must be provided to link the specifications to the concrete application.
Philippe Collet, Alain Ozanne, Nicolas Rivierre
Automated Pattern-Based Pointcut Generation
Abstract
One of the main problems in Aspect-Oriented Software Development is the so-called fragile pointcut problem. Uncovering and specifying a good robust pointcut is not an easy task. In this paper we propose to use Inductive Logic Programming, and more specifically the FOIL algorithm, to automatically identify intensional (or “pattern-based”) pointcuts. We present the tool chain we implemented to induce a pointcut given a set of identified joinpoints. Using several realistic medium-scale experiments, we show that our approach is able to automatically induce robust pointcuts for a set of joinpoints.
Mathieu Braem, Kris Gybels, Andy Kellens, Wim Vanderperren
An Aspect-Oriented Approach for Developing Self-Adaptive Fractal Components
Abstract
Nowadays, application developers have to deal with increasingly variable execution contexts, requiring the creation of applications able to adapt themselves autonomously to the evolutions of this context. In this paper, we show how an aspect-oriented approach enables the development of self-adaptive applications where the adaptation code is well modularized, both spatially and temporally. Concretely, we propose SAFRAN, an extension of the Fractal component model for the development of the adaptation aspect as reactive adaptation policies. These policies detect the evolutions of the execution context and adapt the base program by reconfiguring it. This way, SAFRAN allows the modular development of adaptation policies and their dynamic weaving into running applications.
Pierre-Charles David, Thomas Ledoux
Aspects of Composition in the Reflex AOP Kernel
Abstract
Aspect composition is a challenging and multi-faceted issue, generally under-supported by current AOP languages and frameworks. This paper presents the composition support provided in Reflex, a versatile kernel for multi-language AOP in Java. The core of Reflex is based on a model of partial reflection whose central abstractions are links: bindings between a (point)cut and an action. Reflex supports the definition of aspect languages through the mapping of aspects to links. We overview the wide range of features for link composition in Reflex—which includes extensible operators for ordering and nesting of links, and control over the visibility of changes made by structural aspects—, illustrating how they can be used to implement various scenarios of aspect composition.
Éric Tanter
A Component-Based Approach to Compose Transaction Standards
Abstract
This paper tackles the problem of composition of transaction services, which are governed by various transaction standards. Among others, we can cite the Object Transaction Service, Java Transaction Service, or Web Services Atomic Transaction. However, the Web Services Atomic Transaction standard encloses legacy transaction standards to support the Web Services application platform. This encapsulation introduces an additional complexity to the system and hides the specificities of legacy transaction standards. When composing heterogeneous legacy applications, the underlying transaction services are basically not composed transparently. This paper presents an approach to build an Adapted Transaction Service, named ATS, which supports several transaction standards concurrently. The objective of ATS is to facilitate the transaction standards composition. To introduce ATS we detail how the Object Transaction Service, Web Services Atomic Transaction, and Java Transaction Service standards can be composed. Besides, an ATS implementation is introduced using the GoTM framework. We show that this fine-grained component-based approach does not introduce an additional overhead to legacy applications and supports well scalability. Moreover, this approach can be extended to other standards.
Romain Rouvoy, Patricia Serrano-Alvarado, Philippe Merle
A Class-Based Object Calculus of Dynamic Binding: Reduction and Properties
Abstract
To be able to compose and decompose software components at run time, some form of dynamic rebinding between components (or objects) is needed. In this paper, we identify basic properties of dynamic object (re)binding, and propose a class-based object calculus that gives precise meaning to these properties. We also define two example semantic properties that are characteristic for many concurrent programs with low-level bind/unbind operations. Our calculus has a built-in construct atomic that can be used to implement one of the semantic properties.
Paweł T. Wojciechowski
Tracechecks: Defining Semantic Interfaces with Temporal Logic
Abstract
Tracechecks are a formalism based on linear temporal logic (LTL) with variable bindings and pointcuts of the aspect-oriented language AspectJ for the purpose of verification. We demonstrate how tracechecks can be used to model temporal assertions. These assertions reason about the dynamic control flow of an application. They can be used to formally define the semantic interface of classes. We explain in detail how we make use of AspectJ pointcuts to derive a formal model of an existing application and use LTL to express temporal assertions over this model.
We developed a reference implementation with the abc compiler showing that the tool can be applied in practice and is memory-efficient.
In addition we show how tracechecks can be deployed as Java5 annotations, yielding a system which is fully compliant with any Java compiler and hiding any peculiarities of aspect-oriented programming from the user. Through annotations, the tracecheck specifications become a semantic part of an interface. Consumers of such a component can then take advantage of the contained annotations by applying our tool and have their use of this component automatically checked at runtime for compliance with the intent of the component provider.
Eric Bodden, Volker Stolz
Service Composition with Directories
Abstract
This paper presents planning-based service composition algorithms that dynamically interact with a potentially large-scale directory of service advertisements in order to retrieve matching service advertisements on demand. We start with a simple algorithm for untyped services, similar to a STRIPS planner. This algorithm is refined in two steps, first to exploit type information, and second to support partial type matches. An evaluation confirms that the algorithms scale well with increasing size of the directory and that the support for partial type matches is essential to achieve a low failure rate.
Ion Constantinescu, Walter Binder, Boi Faltings
Modeling Composition in Dynamic Programming Environments with Model Transformations
Abstract
Although dynamic programming environments are in widespread use, only basic runtime composition mechanisms are covered by today’s modeling languages. Thus, it is common in real-world development projects that dynamic compositions are not modeled formally and are consequently hard to use, for example together with the model-driven paradigm where formal models are essential to generate source code. In this paper, we propose an approach based on model transformations between the valid structural and behavioral runtime states that a system can have. We use UML 2.0 class and activity diagrams for specifying the structural and behavioral model states and provide a UML 2.0 meta-model extension for describing the valid model transformations between corresponding model states.
Uwe Zdun, Mark Strembeck
General Composition of Software Artifacts
Abstract
Composition is the process of creating new artifacts from a set of input artifacts by combining the content of the input artifacts according to some given specifications. Composition engines are a distinct kind of software component. Like compilers, parsers, and UI-generators, they have their own domain of discourse and base of concepts, their own structure for expressing desired results, their own internal solution structure, and their own set of research problems. Composition applies not only to artifacts representing executable code, but to any sort of artifacts, from build or configuration controls to documentation or UI. While software composition is of interest to an audience wider than that of developers applying aspect-oriented software development (AOSD) approaches, AOSD’s composition of separate concerns or aspects presents more complex requirements than does object-composition. This paper describes a base of concepts suitable for expressing composition and shows how a general composition engine realizing these concepts can be used to effect the composition needs of several existing AOSD approaches.
William Harrison, Harold Ossher, Peri Tarr
Dimensions of Composition Models for Supporting Software Evolution
Abstract
Software systems with constrained and dynamic environments need to adapt to local and diverse computing environments by providing highly customized services at run-time. In order to address such dynamic changes effectively, composition models addressing complicated composition issues and supporting advanced composition features are required. In order to analyze and identify the required features of composition models supporting dynamic changes, we propose the dimensions of composition models by survey and analysis of existing work. Based on the dimensions, it is possible to provide a road map to improve capability of a composition model for a specific domain such as a dynamic mobile agent domain.
In-Gyu Kim, Tegegne Marew, Doo-Hwan Bae, Jang-Eui Hong, Sang-Yoon Min
Context-Aware Aspects
Abstract
Context-aware applications behave differently depending on the context in which they are running. Since context-specific behavior tends to crosscut base programs, it can advantageously be implemented as aspects. This leads to the notion of context-aware aspects, i.e., aspects whose behavior depends on context. This paper analyzes the issue of appropriate support from the aspect language to both restrict the scope of aspects according to the context and allow aspect definitions to access information associated to the context. We propose an open framework for context-aware aspects that allows for the definition of first-class contexts and supports the definition of context awareness constructs for aspects, including the ability to refer to past contexts, and to provide domain- and application-specific constructs.
Éric Tanter, Kris Gybels, Marcus Denker, Alexandre Bergel
Understanding Design Patterns Density with Aspects
A Case Study in JHotDraw Using AspectJ
Abstract
Design patterns offer solutions to common engineering problems in programs [1]. In particular, they shape the evolution of program elements. However, their implementations tend to vanish in the code: thus it is hard to spot them and to understand their impact. The problem becomes even more difficult with a “high density of pattern”: then the program becomes easy to evolve in the direction allowed by patterns but hard to change [2]. Aspect languages offer new means to modularize elements. Implementations of object-oriented design patterns with AspectJ have been proposed [3]. We aim at testing the scalability of such solutions in the JHotDraw framework. We first explore the impact of density on pattern implementation. We show how AspectJ helps to reduce this impact. This unveils the principles of aspects and AspectJ to control pattern density.
Simon Denier, Pierre Cointe
A Model for Developing Component-Based and Aspect-Oriented Systems
Abstract
Aspect-Oriented Programming (AOP) and Component- Based Software Engineering (CBSE) offer solutions to improve the separation of concerns and to enhance a program structure. If the integration of AOP into CBSE has already been proposed, none of these solutions focus on the application of CBSE principles to AOP. In this paper we propose a twofold integration of AOP and CBSE. We introduce a general model for components and aspects, named Fractal Aspect Component (FAC). FAC decomposes a software system into regular components and aspect components (ACs), where an AC is a regular component that embodies a crosscutting concern. We reify the aspect domain of an AC and the relationship between an AC and a component, called an aspect binding, as first-class runtime entities. This clarifies the architecture of a system where components and aspects coexist. The system can evolve from the design to the execution by adding or removing components, aspects or bindings.
Nicolas Pessemier, Lionel Seinturier, Thierry Coupaye, Laurence Duchien
FROGi: Fractal Components Deployment over OSGi
Abstract
This paper presents FROGi, a proposal to support continuous deployment activities inside Fractal, a hierarchical component model. FROGi is implemented on top of the OSGi platform. Motivation for this work is twofold. On one hand FROGi provides an extensible component model to OSGi developers and eases bundle providing. FROGi-based bundles are still compatible with “legacy” OSGi bundles that offer third party services. On the other hand, FROGi benefits from the deployment infrastructure provided by OSGi which simplifies conditioning and packaging of Fractal components. With FROGi, it is possible to automate the assembly of a Fractal component application. Partial or complete deployment is also supported as well as performing continuous deployment and update activities.
Mikael Desertot, Humberto Cervantes, Didier Donsez
Modular Design of Man-Machine Interfaces with Larissa
Abstract
The man-machine interface of a small electronic device like a wristwatch is a crucial component, as more and more functions have to be controlled using a small set of buttons. We propose to use Argos, an automaton-based language for reactive systems, and Larissa, its aspect-oriented extension, to show that several interfaces can be obtained from the same set of basic components, assembled in various ways. This is the basis of a quite general component-based development method for man-machine interfaces.
Karine Altisen, Florence Maraninchi, David Stauch
On the Integration of Classboxes into C#
Abstract
Classboxes are a new module system for object-oriented languages defining a packaging and scoping mechanism for controlling the visibility of isolated extensions to portions of class-based systems. Unlike object-oriented specialization, the class extension mechanisms supported by classboxes preserve the identity of extended classes and, therefore, all clients of extended classes can benefit from the applied extensions. In this paper, we present a language design and a corresponding implementation strategy for classboxes in C#. A particular challenge in incorporating classboxes into C# is to preserve the identity of extended classes as the .NET framework represents classes as metadata type declarations and access to classes by static links into metadata of the host assembly. However, the local refinement of an imported class results in a new metadata type declaration. In order to guarantee the identity of extended classes, new metadata type declarations have to be incorporated into the original metadata of imported classes. But this “re-wiring” has to occur in a manner that is consistent with the Common Language Infrastructure (CLI).
Markus Lumpe, Jean-Guy Schneider
Automatic Control Flow Generation from Software Architectures
Abstract
In a traditional software architecture, control originates in components and flows to other components via connectors. The system’s control flow is fixed at design time, when components and their inter-connections are specified. Code generated from the design inherits this control flow, and consists of component code and glue code that tightly couples connected components. This means that code generated from a given software architecture is system-specific, and is therefore neither generic nor reusable. In this paper we describe an approach which allows separate reuse of component code and connector code, and thus making it possible to build architectures from pre-existing components and generic connectors. Furthermore, we show we can implement such architectures by generating control flow at run-time automatically.
Kung-Kiu Lau, Vladyslav Ukis
Backmatter
Metadaten
Titel
Software Composition
herausgegeben von
Welf Löwe
Mario Südholt
Copyright-Jahr
2006
Verlag
Springer Berlin Heidelberg
Electronic ISBN
978-3-540-37659-0
Print ISBN
978-3-540-37657-6
DOI
https://doi.org/10.1007/11821946