Professional Documents
Culture Documents
Software Architecture: Meta and SOLID Principles: Elias Fofanov
Software Architecture: Meta and SOLID Principles: Elias Fofanov
Software Architecture: Meta and SOLID Principles: Elias Fofanov
Elias Fofanov
http://engineerspock.com
What is SOLID?
• Provide for a client a simple API for interaction with a set of complex objects
• Provide for a client a cleaner API for interaction with poorly designed API
Façade Diagram
Related Patterns
• Façade
• Decorator
• Composite
Composite pattern allows to compose
objects into tree structures to represent
part-whole hierarchies, letting clients
treat individual objects and compositions
of objects uniformly.
Decorator allows the behavior to be
added to an individual object, either
statically or dynamically, without
affecting the behavior of other objects
from the same class.
SRP Conclusion
Elias Fofanov
http://engineerspock.com
What is Design?
https://www.flickr.com/photos/deapeajay/2267569368
Specification of Software?
https://cdn.pixabay.com/photo/2014/11/26/15/20/pig-546307_960_720.jpg
Rigidity
• Software is rigid
if the cost of making a single change is very high
• Reason - tight coupling between modules
https://upload.wikimedia.org/wikipedia/commons/2/29/Rigid_bodies.jpg
Fragility
https://cdn.pixabay.com/photo/2017/02/16/19/41/package-2072221_960_720.jpg
Immobility
• Software is immobile when
it’s components can’t be reused in other systems
• Reason - tight coupling between components
https://www.flickr.com/photos/timevanson/27895941531
Viscosity
https://www.flickr.com/photos/shlevich/4564587901
Needless Complexity
• Software is needlessly complex if
developers are trying to forecast the future,
introducing excessive points of extension
https://www.flickr.com/photos/46183897@N00/7614916304
Dependency Management