Member-only story
SOFTWARE ARCHITECTURE & REFACTORING
Layers in Software Architecture that Every Sofware Architect should Know
Architectures have the same objective — the separation of concerns. They all achieve it by dividing the software into layers. — Uncle Bob

Layers
Layers are horizontal (don’t get confused with title image) abstract parts of an application. Their boundaries are making a right angle with the data flow. Layers are representing the different levels and types of abstraction of the concerns which accompany software development.
Why Divide the Application into Layers
- Maintains the Single Responsibility Principle.
- Follows Separation of Concerns.
- Isolates development roles & skills. (Presentation Layer — FE dev, Business Layer — BE dev)
- Supports multiple implementations. (Interchangeable Presentation Layer)
- Varying rates of change.
- Slices application to more manageable units.