Go home now Header Background Image
Search
Submission Procedure
share: |
 
Follow us
 
 
 
 
Volume 11 / Issue 10

available in:   PDF (39 kB) PS (41 kB)
 
get:  
Similar Docs BibTeX   Write a comment
  
get:  
Links into Future

 

Compositional Construction and Reasoning Techniques for Software
J.UCS Special Issue

Farhad Arbab (Center for Mathematics and Computer Science (CWI), Amsterdam and Leiden Institute of Advanced Computer Science, Leiden University, The Netherlands)
farhad@cwi.nl

Joost N. Kok (Leiden Institute of Advanced Computer Science, Leiden University, The Netherlands)
joost@liacs.nl

Abstract: Complex software systems are intrinsically difficult to conceive, develop, deploy, maintain, and evolve, especially in concurrent and distributed settings. Compositional techniques for construction and analysis of software, such as object-oriented and component-based approaches, have shown to be effective tools for breaking these complexities down to manageable sizes. The complexity of these systems is confounded in contexts such as real-time and embedded systems, where concurrency and distribution arise not merely due to performance concerns, but rather reflect the inherent requirements and operating constraints of application systems.

Interaction and coordination models that have been developed to tackle these problems often lack the adequate sophistication to accommodate systems where self-organization, emergent behavior, and evolution comprise their key concerns. Approaches based on compositional techniques seem to offer promising extensions to these models to meet the challenges of such increasingly important emerging areas as ubiquitous computing, self-organizing self-managing systems, service-oriented computing, and bio-informatics, where interaction, its composition, and its coordination play an explicit central role.

This special issue offers a collection of 6 contributions on both theoretical and systems aspects of compositional methods for construction of software. These contributions cover a wide range of topics: identifying objects in non-object-oriented specifications, characterization of multi-class grouping and encapsulation mechanisms in object oriented languages, dynamic composition of .net-based services, using coordination models to add behavioral descriptions to component interfaces, modular verification, and probabilstic models for compositional component connectors.

Page 1577

By providing encapsulation, abstraction, and inheritance, the object oriented paradigm offers many advantages for composition over plain procedural imperative programming. Object oriented extensions have been introduced not only to imperative programming languages (e.g., C/C++), but also to declarative modeling and specification languages, such as VDM/VDM++ and Z/Object-Z. A.M. Cruz, L.S. Barbosa, and J.N. Oliveira argue that because these extensions are rather recent and users are more familiar with the older formalisms, analogous to spaghetti code produced by those who write C programs in C++ or Java, often what can elegantly be modeled by state-less equations, ends up specified as assignments to instance variables and the like. The lack of abstraction and encapsulation that objects provide, makes such specification not only less comprehensible, but also less suitable for composition. In their paper "From Algebras to Objects: Generation and Composition" they consider the criteria under which a declarative specification in a language can be objectified in its object oriented extension. They describe the objectification process and present a tool that shows how a model in VDM-SL can be converted to VDM++ objects.

Software composition often involves groups of objects and/or classes that somehow interact with one another, as opposed to single objects or classes. Different object oriented programming languages offer different facilities for grouping of logically related classes, for instance, packages, modules, namespaces, etc. In their paper "Analyzing Module Diversity" A. Bergel, S. Ducasse, and O. Nierstrasz present a module calculus as a foundation for comparing and understanding the diversity of various grouping mechanisms available in different languages. Using their calculus, they can capture the semantics of Java packages, C# namespaces, etc., in the same framework. This leads to a taxonomy for classification of features of grouping mechanisms that clarifies their similarities and distinctions.

F. Cao, B.R. Bryant, R.R. Raje, A.M. Olson, M. Auguston, W. Zhao, and C.C. Burt address dynamic component composition in the context of Web Services. In their paper "A Non-Invasive Approach to Assertive and Autonomous Dynamic Component Composition in the Service-Oriented Paradigm" they describe two types of dynamic component composition and consider three case studies to show their use.

Component composition requires knowledge of their interactive behavior, above and beyond simple compatibility of the signatures in their interfaces. In their paper "Coordinating Behavioral Descriptions of Components", S. Amaro, E. Pimentel, and A.M. Roldan investigate the use of coordination models and languages as a framework for describing the behavior of components. They illustrate the feasibility of their proposal using two substantially different coordination models: Linda and Reo.

Page 1578

Formal methods for verification are indispensable in the development of reliable software systems. Specification of concurrent reactive systems typically uses automata or temporal logic as its foundation. Automata based approaches quickly lead to state explosion in large systems and using deductive methods to verify complex software requires formulating it as a theorem, which is often not easy to do. By abstraction and modularization, perhaps using domain-specific approaches, compositional verification breaks down the complexity of reasoning about the behavior of a complex system to manageable parts. In their earlier work, M. Sirjani et al. have introduced Rebeca as an actor-based language intended for bridging the gap between formal verification and real applications. This language comes with its own model-checker, plus a tool that translates Rebeca code into input for other existing model-checkers. In their current contribution "Modular Verification of a Component-Based Actor Language" M. Sirjani, F.S. de Boer, and A. Movaghar extend the underlying theory of their modular verification approach by introducing synchronous communication and the notion of components in Rebeca.

Reo is a language for compositional construction of component connectors and constraint automata have been proposed as an operational model for the semantics of Reo circuits. In her paper "Probabilistic Models for Reo Connector Circuits", C. Baier introduces a probabilistic variant of constraint automata. Probabilities and nondeterminism allow probabilistic constraint automata to serve as a model for connectors that may lose or corrupt their data, or perform randomized acts of coordination.

F. Arbab and J.N. Kok
Guest Editors
November 2005

Page 1579