IP Library Granted Patent US 8,615,752
Granted Patent B2
US 8,615,752 · App. 12/346,165 · Granted Dec 24, 2013

System and method for detecting software patch dependencies

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,615,752
App. No.
12/346,165
Granted
Dec 24, 2013
Kind
B2
Abstract

This disclosure relates to software patches and, more particularly, to detecting software patch dependencies in an environment where multiple software patches may be installed. A method, computer program product, and system for detecting software patch dependencies receives one or more first lists of software code segments, including changes to the software code segments associated with one or more first software patches. A second list of software code segments that includes software code paths executed at run-time by a second software patch is received. One or more matching code segments are identified. Dependencies of the second software patch based on the one or more matching software code segments are identified. The dependencies represent software patches required by the second software patch. A list of the dependencies is generated.

Claims (94)

1. A method of detecting software patch dependencies comprising:

receiving one or more first lists of software code segments that include changes to the software code segments associated with one or more first software patches;

receiving a second list of software code segments that includes software code paths executed at run-time by a second software patch, wherein receiving the second list includes:

monitoring, by a code coverage tool, execution of the software code paths of the second software patch at run-time;

measuring, by the code coverage tool, the degree to which the software code paths of the second software patch have been tested or executed at run-time;

reporting the software code paths executed by the second software patch at run- time; wherein said reporting includes which functions calls, statements or instructions have been executed during run-time; and

identifying the software code segments of the second software patch that are executed at run time;

identifying one or more matching software code segments that are included in at least one of the first lists and the second list, where the matching software code segments include changes associated with the one or more first software patches and software code paths executed at run-time by the second software patch;

identifying one or more dependencies of the second software patch based on the one or more matching software code segments, where the one or more dependencies represent one or more of the first software patches required by the second software patch; and generating a list of the one or more first software patches required by the second software patch; and

compiling a software patch installation package that includes the second software patch and the one or more first software patches required by the second software patch.

2. The method of claim 1 further comprising:

installing the one or more first software patches on a computer system;

installing the second software patch on the computer system;

executing one or more applications on the computer system including exercising substantially all run time code paths of the second software patch;

monitoring the execution of the one or more applications, including monitoring at least the run time code paths of the second software patch;

recording the software code segments executed at run-time by the second patch during the exercising of substantially all run time code paths of the second software patch; and

generating the second list of software code segments executed at run-time from the recorded software code segments.

3. The method of claim 2 wherein the exercising of substantially all run time code paths of the second software patch is performed by one or more of:

an automated software test tool configured to exercise the run time code paths of the second software patch; and

a manual test process configured to exercise the run time code paths of the second software patch.

4. The method of claim 1 wherein the one or more first lists of software code segments are generated by a software source code revision tool.

5. The method of claim 1 wherein the second list of software code segments is generated by a run time software code coverage tool.

6. The method of claim 1 wherein the changes to the software code segments include one or more of:

a deleted method;

a modified method;

an added method;

a deleted class;

a modified class;

an added class;

a deleted file;

a modified file; and

an added file.

7. A computer program product for detecting software patch dependencies, residing on a non-transitory computer readable medium, having a plurality of instructions stored thereon, which, when executed by a processor, cause the processor to perform operations comprising:

receiving one or more first lists of software code segments that include changes to the software code segments associated with one or more first software patches;

receiving a second list of software code segments that includes software code paths executed at run-time by a second software patch, wherein receiving the second list includes:

monitoring, by a code coverage tool, execution of the software code paths of the second software patch at run-time;

measuring, by the code coverage tool, the degree to which the software code paths of the second software patch have been tested or executed at run-time;

reporting the software code paths executed by the second software patch at run-time; wherein said reporting includes which functions calls, statements or instructions have been executed during run-time; and

identifying the software code segments of the second software patch that are executed at run time;

identifying one or more matching software code segments that are included in at least one of the first lists and the second list, where the matching software code segments include changes associated with the one or more first software patches and software code paths executed at run- time by the second software patch;

identifying one or more dependencies of the second software patch based on the one or more matching software code segments, where the one or more dependencies represent one or more of the first software patches required by the second software patch; and

generating a list of the one or more first software patches required by the second software patch; and

compiling a software patch installation package that includes the second software patch and the one or more first software patches required by the second software patch.

8. The computer program product of claim 7 wherein the operations further comprise:

installing the one or more first software patches on a computer system;

installing the second software patch on the computer system;

executing one or more applications on the computer system including exercising substantially all run time code paths of the second software patch;

monitoring the execution of the one or more applications, including monitoring at least the run time code paths of the second software patch;

recording the software code segments executed at run-time by the second patch during the exercising of substantially all run time code paths of the second software patch; and

generating the second list of software code segments executed at run-time from the recorded software code segments.

9. The computer program product of claim 8 wherein the exercising of substantially all run time code paths of the second software patch is performed by one or more of:

an automated software test tool configured to exercise the run time code paths of the second software patch; and

a manual test process configured to exercise the run time code paths of the second software patch.

10. The computer program product of claim 7 wherein the one or more first lists of software code segments are generated by a software source code revision tool.

11. The computer program product of claim 7 wherein the second list of software code segments is generated by a run time software code coverage tool.

12. The computer program product of claim 7 wherein the changes to the software code segments include one or more of:

a deleted method;

a modified method;

an added method; a deleted class;

a modified class;

an added class;

a deleted file;

a modified file; and

an added file.

13. A computing system comprising:

at least one processor; at least one memory architecture coupled with the at least one processor;

a first software instruction set executed on the at least one processor and the at least one memory architecture configured to receive one or more first lists of software code segments that include changes to the software code segments associated with one or more first software patches;

a second software instruction set executed on the at least one processor and the at least one memory architecture configured to receive a second list of software code segments that includes software code paths executed at run-time by a second software patch, wherein the second software instruction set is configured to monitor, by a code coverage tool, execution of the software code paths of the second software patch at run-time and measure, by the code coverage tool, the degree to which the software code paths of the second software patch have been tested or executed at run-time, and configured to report the software code paths executed by the second software patch at run-time; wherein said report includes which functions calls, statements or instructions have been executed during run-time and identify the software code segments of the second software patch that are executed at run time;

a third software instruction set executed on the at least one processor and the at least one memory architecture configured to identify one or more matching software code segments that are included in at least one of the first lists and the second list, where the matching software code segments include changes associated with the one or more first software patches and software code paths executed at run-time by the second software patch;

a fourth software instruction set executed on the at least one processor and the at least one memory architecture configured to identify one or more dependencies of the second software patch based on the one or more matching software code segments, where the one or more dependencies represent one or more of the first software patches required by the second software patch; and

a fifth software instruction set executed on the at least one processor and the at least one memory architecture configured to generate a list of the one or more first software patches required by the second software patch; and

a sixth software instruction set executed on the at least one processor and the at least one memory architecture configured to compile a software patch installation package that includes the second software patch and the one or more first software patches required by the second software patch.

14. The computing system of claim 13 further comprising:

a seventh software instruction set executed on the at least one processor and the at least one memory architecture configured to install the one or more first software patches on a computer system;

an eighth software instruction set executed on the at least one processor and the at least one memory architecture configured to install the second software patch on the computer system;

a ninth software instruction set executed on the at least one processor and the at least one memory architecture configured to execute one or more applications on the computer system including exercising substantially all run time code paths of the second software patch;

a tenth software instruction set executed on the at least one processor and the at least one memory architecture configured to monitor the execution of the one or more applications, including monitoring at least the run time code paths of the second software patch;

an eleventh software instruction set executed on the at least one processor and the at least one memory architecture configured to record the software code segments executed at run-time by the second patch during the exercising of substantially all run time code paths of the second software patch; and

a twelfth software instruction set executed on the at least one processor and the at least one memory architecture configured to generate the second list of software code segments executed at run-time from the recorded software code segments.

15. The computing system of claim 14 wherein the exercising of substantially all run time code paths of the second software patch is performed by one or more of:

an automated software test tool configured to exercise the run time code paths of the second software patch; and

a manual test process configured to exercise the run time code paths of the second software patch.

16. The computing system of claim 13 wherein the one or more first lists of software code segments are generated by a software source code revision tool.

17. The computing system of claim 13 wherein the second list of software code segments is generated by a run time software code coverage tool.

18. The computing system of claim 13 wherein the changes to the software code segments include one or more of:

a deleted method;

a modified method;

an added method;

a deleted class;

a modified class;

an added class;

a deleted file;

a modified file; and

an added file.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 15, 2021
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: DOORDASH, INC.
Reel/Frame 057826/0939 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2009
From: IZARD, WILLIAM; DE VOS, DAVID; SPANNER, ANDREAS
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 022414/0514 →