IP Library › Granted Patent US 11,500,628
Granted Patent B1
US 11,500,628 · App. 17/110,685 · Granted Nov 15, 2022

Isolated code detection from application code analysis

Inventors: Vivek Chawda (Palo Alto, CA); Roland Mesde (Cupertino, CA); Sophia Tsang (Newark, CA); Samartha Chandrashekar (Bellevue, WA); Javier Arturo Thiele-Ruiz (Saratoga, CA); Sushil Ravoori (Fremont, CA); Shailaja Yadav (Sunnyvale, CA); Nikhil Kumar Jadhav (San Mateo, CA); Divya Balasubramanian (Hayward, CA)
Assignee: AMAZON TECHNOLOGIES, INC.
G06F8/77G06F8/433G06F8/52
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,628
App. No.
17/110,685
Granted
Nov 15, 2022
Kind
B1
Abstract

Disclosed are various embodiments for isolated code detection from application code analysis. Various application components may be identified from a source code file or a bytecode file of a computing application. A graph model representative of the computing application is generated having nodes and bridges that connect some nodes to other nodes. The graph model is generated such that at least one of the nodes is an isolated node having less than a threshold number of bridges connecting to other nodes, which is indicative that a corresponding one of the application components can be implemented as an independently deployable component of the computing application.

Claims (69)

1. A system, comprising:

a software modernization service stored in memory and executable by at least one computing device that, when executed, directs the at least one computing device to:

identify a plurality of application components from a source code file or a bytecode file of a monolithic computing application, the application components corresponding to one of: a package, a class, a method, and a data object;

determine a plurality of dependency relationships among the application components;

generate a plurality of runtime metrics through execution of an application binary of the monolithic computing application using test data;

generate a graph model representative of the monolithic computing application, the graph model comprising:

a plurality of nodes, individual ones of the nodes corresponding to one of the application components;

a plurality of bridges connecting at least a portion of the nodes to other ones of the nodes based on the dependency relationships, wherein the graph model is generated such that at least one of the nodes is an isolated node having less than a threshold number of bridges connecting to other ones of the nodes; and

the runtime metrics of the test data for a corresponding one of the nodes or the bridges; and

cause a display of at least one user interface comprising a graphical representation of the graph model; and

extract the isolated node from the monolithic computing application into an independently deployable component; and

a program execution service stored in memory and executable by the at least one computing device that, when executed, directs the at least one computing device to execute the independently deployable component on a network-based service such that the independently deployable component is accessible through a network-based application programming interface (API).

2. The system of claim 1 , wherein the graphical representation of the graph model further comprises:

a first indicator proximate to a first one of the bridges identifying that the first one of the bridges is capable of being removed automatically by the software modernization service; and

a second indicator proximate to a second one of the bridges identifying that the second one of the bridges is only capable of being removed manually.

3. The system of claim 1 , wherein the runtime metrics comprise at least one of: a response time when invoking one of the class or the method; a number of times a respective method or class is invoked; a number of static dependencies; a number of runtime dependencies; a number of databases accessed during execution; a number of queries to the databases per unit of time; a frequency of invoking a respective application component; central processing unit (CPU) usage per unit of time; memory usage per unit of time; or bandwidth.

4. The system of claim 1 , the graph model is configured to be manipulated in the at least one user interface; and

the threshold number of bridges is one, two, or three.

5. The system of claim 1 , wherein the runtime metrics are positioned proximate to a corresponding one of the nodes or the bridges in the graphical representation of the graph model.

6. A computer-implemented method, comprising:

identifying a plurality of application components of a computing application;

executing an application binary of the computing application using test data; and

generating a plurality of runtime metrics through execution of the application binary of the computing application using the test data;

generating a graph model representative of the computing application, the graph model comprising a plurality of nodes and a plurality of bridges connecting at least a portion of the nodes to other ones of the nodes, wherein:

individual ones of the nodes correspond to one of the application components;

the graph model is generated such that at least one of the nodes is an isolated node having less than a threshold number of bridges connecting to other ones of the nodes, the isolated node corresponds to one of the plurality of application components that can be implemented as an independently deployable component of the computing application, and

the graph model is generated using the runtime metrics and an analysis of at least one of: a source code file and a bytecode file; and

causing a display of at least one user interface comprising a graphical representation of the graph model, the runtime metrics being positioned proximate to a corresponding one of the nodes or the bridges in the graphical representation of the graph model.

7. The computer-implemented method of claim 6 , wherein generating the graph model representative of the computing application further comprises:

generating a first iteration of the graph model;

determining that the isolated node is not present in the first iteration of the graph model; and

in response to the isolated node not being present in the first iteration of the graph model, applying at least one filter to the graph model to generate a second iteration of the graph model,

wherein the isolated node is present is the second iteration of the graph model.

8. The computer-implemented method of claim 6 , wherein the runtime metrics comprise at least one of: a response time when invoking one of a class or a method; a number of times a respective method or class is invoked; a number of static dependencies; a number of runtime dependencies; a number of databases accessed during execution; a number of queries to the databases per unit of time; a frequency of invoking a respective application component; central processing unit (CPU) usage per unit of time; memory usage per unit of time; or bandwidth.

9. The computer-implemented method of claim 6 , wherein:

the graph model is configured to be manipulated in the at least one user interface; and

the threshold number of bridges is one, two, or three.

10. The computer-implemented method of claim 6 , further comprising:

receiving a selection of two of the nodes in the at least one user interface;

identifying common ones of the application components or a union of the application components that are present in each of the two of the nodes; and

in response to the selection, causing a display of the common ones of the application components or the union of the application components in the at least one user interface.

11. The computer-implemented method of claim 6 , wherein the graphical representation of the graph model further comprises:

a first indicator proximate to a first one of the bridges identifying that the first one of the bridges is capable of being removed automatically by a software modernization service; and

a second indicator proximate to a second one of the bridges identifying that the second one of the bridges is only capable of being removed manually.

12. The computer-implemented method of claim 6 , wherein individual ones of the application components correspond to one of: a package, a class, a method, or a data object.

13. The computer-implemented method of claim 6 , wherein:

the computing application is a monolithic computing application; and

the computer-implemented method further comprises decomposing the monolithic computing application into a plurality of microservices at least partly by programmatically creating a microservice corresponding to the isolated node.

14. The computer-implemented method of claim 6 , further comprising executing the independently deployable component on a network-based service such that the independently deployable component is accessible through a network-based application programming interface (API).

15. A non-transitory computer-readable medium comprising program instructions stored thereon that are executable by at least one computing device that, when executed, direct the at least one computing device to:

identify a plurality of application components from a source code file or a bytecode file of a computing application stored in a memory, wherein individual ones of the application components correspond to one of: a package, a class, a method, and a data object;

execute an application binary of the computing application using test data;

generate a plurality of runtime metrics through execution of the application binary of the computing application using the test data;

generate a graph model representative of the computing application, the graph model comprising a plurality of nodes and a plurality of bridges connecting at least a portion of the nodes to other ones of the nodes, wherein:

the graph model is generated such that at least one of the nodes is an isolated node having less than a threshold number of bridges connecting to other ones of the nodes;

the isolated node corresponds to one of the plurality of application components that can be implemented as an independently deployable component of the computing application; and

the graph model is generated using the runtime metrics; and

cause a display of at least one user interface comprising a graphical representation of the graph model, the runtime metrics are positioned proximate to a corresponding one of the nodes or the bridges in the graphical representation of the graph model.

16. The non-transitory computer-readable medium of claim 15 , wherein the graph model representative of the computing application is generated by:

generating a first iteration of the graph model;

determining that the isolated node is not present in the first iteration of the graph model; and

in response to the isolated node not being present in the first iteration of the graph model, applying at least one filter to the graph model to generate a second iteration of the graph model,

wherein the isolated node is present is the second iteration of the graph model.

17. The non-transitory computer-readable medium of claim 15 , wherein the runtime metrics comprise at least one of: a response time when invoking one of the class or the method; a number of times a respective method or class is invoked; a number of static dependencies; a number of runtime dependencies; a number of databases accessed during execution; a number of queries to the databases per unit of time; a frequency of invoking a respective application component; central processing unit (CPU) usage per unit of time; memory usage per unit of time; or bandwidth.

18. The non-transitory computer-readable medium of claim 15 , wherein the threshold number of bridges is one, two, or three.

19. The non-transitory computer-readable medium of claim 15 , wherein the graphical representation of the graph model further comprises:

a first indicator proximate to a first one of the bridges identifying that the first one of the bridges is capable of being removed automatically by a software modernization service; and

a second indicator proximate to a second one of the bridges identifying that the second one of the bridges is only capable of being removed manually.

20. The non-transitory computer-readable medium of claim 15 , wherein, when executed, the program instructions further direct the at least one computing device to at least execute the independently deployable component on a network-based service such that the independently deployable component is accessible through a network-based application programming interface (API).

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2022
From: CHAWDA, VIVEK; MESDE, ROLAND; TSANG, SOPHIA; CHANDRASHEKAR, SAMARTHA; THIELE-RUIZ, JAVIER ARTURO; RAVOORI, SUSHIL; YADAV, SHAILAJA; JADHAV, NIKHIL KUMAR; BALASUBRAMANIAN, DIVYA
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 060864/0325 →
Cited By (3)
US 12,217,031 US 12,639,172 US 12,710,939