A software build framework includes and architecture to identify software
components including sets of classes, or objects, and categorizes the
objects into layers in the component. A set of build rules identifies
allowable dependencies between the component layers among the same and
other components in the system, as well as external entities such as off
the shelf (OTS) and third party vendor products outside the development
control. The build mechanism enumerates a set of dependencies for each of
the components, and an enforcer analyzes the dependencies to identify
dependencies in violation of the rules. The enforcer separates the
compile time and runtime inheritance paths to detect indirect monolithic
inheritance. In this manner, dependency rules define an efficient and
optimal architecture which lends itself well to modifications, timely
builds and deliverable releases, and enforces the dependency rules at
compile time so as to avoid generating an obsolete or suspect build.