Recently two colleagues and I did a workshop in which we explained SOLID Software development. SOLID is an acronym that stand for five principles for object-oriented development. SOLID stands for:
- Single Responsibility
- Open Closed
- Liskov Substitution
- Interface Segregation
- Dependency Inversion Principle
These principles can help a software developer manage dependencies between software components. Bob Martin the author of the principles writes “So dependency management, and therefore these principles, are at the foundation of the -ilities that software developers desire”. You can read the original article here.
These -ilities that Bob Martin refers to are the non functional requirements of a software product. I think that a software architecture is responsible for implementing the non functional or quality attributes of a software product. Therefore, I think that the SOLID design principles are one of the most fundamental rules for designing a robust software architecture. During the workshop we showed the following pictures to introduce a single principle.
Can you spot the principle just by looking at a picture?
The nice thing about the SOLID principles that they can be used on many levels. For example, the Single Responsibility principle can be used on method level, class level, library level and even on (sub)system level. The same goes for the other principles. The slide show below shows the slides on slide-share that we used for the workshop.
The complete slide show in PowerPoint format can be downloaded here. Feel free to use it and let me know how it went!