Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Layering is a well-known technique for reducing dependencies between parts of a software system. An element in a particular layer is only permitted to access elements in the same layer or in layers below it. Strict layering, which is more laborious to enforce, prescribes communication only with the layer immediately beneath the current layer[].
[] This induces a directed acyclic graph (DAG) structure in which nodes are layers, and arcs are dependencies, ensuring that, among other things, there are no circular dependencies.
Organizing implementation artifacts is a vast field for which a large amount of literature is available. It is also an important topic that will affect any project during its lifetime, even though it is not a guarantee of quality.