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.
Claims31
A computer-implemented method for analyzing structure of a software system executing on a computer system comprising a plurality of software components, the method performed by the computer system comprising the steps of:
- (a) determining which software component in the software system created each non-source file during its build process;
- (b) determining which software component in the software system accessed which source file or non-source file during its build process, during testing, or during runtime;
- (c) reporting information generated in steps (a) and (b);
- and
- (d) identifying and reporting dependency errors by testing consistency between the information generated in steps (a) and (b) and information received by the computer system on the software components in the software system, the resources owned or controlled by each software component, and the resources each software component can make use of as declared by metadata in order to identify intended dependence relationships among the software components.
A computer system, comprising:
- at least one processor;
- memory associated with the at least one processor;
- and
- a program stored in the memory for analyzing the structure of a software system executing on a computer system comprising a plurality of software components, the program containing a plurality of instructions which, when executed by the at least one processor, cause the at least one processor to:
- (a) determine which software component in the computer system created each non-source file during its build process;
- (b) determine which software component in the computer system accessed which source file or non-source file during its build process, during testing, or during runtime;
- (c) report information generated in steps (a) and (b);
- and
- (d) identify and report dependency errors by testing consistency between the information generated in (a) and (b) and information received by the computer system on the software components in the software system, the resources owned or controlled by each software component, and the resources each software component can make use of as declared by metadata in order to identify intended dependence relationships among the software components.
A computer-implemented method for auditing a computer program, the method comprising the steps, performed by a computer system, of:
- (a) executing the computer program and an audit program on the computer system;
- (b) detecting and logging, using the audit program, access to resources by the computer program and child processes and threads that the computer program recursively spawns during its operation;
- (c) tracking and logging, using the audit program, a state of child processes and threads used to resolve fully qualified paths of all resources being accessed;
- (d) distinguishing, using the audit program, between and log read-only, read-write, create modes of resource access;
- (e) distinguishing, using the audit program, between and log transitory resources and outputs;
- (f) keeping track of and logging, using the audit program, resources that were removed;
- and
- (g) keeping track of and recording, using the audit program, information on renaming of files and directories.
A computer system, comprising:
- at least one processor;
- memory associated with the at least one processor;
- and
- an audit program stored in the memory for auditing a computer program, the audit program containing a plurality of instructions which, when executed by the at least one processor, cause the at least one processor to:
- (a) execute the computer program on the computer system with the audit program;
- (b) detect and log access to resources by the computer program and child processes and threads that the computer program recursively spawns during its operation;
- (c) track and log a state of child processes and threads used to resolve fully qualified paths of all resources being accessed;
- (d) distinguish between and log read-only, read-write, create modes of resource access;
- (e) distinguish between and log transitory resources and outputs;
- (f) keep track of and log resources that were removed;
- and
- (g) keep track of and record information of renaming of files and directories.
A computer-implemented method for auditing a plurality of computer programs to determine their relationships with one another, the method comprising the steps, performed by a computer system, of:
- (a) executing the computer programs and an audit program on the computer system;
- (b) detecting and logging, using the audit program, access to resources by each computer program and child processes and threads that the computer program recursively spawns during its operation in order to determine which computer program used resources created by another computer program;
- (c) tracking and logging, using the audit program, a state of child processes and threads used to resolve fully qualified paths of all resources being accessed;
- (d) distinguishing, using the audit program, between and log read-only, read-write, create modes of resource access;
- (e) distinguishing, using the audit program, between and log transitory resources and outputs;
- (f) keeping track of and logging, using the audit program, resources that were removed;
- and
- (g) keeping track of and recording, using the audit program, information of renaming of files and directories.
A computer system, comprising:
- at least one processor;
- memory associated with the at least one processor;
- and
- an audit program stored in the memory for auditing a plurality of computer programs to determine their relationships with one another, the audit program containing a plurality of instructions which, when executed by the at least one processor, cause the at least one processor to:
- (a) execute the computer programs on the computer system with the audit program;
- (b) detect and log access to resources by each computer program and child processes and threads that the computer program recursively spawns during its operation in order to determine which computer program used resources created by another computer program;
- (c) track and log a state of child processes and threads used to resolve fully qualified paths of all resources being accessed;
- (d) distinguish between and log read-only, read-write, create modes of resource access;
- (e) distinguish between and log transitory resources and outputs;
- (f) keep track of and log resources that were removed;
- and
- (g) keep track of and record information of renaming of files and directories.
Dependencies are inferred from the claim text.