Notes
Using the principle of substitutability as one of the criteria for judging and assembling one's architecture (macro and micro) seems a little removed from the common concerns of architecture, but as a structuring principle it has much to commend it: if one element can be treated transparently as another, then it removes the need for consideration of differences. Or, to be precise, it removes the need for consideration of unnecessary differences. However, the ability to treat things uniformly it is not the same as saying that everything is the same: "when everything is a triangulation point, nothing is a triangulation point" [Jackson1995]. Architectures can organise their elements in many ways, including hierarchically and heterarchically. Such arrangements refer not only to the structural and execution arrangements, but also to classification. It is classification that forms the basis of substitutability. For OO developers, the most familiar form of substitutability is through inheritance and polymorphism. There is more to polymorphism than simply inheritance, overridden functions, and dynamic binding associated with classes; it proves to be a useful starting point for appreciating the diversity of type systems. Values, which are objects with significant state but not identity, represent information in a system in different ways to objects with significant identity. They tend to rely more on other forms of polymorphism than the inclusion polymorphism of OO.
|