Module 1#
What is Software Architecture#
The architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both.
- Many architectural decisions are made early
- Many decisions are made early that are not architectural
- Its hard to look at a decision and tell whether or not its "major"
Structures on the other had are fairly easy to identify in software, and they form a powerful tool for system design.
- A structure is a set of lements held together by a relation
- Software systems are composed of many structures, and no single structure holds claim to being the architecture.
- There are three important categories of architectural structures
- Module
- Component and Connector
- Allocation
Modules#
- Structures can be partitioned into implementation units called modules
- Modules are assigned specific computational responsibilities, and are the basis of work assignments
Component and Connector#
- Other structures focus on the way the elements interact with each other at runtime to carry out the system's functions
Allocation#
- Allocation structures describe the mapping from software structures to the system's environments