Home

From Compor

Contents

COMPOR - Software Composition (Project Wiki)

Software evolution is a set of activities that occurs after the initial delivery of the software and typically deals with bug fixes and the addition, change or removal of functionalities. When the evolution cannot be anticipated and the software is not prepared for changes, the impact over the existing design and code increases. These unanticipated changes have been pointed as the main cause for most technical problems and related costs of software evolution. Recent advances in Software Engineering, such as application frameworks, component based systems, service oriented architectures, and plugin based development, have not been conceived to support unanticipated changes. In fact, some approaches provide flexibility for changes, even at runtime. But, it is only valid for specific parts of the software, which are predicted to change - framework hot spots, services and plug-in interfaces, etc.

The great problem arises when a part of the software which was thought to be fixed has to change. The unanticipated changes force the developers to extensively modify the existing software architecture, design, and code. A change is considered "unanticipated" if its implementation is not dependent of hooks encoded in previous versions of the changed software. By definition, unanticipated software evolution is not something for which we can prepare during the design of a software system. Therefore, a support for unanticipated software evolution must not require from the developer a specification of which part of the software could evolve. The software must inherently support evolution, in any part, and the developer should not be aware of the mechanisms that allow this evolution. Moreover, in the case of systems with frequent requirement changes or which cannot be interrupted, this evolution must be managed at runtime.

The COMPOR Project [1] aims at the definition of methods, languages, frameworks, models, and tools for promoting dynamic software composition and supporting unanticipated evolution based on components, services, and agents. The project is divided into nine subprojects according to research contexts: applications, composition models, execution environments, frameworks, languages, methods, repositories, utilities, and workbenches.

This project wiki contains deep and updated information about the COMPOR project. However, some of the projects are not documented yet. If you are part of the COMPOR project team, correct errors and insert new information about your project or even other projects described here. But first, read the Wiki Tips article.

If you are a developer, please, read the Developer Tips article. If you are a manager, read the Manager Tips article. If you want to join the COMPOR project team, send an e-mail to mailto:contact@compor.net. If you have a nice idea, in the context of COMPOR, which is not being addressed yet, post it in the Research Directions article. For an overview of dynamic software composition, read the Dynamic Software Composition: the Current Landscape article. Some related projects and our partners are described in the Research Community article. Finally, selected publications are described in the Publications article.

Applications

The COMPOR-Applications (COMPOR-A) subproject comprises research and development projects which are powered by the COMPOR infrastructure. Proof-of-concept projects, case studies, and industrial/commercial applications are examples of COMPOR-Applications. Information about implementation and available releases for the applications can be found at the Maven Project Site [2]. The current applications under development in the context of the COMPOR-A are listed below:

- Dependable Intelligent IIS Components (IIISComponents)
- Paper Manager for Researchers (Paper Manager)
- Mobile Multimedia Framework (MobileMedia) 
- Middleware for Pervasive Computing (Wings)
- Photo Collection Application (PhotoCollection)


Composition Models

The COMPOR-Composition Models (COMPOR-C) subproject comprises research and development projects related to the conceptual basis of the COMPOR infrastructure. The composition models define the mechanisms for dynamic software composition based on software engineering paradigms such as components, services, and agents. The following projects are part of COMPOR-C:

- Agent Model Specification (AMS)
- Component Model Specification (CMS)
- Service Model Specification (SMS)


Execution Environments

The COMPOR-Execution Environments (COMPOR-E) subproject comprises research and development projects related to construct environments for running COMPOR components, agents, and services, in several platforms. Information about implementation and available releases for the execution environments can be found at the Maven Project Site [3]. The following execution environments are currently under development:

- Agent Application Server (AAS)
- Component Application Server (CAS)
- embedded Agent Application Server (eAAS)
- embedded Component Application Server (eCAS)
- embedded Service Application Server (eSAS)
- Service Application Server (SAS)


Frameworks

The COMPOR-Frameworks (COMPOR-F) subproject comprises research and development projects related to frameworks that implement the composition models defined in the COMPOR-CM subproject. All frameworks, according to their paradigm, are implemented based on the object oriented architectures of: Generic Component Framework (GCF); Generic Agent Framework (GAF), or Generic Service Framework (GSF). Information about implementation and available releases for the frameworks can be found at the Maven Project Site [4]. The following frameworks are currently under development:

- C++ Component Framework (CCF)
- CPN Component Framework (CPN-CF)
- Java Agent Framework (JAF)
- Java Component Framework (JCF)
- Java Service Framework (JSF)
- Python Component Framework (PyCF)


Languages

The COMPOR-Languages (COMPOR-L) subproject comprises research and development projects related to the definition of description and programming languages, notations and diagrams for describing artifacts generated during the application of the methods for dynamic software composition based on the COMPOR infrastructure (COMPOR-M). The following languages are currently under definition, according to the agents, components, and services software engineering paradigms:

- Agent Description Language (ADL)
- Component Description Language (CDL)
- Service Description Language (SDL)


Methods

The COMPOR-Methods (COMPOR-M) subproject comprises research and development projects related to the conception and application of methods for dynamic software composition based on the COMPOR infrastructure. Formal methods for analysing and verifying software systems using the concepts of the COMPOR composition models (COMPOR-CM) are also part of the COMPOR-M. The following methods are currently under definition, according to the agents, components, and services software engineering paradigms:

- Agent Based Composition Method 
- Component Based Composition Method
- Component Based Formal Modelling Method
- Service Based Composition Method


Repositories

The COMPOR-Repositories (COMPOR-R) subproject comprises research and development projects related to construct reusable software modules to be reused in several COMPOR development projects. Information about implementation and available releases for the repositories can be found at the Maven Project Site [5]. This project is divided into three repositories, according to the agents, components, and services software engineering paradigms:

- Agent Repository
- Component Repository
- Service Repository


Utilities

The COMPOR-Utilities (COMPOR-U) subproject comprises research and development projects related to provide support to the other COMPOR subprojects. In general, COMPOR-U supports various other COMPOR subprojects, in different activities: specification, development, and documentation, among others. Information about implementation and available releases for the utilities can be found at the Maven Project Site [6]. The following utilities are currently under development:

- Java Commons
- C++ Commons
- Python Commons
- Doxygen Extension for Component Documentation (DoxyComp)
- Maven CPN Plugin


Workbenches

The COMPOR-Workbenches (COMPOR-W) subproject comprises research and development projects related to construct workbenches for dynamic software composition based on the COMPOR infrastrucure. The workbenches are sets of tools developed over the Eclipse platform [7]. Information about implementation and available releases for the workbenches can be found at the Maven Project Site [8]. The following workbenches are currently under development:

- Agent Composition Tools (ACT)
- Component Composition Tools (CCT)
- Service Composition Tools (SCT)