POSA Vol.1 EP3, Patterns' constitution and prospect
1. The following are some of the most important constitutions of patterns(architecture)[1]:
1.1 Abstraction
1.2 Encapsulation
1.3 Information Hiding
1.4 Modularization
1.4.1 Modularization is concerned with the meaningful decomposition of a software system and with its grouping into subsystems and components, like multilayers.
1.5 Separation of Concerns
1.5.1 Different or unrelated responsibilities should be separated from each other within a software system, for example by attaching them to different components. Collaborating components that contribute to the solution of a specific task should be separated from components that are involved in the computation of other tasks.
1.6 Coupling and Cohesion
1.6.1 Coupling focuses on inter-module aspects, whereas cohesion emphasizes intra-module characteristics.
1.6.2 High cohesion and low coupling.
1.7 Sufficiency, Completeness and Primitiveness
1.7.1 'Sufficient' means that the component should capture those characteristics of an abstraction that are necessary to permit a meaningful and efficient interaction with the component. 'Completeness' means that a component should capture all relevant characteristics of its abstraction. By 'primitiveness'. It means that all the operations a component can perform can be implemented easily.
1.8 Separation of Policy and lmplementation
1.8.1 A component of a software system should deal with policy or implementation, but not both.
1.8.2 A policy component deals with context-sensitive decisions, knowledge about the semantics and interpretation of information.
1.8.3 An implementation component deals with the execution of a fullyspecified algorithm in which no context-sensitive decisions have to be made.
1.9 Separation of Interface and Implementation
1.9.1 Any component should consist of two parts, interface and implementation.
1.9.2 An interface part that defines the functionality provided by the component and specifies how to use it.
1.9.3 An implementation part that includes the actual code for the functionality provided by the component.
1.10 single Point of Reference
1.10.1 Any item within a software system should be declared and defined only once. The main objective of this principle is to avoid problems of inconsistency.
1.11 Divide-and-Conquer
2. The following are some of the most important prospects of patterns(architecture)[2]:
2.1 Changeability
2.2 Interoperability
2.3 Efficiency
2.4 Reliability
2.5 Testability
2.6 Reusability
-----------------------------------------------------------------------------
Ref:
[1]: Pattern-oriented software architecture, vol.1, chapter 6.3: Enabling Techniques for Software Architecture.
[2]: Pattern-oriented software architecture, vol.1, chapter 6.4: Non-functional Properties of Software Architecture.