Summary
In this chapter, we discussed what software architecture is and why it’s worth caring about. We showed what happens when architecture is not updated along with the changing requirements and explored the fundamentals of good architecture. Then, we saw how to treat architecture in an Agile environment, before moving on to DDD. We also learned how C++ language features such as zero-cost abstractions, concepts, and the STL help express architectural decisions. Finally, we discussed the SOLID and DRY principles, and we defined the terms coupling and cohesion.
You should now be able to point out many design flaws in code reviews and refactor your solutions for greater maintainability, as well as be less error-prone as a developer.
In the next chapter, we will learn about the different architectural approaches or styles. We will also learn how and when we can use them to gain better results.