Software Architecture Design Principles
A software component infrastructure is a designed set of shared components
that supports a set of applications in a particular domain or domains,
and these applications must function within the constraints imposed by the infrastructure.
When designing the software component infrastructure, you must have a
base set of applications in mind. The final application
is constructed around the software component infrastructure.