1. A computer-implemented method for identifying illegal dependencies among a plurality of software components each comprising an architectural unit in a software system, comprising the steps of: (a) receiving, at a computer system, information on the software components in the software system, resources owned or controlled by each software component, and resources each software component can legally use in accordance with predefined access control rules as declared by metadata in order to identify intended dependence relationships among the software components; (b) analyzing the software system, by the computer system, to determine which software component created each non-source file and to determine which software component accessed which source file or non-source file during its build process, during testing, or during runtime to generate information on the software components and their actual dependence relationships based on use by each software component of resources owned or controlled by another software component; (c) testing consistency between the information received in step (a) and the information generated in step (b), by the computer system, to identify illegal dependencies violating access control rules; and (d) reporting the illegal dependencies identified in step (c) by the computer system; and (e) correcting dependency errors based on the illegal dependencies reported in step (d) to improve performance of the software system.