Sunday, August 12, 2007

AnitPatterns:Architectural Scale and Primal Forces

The primal forces are persuasive concerns that influence most software choices. The trade-offs between these concerns will affect the overall quality of software architecture at all levels. In order to simplify decision making and clarify the separation of issues, we have estimated the relative importance of the primal forces at each architectural scale





On an application level, software developers are concerned primarily with managing functionality and performance when developing software to meet the functional needs of their user base. The system level is focused on developing an infrastructure that can effectively manage complexity and change in order to reduce the overall life-cycle costs of developing and maintaining an organization’s software system. The system-level architect is responsible for providing adaptability and ensuring that the overall system design is sufficient to adapt to the evolving needs of an organization.


On the enterprise level, the emphasis is on managing resources, as large-scale systems often involve thousands of interacting components and services. Additionally, the management of change overshadows other primal forces that are addressed at lower levels. The management of resources becomes a major concern as the enterprise scale increases.


At a global level, the emphasis is on leveraging existing standards and effectively utilizing the existing knowledge base to enhance enterprise-level development. However, the enterprise’s control over solutions is reduced as an organization has limited influence of external technologies. Keeping up to date on new technologies and use of IT resources are the primary concerns at the global level.


The pattern language will examine the recurring structures at each level and present detailed solutions for the major problems inherent at each architectural scale. Design patterns excel in establishing reusable architectural designs that balance the primal forces. A natural side effect of good object-oriented architecture, which effectively balances the forces, is that overall software development costs are reduced as maintenance costs are reduced, and services can be used during a major portion of the life cycle.

No comments: