Patent ID: 7640533

Claim:
A method of building a software system according to a set of architectural build rules comprising: identifying a plurality of software elements for inclusion in a build, the software elements collectively operable to provide a set of instructions and data for operation of the software system; designating, for each of the software elements, a plurality of layers, each of the layers representing a set of compilation units operative to perform according to a predetermined functional scope; enumerating a set of build rules indicative of allowable dependencies between the layers of the software elements; defining a set of dependencies between the software elements, the dependencies indicative of an association between the designated layers of the software elements; and enforcing the build rules by analyzing the defined dependencies and identifying defined dependencies that are contrary to the enumerated build rules; identifying a build target and corresponding build action; identifying dependent compilation units from the dependencies and conditionally generating build instructions for performing the build action upon the build target when a dependent elements corresponding to a dependency changes; determining if the identified dependent compilation unit corresponds to the build rules; enumerating, in the build file, if the compilation unit corresponds to the build rules; the identified compilation unit as corresponding to the build action, and omitting, if the compilation unit does not correspond to the build rules, the identified compilation unit from triggering the build action.