next up previous
Next: 2.6 Extensible architectures or Up: 2 Position Previous: 2.4 Composability

2.5 Extensibility

In order to promote effective reuse of both components and architectures a mechanism of redefinition and extension of roles and components is required. In the object-oriented paradigm reuse is achieved by inheritance and polymorphism. Inheritance refers to a relation among object classes by which a heir class inherits the properties (methods and attributes) of its parent classes, while it can extend them by adding its own properties. The inherited properties may be redefined, usually under certain restrictions, but roughly speaking, we may say that the interface of the heir class includes those of its parents. Inheritance is a natural condition for polymorphism, as it ensures that the derived classes will have at least the same properties than their parents. Thus, a relation of inheritance would be also of use for specifications of software components.

However, in our context the interface of a component is defined not only by the signature of its properties (i. e. the signature of its roles), but this interface also includes the behavioral patterns described in the roles. Thus, redefinition of behavior is restricted by several conditions, which define what we have called a relation of inheritance among roles. These conditions ensure that role compatibility is closed under inheritance, in the sense that if two roles are found compatible, any derived role related to one of them by inheritance will be also compatible. Role inheritance define the restrictions which allow polymorphism of behavior, and promotes both incremental specification and reusability.

Again, we refer to [CPT97] for a formal definition of role inheritance and its properties.


next up previous
Next: 2.6 Extensible architectures or Up: 2 Position Previous: 2.4 Composability

Carlos Canal, Ernesto Pimentel, and Jose M. Troya
Sept. 2, 1997