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.