1. Introduction and Scope
Software architecture styles represent a cogent form of codification [1], [2], [3] of critical aspects to which an architecture is expected to conform. They differ from patterns in that patterns are the result of a discovery process, not a constraint process. Of course, patterns may play an important role in the creation and specification of a style: commonly occurring patterns provide a useful basis for codification. Part of the confusion comes from the fact that styles can be viewed both prescriptively (i.e., as a complex constraint that must be satisfied) and descriptively (i.e., as a description of what exists).