Separation of concerns: Decreasing Coupling and Raising Cohesion

Average Rating: -

Using simple but proven design principles, this presentation explains the “Layered Module” architecture style, an approach to manage dependencies between the modules which compose a program. We will discuss the single responsibility principle. We will see how to use abstract classes and interfaces as a mean to reduce dependency surface. In the same way, we will present the techniques of dependency injection and inversion of control to reduce the coupling between classes. Lastly, we will discuss benefits to modularize and decouple with layers using namespaces (packages).

Process/Mechanics

A) Depends upon abstractions
- Single responsibility principle
- Class as unit of modularity
- Working with Interfaces, the contract as unit of abstraction
B) Depends upon stability
- Design using “Component” as unit of deployment and stability for teams
- Design using “Class” with dependency injection and inversion of control techniques
C) Beyond the class as unit of modularity
- Modularized and decouple with layers and uses “Namespace” as unit of composition (packaging)