160 likes | 482 Views
What’s the Difference Between Architecture and Design. Paul Clements Subrahmanyam Allamaraju. Architecture and Design. All architecture is design NOT all design is architecture Architect draws the boundary between architectural and non-architectural design. Traits of the Software Architect.
E N D
What’s the Difference Between Architecture and Design Paul Clements Subrahmanyam Allamaraju
Architecture and Design • All architecture is design • NOT all design is architecture • Architect draws the boundary between architectural and non-architectural design
Traits of the Software Architect • Gained enough breadth and depth in the relevant domain • Strong communication/development/debugging skills • “cross domain and technology proficiency and appreciation” • “knowledge of patterns in domain/technology areas” • Looking for challenging problems • In summary: SUPER ENGINEER
What is Software Architecture? • Represents the structure of the software • Expressed using certain views • Includes principles behind the design and evolution of the software • Essential characteristics of architecture: • High level view • Realize ALL the use case scenarios • Present a systemic view to all stakeholders
Examples of Architectures(all of these are incomplete) • High level Design • Only contains the implementer’s view of the software • Deployment • Concerns how software is deployed across various platforms • Generic Technology Architectures • Examples: COM, CORBA • Does not address the domain the software must exist and evolve in
Survival and Evolution • Software survives as long as it meet the requirements for which it was built • Software must evolve to meet future requirements • Software Architecture’s fundamental requirement: “design a structure for the software considering the long-term consequences”
Architecture ParadoxSurvival vs Evolution • There is pressure on successful to change • New requirements • Changing environment • Software must evolve to survive • Changes increase the entropy of the software • Changes eventually increase the entropy to a point to where further changes are impossible • Software cannot evolve, therefore cannot survive
How to defy the Software Paradox • Identify the goals of the architecture • Discover the principles based on the goals • Design an architecture integrating these principles
Identify the goals of architecture • best-case requirements • long term organizational focus • reuse considerations • User wish lists • Other anticipated changes
Goals to principles • “discover” the principles the software must follow to meet its goals • Principles will guide designers to find the “right” implementation • Principles may be expressed as rules • DOs and DONTS • Enforcing these principles is difficult
Integration of Principles and Architecture • Remove the human element from enforcement of principles • Software structure will dictate: • How the software will be changed • What changes are possible • What changes are not possible
Summary • Software can defy the architecture paradox if: • The structure can accommodate changes • A set of architecture goals is abstracted • Devise a set of principles to realize the goals • Integrate the principles into the architecture