*** Welcome to piglix ***

Composition Filters


The Composition filters model denotes a modular extension to the conventional object model. It provides a solution for a wide range of problems in the construction of large and complex applications. Most notably, one implementation of composition filters provides an abstraction layer for message-passing systems.

Composition filters work by changing the behavior of an object through the manipulation of incoming and outgoing messages. This is done with the help of input and output filters which are controlled by conditions.

In concurrent and distributed computing, there are many problems such as scattering and tangling of code, which were difficult to handle using traditional object-oriented models. A need arose to develop a new software development model which addressed these concerns and this resulted in the formation of the Aspect-oriented software development paradigm. Several models in this paradigm were developed concurrently, and one of them is the Composition Filters Object Model. The pioneers of this model were Mehmet Aksit and various PhD. students (Lodewijk Bergmans, Jan Bosch, Bedir Tekinerdogan) and many MSc. students from the TRESE Group at the University of Twente in the Netherlands. It was based on the Sina language which was developed by Mehmet Aksit in his PhD thesis. Many advancements have been made in the model since then.

The design of the composition filters model is an extension of the design of the kernel object model. The design consists of two major parts - the kernel or the implementation part, and the outer layer or the interface part. The extensions are made in the interface part to produce the composition filters model from the traditional kernel object model.

The implementation part or the kernel consists of a single layer with three types of components:

It also consists of an encapsulation boundary which separates the implementation and the interface layers.

The Instance Variables are the only components of the kernel which are fully encapsulated. It is not possible to access these variables from outside the boundary. In this model, the Instance Variables can be of any type. Primitive data types such as integers, characters and user-defined data types such as classes and enumerations are all considered to be Instance Variables.


...
Wikipedia

...