Next: 2.5 Extensibility
Up: 2 Position
Previous: 2.3 Process Algebras
One of the properties that we may analyze in a software architecture is composability , which we could define as the capability of the system of being composed by combining its components as indicated in its architecture. Composability can be checked by determining whether the components of the system are compatible or not. Furthermore, in order to enhance reusability, we should be able to check if a certain existing component can be used in a new system where a similar function is required. Again the intuitive notion of compatibility arises.
Compatibility could be determined by composing in parallel the
specifications in -calculus of system components. Then, the
resulting system would be analyzed for deadlock. However, this would
be impractical for complex systems, as it requires the analysis of all
the interaction traces of large specifications. Instead of that, we
propose the use of explicit interface specifications, or roles ,
for each connection or
attachment between components of the system, indicating the
behavior of those components as seen from outside. Then, each
attachment between roles is checked locally for compatibility. This
reduces the complexity of the analysis to a great extent.
Thus, a software component will be specified by set of roles, which
describe its behavior in relation to the other components it is
attached to. Each role describe the protocol that the component
follows with respect to a certain attachment. Our notion of role
derive from the Hiding operator (/L) defined in
[Mil89] for CCS, and roles may be considered as partial
specifications of the interface of a component. As we usually want to
attach roles that match only partially, equivalence checking, using
for instance the bisimilarity relations established for the
-calculus, is not well suited for our purposes. Thus, we have
defined a relation of protocol compatibility in the context of
-calculus. This relation ensures that two components, represented
by a pair of roles, will be able to interact without deadlock until
they reach a well-defined final state. In this context, the analysis
of the composability of a software architecture is reduced to local
analysis of compatibility. Compatibility ensures that any software
system built according to the specifications of the architecture will
not produce a deadlock caused by the interaction in any attachment
between its components.
A formal proof of the properties of compatibility is out of the scope of this paper, but it can be found in [CPT97]. Compatibility analysis can be easily automated in a similar way to the characterization devised by Sangiorgi for the bisimilarity relations [San93].
Carlos Canal, Ernesto Pimentel, and Jose M. Troya