The differences between architecture and design (design pattern and architecture pattern as well)
Here's my point of view : there are two main steps while designing a system. The first one is architecture and the second one id designing.
- Architecture : sets which functionality the system should perform, split the functionality between components, set how components should behave and communicate in the system context, set the physical location of components and finally choose the tools in order to create components.
- Design : while architecture deals more with the wide picture, design should drill down in to the details relating to implementing certain components. Designing of components end up with classes, interfaces, abstract classes and other OO feature in order to fulfill the given component tasks.
Both architecture and design got patterns available to solve given problem. While design pattern are more about classes and interfaces needed in order to create component, architecture patterns on the other hand are more about behavior of the system. For example Singleton, which is well known design pattern, helps developers to create a class with single instance. Singleton deals with implementation of certain class in component. Singleton doesn’t have any implication on the system. Inversion of control (IOC), on the other hand, shapes the system behavior. IOC is architecture design pattern that force classes that write in the system to be control (run) by other mechanism rather then the code that class implementer wrote. IOC force Infrastructure in order to enable the writing class to be control by other code rather then the one that write to implement class. IOC doesn’t have any implication on class’s implementation but has direct influence on the way system behaves.
In my next posts I’ll try to go through known architecture patterns and to show how to implement them using .Net.