IP Library › Granted Patent US 8,707,260
Granted Patent B2
US 8,707,260 · App. 11/753,847 · Granted Apr 22, 2014

Resolving interdependencies between heterogeneous artifacts in a software system

Inventors: Jennifer L. Hawkins (Toronto, CA); Darshanand Khusial (Mississauga, CA); Kelly A. Lyons (Toronto, CA); Michael J. McAllister (Halifax, CA); Ross McKegney (Toronto, CA); Mark D. McKenna (Halifax, CA); Jacob Slonim (Bedford, CA)
Assignee: International Business Machines Corporation
G06F8/70
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,707,260
App. No.
11/753,847
Granted
Apr 22, 2014
Kind
B2
Abstract

An improved solution for resolving interdependencies between heterogeneous artifacts in software systems is provided. In an embodiment of the invention, a method for finding dependencies in a software system is provided, wherein the method includes: obtaining an input resource, wherein the resource includes a plurality of entry points to the software system and at least one strategy; identifying at least one artifact for each of the plurality of entry points; using the at least one strategy for gathering a plurality of related artifacts in the software system, wherein each of the plurality of related artifacts is heterogeneous in at least one of structure, composition, and relationships; determining a dependency between the gathered plurality of related artifacts; and outputting an output resource, wherein the output resource comprises the at least one dependency.

Claims (75)

1. A method for finding dependencies in a software system, the method comprising:

obtaining an input source code resource comprising source code, where the input source code resource comprises a plurality of source code software system entry points within the source code to the software system;

obtaining at least one software artifact data gathering strategy configured to extract information from the input source code resource;

identifying a plurality of artifacts in the software system comprising at least one artifact for each of the plurality of source code software system entry points;

using the obtained at least one software artifact data gathering strategy to gather a plurality of related artifacts in the software system from the identified plurality of artifacts, where each of the plurality of related artifacts is heterogeneous in at least one of structure, composition, and relationships;

determining at least one dependency between the gathered plurality of related artifacts; and

outputting an output resource, where the output resource comprises the determined at least one dependency between the gathered plurality of related artifacts gathered using the obtained at least one software artifact data gathering strategy.

2. The method of claim 1 , where the output resource comprises a dependency graph enumerating dependencies between various heterogeneous related artifacts gathered from the software system.

3. The method of claim 1 , where using the obtained at least one software artifact data gathering strategy to gather the plurality of related artifacts in the software system from the identified plurality of artifacts comprises:

extracting software system execution information from at least one of a plurality of source code artifacts and a plurality of binary code artifacts;

extracting a software system configuration and execution structure from a plurality of structured documents; and

extracting database topology from a plurality of database creation and administration scripts.

4. The method of claim 1 , where identifying the plurality of artifacts in the software system comprising the at least one artifact for each of the plurality of source code software system entry points comprises:

identifying container managed persistence (CMP) objects and database tables as artifacts; and

finding dependencies between the CMP objects and the database tables.

5. The method of claim 1 , where using the obtained at least one software artifact data gathering strategy to gather the plurality of related artifacts in the software system from the identified plurality of artifacts comprises:

identifying instances of a specific type of source code artifact or binary code artifact based on object inheritance; and

identifying all possible substitutions for a given artifact type in the software system based on one of a static configuration and a dynamic configuration.

6. The method of claim 1 , where identifying the plurality of artifacts in the software system comprising the at least one artifact for each of the plurality of source code software system entry points comprises:

identifying instances of a specific type of source code artifact or binary code artifact based on object inheritance; and

identifying relationships between objects of the identified instances of the specific type of source code artifact or binary code artifact while allowing other dependencies to be ignored.

7. The method of claim 1 , further comprising resolving a dependency between a database access query dynamically constructed in a source code artifact or a binary code artifact and a database table and field on which the database access query depends.

8. A method for determining dependencies in a software system, the software system comprising at least one source code artifact and at least one database comprising at least one database table, the method comprising:

obtaining an input source code resource comprising source code, where the input source code resource comprises a plurality of source code software system entry points within the source code to the software system;

obtaining at least one software artifact data gathering strategy configured to extract information from the input source code resource;

using the obtained at least one software artifact data gathering strategy to gather the at least one source code artifact from the software system;

determining, by a processor using source code of the at least one source code artifact, at least one dependency reference within the source code of the at least one source code artifact to the at least one database table; and

outputting an output resource, where the output resource comprises the determined at least one dependency reference within the source code of the at least one source code artifact to the at least one database table gathered using the obtained at least one software artifact data gathering strategy.

9. The method of claim 8 , further comprising resolving the at least one dependency reference within the source code of the at least one source code artifact to the at least one database table by detecting a plurality of references from the at least one source code artifact to at least one object-relational mapping layer asset, where the at least one object-relational mapping layer asset is bound to the at least one database and the at least one database table based on a configuration file.

10. The method of claim 8 , further comprising:

resolving the at least one dependency reference within the source code of the at least one source code artifact to the at least one database table by detecting a plurality of references from the source code of the at least one source code artifact to at least one object-relational mapping layer asset;

traversing the plurality of references and extracting a plurality of corresponding database queries; and

parsing the plurality of corresponding database queries and resolving a list of the at least one database and the at least one database table referenced by at least one of the plurality of corresponding database queries.

11. The method of claim 8 , further comprising:

resolving the dependencies by detecting database calls referenced within the source code of the at least one source code artifact; and

statically constructing a set of possible structured query language (SQL) statements based on one of control flow and a portion of SQL text detectable in the source code of the at least one source code artifact.

12. A system for finding dependencies in a software system, the system comprising:

an input/output (I/O) interface; and

a processor programmed to:

obtain an input source code resource comprising source code, where the input source code resource comprises a plurality of source code software system entry points within the source code to the software system;

obtain at least one software artifact data gathering strategy configured to extract information from the input source code resource;

identify a plurality of artifacts in the software system comprising at least one artifact for each of the plurality of source code software system entry points;

use the obtained at least one software artifact data gathering strategy to gather a plurality of related artifacts in the software system from the identified plurality of artifacts, where each of the plurality of related artifacts is heterogeneous in at least one of structure, composition, and relationships;

determine at least one dependency between the gathered plurality of related artifacts; and

output, via the I/O interface, an output resource, where the output resource comprises the determined at least one dependency between the gathered plurality of related artifacts gathered using the obtained at least one software artifact data gathering strategy.

13. The system of claim 12 , where the output resource comprises a dependency graph enumerating dependencies between various heterogeneous related artifacts gathered from the software system.

14. The system of claim 12 , where, in being programmed to use the obtained at least one software artifact data gathering strategy to gather the plurality of related artifacts in the software system from the identified plurality of artifacts, the processor is programmed to:

extract software system execution information from at least one of a plurality of source code artifacts and a plurality of binary code artifacts;

extract a software system configuration and execution structure from a plurality of structured documents; and

extract database topology from a plurality of database creation and administration scripts.

15. The system of claim 12 , where, in being programmed to identify the plurality of artifacts in the software system comprising the at least one artifact for each of the plurality of source code software system entry points, the processor is programmed to:

identify container managed persistence (CMP) objects and database tables as artifacts; and

find dependencies between the CMP objects and the database tables.

16. The system of claim 12 , where, in being programmed to use the obtained at least one software artifact data gathering strategy to gather the plurality of related artifacts in the software system from the identified plurality of artifacts, the processor is programmed to:

identify instances of a specific type of source code artifact or binary code artifact based on object inheritance; and

identify all possible substitutions for a given artifact type in the software system based on one of a static configuration and a dynamic configuration.

17. The system of claim 12 , where, in being programmed to identify the plurality of artifacts in the software system comprising the at least one artifact for each of the plurality of source code software system entry points, the processor is programmed to:

identify instances of a specific type of source code artifact or binary code artifact based on object inheritance; and

identify relationships between objects of the identified instances of the specific type of source code artifact or binary code artifact while allowing other dependencies to be ignored.

18. The system of claim 12 , where the processor is further programmed to resolve a dependency between a database access query dynamically constructed in a source code artifact or a binary code artifact and a database table and field on which the database access query depends.

19. A computer program comprising program code stored on a non-transitory computer-readable storage medium, which when executed, enables a computer system to implement a method for finding dependencies in a software system, the method comprising:

obtaining an input source code resource comprising source code, where the input source code resource comprises a plurality of source code software system entry points within the source code to the software system;

obtaining at least one software artifact data gathering strategy configured to extract information from the input source code resource;

identifying a plurality of artifacts in the software system comprising at least one artifact for each of the plurality of source code software system entry points;

using the obtained at least one software artifact data gathering strategy to gather a plurality of related artifacts in the software system from the identified plurality of artifacts, where each of the plurality of related artifacts is heterogeneous in at least one of structure, composition, and relationships;

determining at least one dependency between the gathered plurality of related artifacts; and

outputting an output resource, where the output resource comprises the determined at least one dependency between the gathered plurality of related artifacts gathered using the obtained at least one software artifact data gathering strategy.

20. A method of generating a system for finding dependencies in a software system, the method comprising:

providing a computer system operable to:

obtain an input source code resource comprising source code, where the input source code resource comprises a plurality of source code software system entry points within the source code to the software system;

obtain at least one software artifact data gathering strategy configured to extract information from the input source code resource;

identify a plurality of artifacts in the software system comprising at least one artifact for each of the plurality of source code software system entry points;

use the obtained at least one software artifact data gathering strategy to gather a plurality of related artifacts in the software system from the identified plurality of artifacts, where each of the plurality of related artifacts is heterogeneous in at least one of structure, composition, and relationships;

determine at least one dependency between the gathered plurality of related artifacts; and

output an output resource, where the output resource comprises the determined at least one dependency between the gathered plurality of related artifacts gathered using the obtained at least one software artifact data gathering strategy.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE OMITTED INVENTOR NAMES ON ORIGINAL RECORDATION AND TO ADD THE EXECUTED PAGES OF THESE INVENTORS TO THE RECORDED ASSIGNMENT PREVIOUSLY RECORDED ON REEL 019446 FRAME 0703. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Feb 14, 2014
From: HAWKINS, JENNIFER L.; KHUSIAL, DARSHANAND; LYONS, KELLY A.; MCALLISTER, MICHAEL J.; MCKEGNEY, ROSS; MCKENNA, MARK D.; SLONIM, JACOB
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 032264/0700 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 19, 2007
From: HAWKINS, JENNIFER L.; KHUSIAL, DARSHANAND; LYONS, KELLY A.; MCKEGNEY, ROSS
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 019446/0703 →
Continuity (1)
Related Publication 20080295065A1 · Nov 27, 2008