Foundations of software architecture
This part defines some ideas which are used throughout the book:
- Complexity and its relation to modules, coupling and cohesion.
- Forces (non-functional requirements), their conflicts, and how those are resolved through asynchronous communication and distribution of system components.
- Different kinds of software systems: control, interactive, streaming, and computational.
- Communication paradigms: orchestration, choreography and shared data.
Please feel free to skip (through) it as you probably know most of them quite well.