Generation is a key technology for component creation and composition. It is possible to predict certain qualities about a system by studying its architecture, even in the absence of detailed design and code. Performance is largely a function of the frequency and nature of inter- component communication, in addition to performance characteristics of the components themselves, and hence can be predicted by studying the architecture of a system. A non-runtime quality attribute such as maintainability is largely a function of the locality of anticipated changes, which can be catalogued in terms of which architectural components such changes would affect. Entire product lines can be developed by sharing a common architecture.
Product lines are groups of related systems that, together, fill a market niche.
Variations among members are handled by late binding of parameters, swapping in interchangeable components, producing components with application generators, etc. The functionality of a component can be separated from its component interconnection mechanisms, and for good reasons. Traditional design approaches have been primarily concerned with the functionality of components. The stated goal is to recognize the different fundamental qualities imparted to systems by these various interconnection strategies and to encourage informed choices. A result is a separation of concerns, which introduces the possibility of building architectural infrastructure to implement automatically the architect's eventual choice of mechanism.