Architectural Styles/patterns/Design:
The description of element and relation types with constraints on how they may be used. Pattern can be set of constraints on the architecture -on the element types- and their pattern of interaction-and these pattern describe a set or family of architectures that satisfy them. Pattern exhibit quality attributes.
Definition Of Architecture by Garlan and Mary Shaw:
“Software architecture goes beyond the algorithms and data structures of the computation; designing and specifying the overall system structure emerges as a new kind of problem. Structural issues include gross organisation and global control structure; protocols for communication,
synchronisation, and data access; assignment of functionality to design elements; physical distribution; composition of design elements; scaling and performance; and selection among design alternatives.”
Definition of Architecture by Stephen Mellor:
“The abstract organisation of software is called the software architecture. It proclaims and enforces system-wide rules for the organisation of data, control, structures and time.”
The Intension/Locality Thesis
To elucidate the relationship between architecture, design, and implementation,we distinguish at least two separate interpretations for abstraction in our context:
Intensional (vs. extensional) design specifications are “abstract” in the sense that they can be formally characterised by the use of logic variables that range over an unbounded domain. For example, a layered architectural pattern does not restrict the architect to a specific number of layers; it applies equally well to 2 layers or 12 layers.
Non-local (vs. local) specifications are “abstract” in the sense that they apply to all parts of the system (as opposed to being limited to some part thereof).
Both of these interpretations contribute to the distinction among architecture, design, and implementation, summarized as the “intension/locality thesis”:
Architectural specifications are intensional and non-local
Design specifications are intensional but local
Implementation specifications are both extensional and local
The Intension/Locality Thesis | ||
|---|---|---|
Architecture | intensional | Non-local |
Design | intensional | Local |
Implementation | Extensional | Local |
My notion of the difference between Software Architecture and Software Design:
After reading and analysing the definitions of software Architecture and Design provided by many of the stalwarts in the software Engineering Industry, I was very confused between the Architecture and Design.. There is clearly no clear cut demarcation between the design and architecture. Initially I concluded Architecture and Design are the same . But I never heard any one saying architect a system. I have heard people saying Design a system.
I was somewhat convinced with the “Intension/Locality Thesis” of Kazman described above Then I realised that there is a very thin line of demarcation between architecture and design. There is no quantitative means by which we can differentiate architecture and design. There is only a qualitative and abstract way of defining the difference between them.
Architecture is at the highest level of abstraction of a system. Design is a lower degree of abstraction compared to the architecture. When a design attains a stage where no longer it can be meaningfully abstracted further, it becomes an Architecture.
The architecture can be broken down into design. While designing a system 'n' designs can be developed. The commonalities in the 'n' designs when put together forms the architecture.