1. A system for governing software architecture as designed, the system comprising: a memory operable to store code and a plurality of rules, the rules corresponding to classification, layering, abstraction, components, and links characteristics of the software architecture as designed, the code programmed to implement at least part of the software architecture as designed; and a processor configured to apply the rules to the code, the application testing the code for differences from the software architecture as designed and the software architecture as implemented in the code, such that the differences in the classification, layering, abstraction, components, links, or combinations thereof are identified.