Chapter 5. Concepts of Software Architecture
Tip
This chapter presents knowledge that is foundational for Domain-Driven Transformation. If you are already familiar with an architecture concept presented here, you can skip its section and come back to it later for reference.
For a transformation to be successful, it is important to visualize the architecture of the to-be transformed system, which is why we start this chapter with a brief discussion of architecture documentation with the C4 Model.
In every company there are large software systems that have been developed over many years and whose maintenance becomes more and more tedious and expensive year after year. One of the main causes of these difficulties is the interwoven structure of these old systems. This arises when two basic principles of modular architecture have not been sufficiently considered in the development of the system: cohesion and coupling, which we will cover in this chapter.
Note
This book focuses on the structural aspects of software architecture, i.e., on the quality attributes maintainability, extensibility, and portability, which are closely related to cohesion and coupling. We do not address other quality attributes, such as usability, performance, and security, in our considerations. That would go beyond the scope of this book.
In the context of Domain-Driven Design, we will also discuss some architectural styles that will have an impact on our further discussion:
-
Monoliths
-
Microservices
-
The ...