IP Library › Granted Patent US 11,500,618
Granted Patent B2
US 11,500,618 · App. 17/128,611 · Granted Nov 15, 2022

Software library differential identification and automated uplift

Inventors: Michael Patrick Rodgers (Lake Oswego, OR); Satish Chandra Oruganti (Bengaluru, IN); Shreyas Ravindranath (Bangalore, IN); Ganesh Kumar Gupta (Bangalore, IN)
Assignee: Oracle International Corporation
G06F8/36G06F8/71G06F9/541
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 11,500,618
App. No.
17/128,611
Granted
Nov 15, 2022
Kind
B2
Abstract

A library uplift tool may automatically identify changes to elements of an between different versions of a software library interface. The public interfaces of the two versions may be compared to identify changes to datatypes, variable or function names, parameter names, parameter lists, and other elements of the library interface. Locations in application source code using the software library may then be identified and linked with the changes between the library versions. A report or user interface may then display specific locations in the application source code that are affected by the changes to the library versions. For each change, a suggested action may be presented in the interface, and an example of modified source code may be generated. The interface may be interactive such that modified source code may be automatically propagated to source code files for compatibility with the new library version.

Claims (48)

1. A non-transitory computer-readable medium comprising instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising:

accessing a first version of a software library;

accessing a second version of the software library;

identifying elements in an interface of the software library that have changed between the first version of the software library and the second version of the software library;

accessing a source code for an application that uses the first version of the software library;

identifying locations in the source code where the source code uses the elements that have changed; and

generating a report that displays of the locations in the source code where the source code uses the elements that have changed, wherein for each of the locations, the report displays:

the location in the source code, together with a description of a corresponding change in the interface of the software library, and a suggested action to take in the source code to make the source code compatible with the second version of the software library.

2. The non-transitory computer-readable medium of claim 1 , wherein the second version of the software library represents an upgrade or later version of the first version of the software library.

3. The non-transitory computer-readable medium of claim 2 , wherein there are one or more intervening versions of the software library between the first version of the software library and the second version of the software library.

4. The non-transitory computer-readable medium of claim 1 , wherein identifying the elements in the interface of the software library that have changed comprises:

parsing metadata of the second version of the software library to identify deprecated or changed elements of the software library since the first version of the software library.

5. The non-transitory computer-readable medium of claim 1 , wherein the source code for the application comprises managed code, and the operations further comprise:

retrieving the elements in the interface of the software library using a class file disassembler or class reflection.

6. The non-transitory computer-readable medium of claim 1 , wherein the source code for the application comprises unmanaged code, and the operations further comprise:

retrieving the elements in the interface of the software library using an application programming interface (API) to access exported symbols of the software library.

7. The non-transitory computer-readable medium of claim 1 , wherein the source code for the application comprises a scripting language, and the operations further comprise:

retrieving the elements in the interface of the software library by extracting metadata of functions and variables from exported modules from script files.

8. The non-transitory computer-readable medium of claim 1 , wherein identifying the elements in the interface of the software library that have changed comprises:

comparing function signatures or variable declarations in the interface of the first version of the software library and the second version of the software library.

9. Thanks! the non-transitory computer-readable medium of claim 1 , wherein the elements in the interface of the software library that have changed comprise a changed data type of a constant or global variable of the software library.

10. The non-transitory computer-readable medium of claim 1 , wherein the elements in the interface of the software library that have changed comprise a changed return type of a function of the software library.

11. The non-transitory computer-readable medium of claim 1 , wherein the elements in the interface of the software library that have changed comprise a function that is added or removed in the software library.

12. The non-transitory computer-readable medium of claim 1 , wherein the elements in the interface of the software library that have changed comprise an addition, deletion or change to a parameter of a function in the software library.

13. The non-transitory computer-readable medium of claim 1 , wherein the report omits elements in the interface of the software library that have changed that are not present in the source code.

14. The non-transitory computer-readable medium of claim 1 , wherein the report further displays modified source code that has been automatically modified according to the suggested action.

15. The non-transitory computer-readable medium of claim 14 , wherein the report further comprises a control that receives an input indicating that the suggested action should be taken such that the modified source code is written back to the source code.

16. The non-transitory computer-readable medium of claim 14 , wherein the report further comprises a control that receives an input indicating that the suggested action should be taken for multiple instances in the source code such that the modified source code is written back to the source code for the multiple instances.

17. The non-transitory computer-readable medium of claim 1 , wherein the report further comprises a control that receives an input indicating a value that should be provided as a parameter to a function call.

18. The non-transitory computer-readable medium of claim 1 , wherein the report further comprises a control that receives an input of a user selection of a change to the source code from among a plurality of suggested changes.

19. A method of uplifting new versions of software libraries for existing applications, the method comprising:

accessing a first version of a software library;

accessing a second version of the software library;

identifying elements in an interface of the software library that have changed between the first version of the software library and the second version of the software library;

accessing a source code for an application that uses the first version of the software library;

identifying locations in the source code where the source code uses the elements that have changed; and

generating a report that displays of the locations in the source code where the source code uses the elements that have changed, wherein for each of the locations, the report displays:

the location in the source code, together with a description of a corresponding change in the interface of the software library, and a suggested action to take in the source code to make the source code compatible with the second version of the software library.

20. A system comprising:

one or more processors; and

one or more memory devices comprising instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising:

accessing a first version of a software library;

accessing a second version of the software library;

identifying elements in an interface of the software library that have changed between the first version of the software library and the second version of the software library;

accessing a source code for an application that uses the first version of the software library;

identifying locations in the source code where the source code uses the elements that have changed; and

generating a report that displays of the locations in the source code where the source code uses the elements that have changed, wherein for each of the locations, the report displays:

the location in the source code, together with a description of a corresponding change in the interface of the software library, and a suggested action to take in the source code to make the source code compatible with the second version of the software library.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2020
From: RODGERS, MICHAEL PATRICK; ORUGANTI, SATISH CHANDRA; RAVINDRANATH, SHREYAS; GUPTA, GANESH KUMAR
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 054710/0001 →
Continuity (1)
Related Publication 20220197606A1 · Jun 23, 2022
Cited By (1)
US 12,468,512