"Software architecture is the structure or structures of a software program, which comprise software elements, and the visible external properties of these elemets and the relationship among them."
--------by Bass, Clements, and Kazman (2003) as follows.
So, when we learn an architecture of a program, we can learn from the sides below:
1 Structural perspective or static perspective or component based perspective
2 dynamic perspective
3 funtional and non functional.
4 deployment perspective.
1 Structural perspective or static perspectiven or component based
In this perspective, software architecture consists of multiple components, which are self-contained and ecapsulated some information. A component is either a composite object composed of other objects or a simple object. A component provides an interface through which it communicates with other components. All information that is needed by one component to communicate with another component is contained in the interface, which is separate from the implementation. Thus, a component canbe considered a black box, because its implementation is hidden from other components.Components communicate with each other in different ways using predefined communication patterns.
A sequential design is a program in which the components are classes and component instances are objects (instances of the classes); the components are passive classes without a thread of control.A component is self-contained; therefore, it can be compiled separately, stored in a library, and then subsequently instantiated and linked into an application.
In a concurrent or distributed design, the components are active (concurrent) and capable of being deployed to different nodes in a distributed environment. In this design, concurrent components can communicate with each other using several different communication patterns (see Section 12.3), such as synchronous, asynchronous,brokered, or group communication. An underlying middleware framework is typically provided to allow components to communicate.
In UML, this is class or object diagram.
2 Dynamic perspective:
The dynamic view of a software architecture is a behavioral view, which is depicted on a communication diagram
3 deployment view:
The deployment view of the software architecture depicts the physical configuration of the software architecture, in particular how the subsystems of the architecture are allocated to physical nodes in a distributed configuration.
4 funtional and non functional
funtional: functionality provided by the architecture
nonfunctional: quality of the functionality provided
Reference:
<<software modeling and design>> -Hassan Gomaa