Computer-implemented tools and methods for extracting information about the structure of a large computer software system, exploring its structure, discovering problems in its design, and enabling refactoring
AssigneeSilverthread, Inc.
InventorDaniel J. Sturtevant
Life of this patent
Estimating the term…
Abstract
An interrelated set of tools and methods are disclosed for recording the identity of software components responsible for creating files, recording the identity of software components that access software files, reasoning about the dependency relationships between software components, identifying and reporting undesirable dependencies between them, and reporting other useful information about a large-scale software architecture by instrumenting a software build process or test process.
Claims20
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.
A computer system, comprising:
- at least one processor;
- memory associated with the at least one processor;
- and
- a program stored in the memory for identifying illegal dependencies among a plurality of software components each comprising an architectural unit in a software system, the program containing a plurality of instructions which, when executed by the at least one processor, cause the at least one processor to:
- (a) receive 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) analyze the software 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) test consistency between the information received in step (a) and the information generated in step (b) to identify illegal dependencies violating access control rules;
- and
- (d) report the illegal dependencies identified in step (c);
- and
- (e) correct dependency errors based on the illegal dependencies reported in step (d) to improve performance of the software system.
Dependencies are inferred from the claim text.