Articles in This Series
Software applications are typically broken into layers, or tiers when there are multiple physical machines involved. A traditional 4-layer application architecture might consist of a presentation layer, service layer, business logic layer, and data layer.
Cross-cutting Concerns and Coupling
Aspect-oriented programming (AOP) is one paradigm used to address cross-cutting concerns, which are also called ‘aspects’. Another approach involves the creation of reusable concern-specific code modules that can be consumed across layers. The disadvantage here is that dependent modules “know” about cross-cutting interfaces and are therefore coupled to some extent.
Coupling between modules and components should be reduced as much as possible in order to promote maximum reusability, scalability, sustainability, maintainability, and testability. Usage of an event-driven pattern such as Pub/Sub (discussed in a later article) is a solid way to reduce this coupling.
Industry subject experts such as Addy Osmani and Nicholas Zakas argue that a module should be self-contained and able to fail and/or be removed without breaking the application. In addition, A module should be completely interchangeable with another module implementing the same interface, or event-driven behavior without breaking the application.
The “Wild West” Syndrome
With that, yee-haw and giddy up!