Difference between revisions of "Software Architecture"
From Suhrid.net Wiki
Jump to navigationJump to searchLine 19: | Line 19: | ||
== Capture early design decisions == | == Capture early design decisions == | ||
+ | |||
+ | * An architecture constrains implementation. | ||
+ | * An architecture can help to determine organisational structure. | ||
+ | * Allow apriori reasoning about change. | ||
+ | ** Probably the most important - since 80% of software cost occurs after deployment. | ||
+ | ** Enables risk assessment of future project changes. | ||
+ | * Support analysis and prediction about future properties. | ||
== Reusable abstraction of systems == | == Reusable abstraction of systems == |
Revision as of 06:29, 19 March 2012
Contents
Introduction to Software Architecture
- Software architecture encompasses the set of significant decisions about the organization of a software system :
- Selection of structural elements and their interfaces by which a system is composed.
- Behaviour as specified in collaborations among those elements.
- Composition of these structural and behavioural elements into larger subsystem.
- Architectural style that guides this organization.
- Definition:
- The structure or structures of the system which comprise of software elements, the externally visible properties of those elements and the relationships among them.
Why Architecture
Communication
- There are different stakeholders (client, user, project manager, developer, maintainer) who want different qualities of the system being built.
- E.g. client is concerned about cost, user about usability, project manager about dividing work, developer about implementation and maintainer about making changes.
- An architecture provides a framework and structure for airing these concerns.
Capture early design decisions
- An architecture constrains implementation.
- An architecture can help to determine organisational structure.
- Allow apriori reasoning about change.
- Probably the most important - since 80% of software cost occurs after deployment.
- Enables risk assessment of future project changes.
- Support analysis and prediction about future properties.