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.
Claims32
A computer-implemented method for exploring the 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 computer system created each non-source file during its build process;
- (b) determining 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) reporting information generated in steps (a) and (b).
A computer system, comprising:
- at least one processor;
- memory associated with the at least one processor;
- and
- a program supported in the memory for exploring 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).
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) using the audit program to detect and log access to resources by the computer program and the child processes and threads that the computer program recursively spawns during its operation;
- (c) using the audit program to track and log the state of child processes and threads used to resolve the fully qualified paths of all resources being accessed;
- (d) using the audit program to distinguish between and log read-only, read-write, create modes of resource access;
- (e) using the audit program to distinguish between and log transitory resources and outputs;
- (f) using the audit program to keep track of and log resources that were removed;
- and
- (g) using the audit program to keep track of and record 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 supported 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 the child processes and threads that the computer program recursively spawns during its operation;
- (c) track and log the state of child processes and threads used to resolve the 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) using the audit program to detect and log access to resources by each computer program and the 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) using the audit program to track and log the state of child processes and threads used to resolve the fully qualified paths of all resources being accessed;
- (d) using the audit program to distinguish between and log read-only, read-write, create modes of resource access;
- (e) using the audit program to distinguish between and log transitory resources and outputs;
- (f) using the audit program to keep track of and log resources that were removed;
- and
- (g) using the audit program to keep track of and record 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 supported 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 the 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 the state of child processes and threads used to resolve the 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.