Demystifying Architecture vs Design Patternsadmin
Patterns are repeated and consistent common characteristics that help in identifying phenomenon, problem or solution. The pattern is well-known concept that has been used for long time across many industries and practices to summarize previous experience and avoid re-inventing the wheel. Patterns were used in natural science, geometry, mathematics, engineering, art, etc.
In software industry, patterns appear in two main contexts: architecture and design patterns. In this post, I am trying to distinguish between both context in a simple way.
Software Architecture describes relationships between various software structures and components (applications, layers, etc.). The architecture is concerned with a larger view of software structure. On the other hand software design is focusing on specific component, application or layer. Accordingly software design is concerned with a smaller context than software architecture.
[one_third] An Architecture Pattern expresses a fundamental structural organization or schema for software systems. It provides a set of predefined subsystems, specifies their responsibilities, and includes rules and guidelines for organizing the relationships between them. [/one_third][one_third] A Design Pattern provides a scheme for refining the subsystems or components of a software system, or the relationships between them. It describes a commonly recurring structure of communicating components that solves a general design problem within a particular context. [/one_third][one_third_last] An Idiom is a low-level pattern specific to a programming language. An idiom describes how to implement particular aspects of components or the relationships between them using the features of the given language. For example, we can find idioms using c# or Java. [/one_third_last]
Architecture patterns are newer than design patterns in software industry. Each architecture pattern is described using below attributes:
[table id=2 /]
Below table depicts few examples of architectural and related design patterns:
[table id=3 /]