In this chapter, we discussed what software architecture is and why it's worth caring about it. We've shown what happens when architecture is not updated along with the changing requirements and implementation and how to treat architecture in an Agile environment. Then we moved on to some core principles of the C++ language.
We learned that many terms from software development can be perceived differently in C++ because C++ allows more than writing object-oriented code. Finally, we discussed terms such as 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 being less bug-prone as a developer. You can now design class interfaces that are robust, self-explanatory, and complete.
In the next chapter, we will learn about the different architectural approaches or styles. We will also learn about how and when we can use them to gain better results.