What is Software Architecture? Define its basic structures.

The software 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.
There are three categories of architectural structures, which will play an important role in the design, documentation, and analysis of architectures:

Modules: Module structures partition systems into implementation units called  modules. Modules are assigned specific computational responsibilities, and are the basis of work assignments for programming teams. Examples: Layered Architecture
Component-and-connector: Other structures are dynamic, meaning that they focus on the way the elements interact with each other at runtime to carry out the system’s functions. Suppose the system is to be built as a set of services. The services, the infrastructure they interact with, and the synchronization and interaction relations among them form another kind of structure often used to describe a system. Examples: Model-View-Controller, Broker Pattern, Pipe-and-filter, peer-to-peer, publish and subscribe, Service Oriented Architecture, etc.
Allocation Structure: A third kind of structure describes the mapping from software structures to the system’s organizational, developmental, installation, and execution environments. Components are deployed onto hardware in order to execute. These mappings are called allocation structures.
Examples: Map Reduce or Multi-tier architecture.

Bass, Len; Clements, Paul; Kazman, Rick (2012-09-25). Software Architecture in Practice (3rd Edition) (SEI Series in Software Engineering) (p. 4). Pearson Education. Kindle Edition.


Feel free to contact the admin for any suggestions and help.