US 12,020,025 B1
Guided modernization of software applications using application templates
Jiangtao Zhang, Pleasanton, CA (US); Mark Fawaz, Dublin, CA (US); Vivek Chawda, San Jose, CA (US); Sreenaath Vasudevan, Cupertino, CA (US); Ramu Panayappan, Sunnyvale, CA (US); Abdul Jabbar Abdul Rasheed, San Jose, CA (US); Donghao Wei, San Jose, CA (US); Javier Arturo Thiele-Ruiz, Saratoga, CA (US); Kanishk Kaul, Sunnyvale, CA (US); Pranav Prabhakar Firake, San Jose, CA (US); and Emery Jacob Comstock, Sunnyvale, CA (US)
Assigned to Amazon Technologies, Inc., Seattle, WA (US)
Filed by Amazon Technologies, Inc., Seattle, WA (US)
Filed on Sep. 23, 2022, as Appl. No. 17/951,861.
Int. Cl. G06F 9/44 (2018.01); G06F 8/41 (2018.01); G06F 8/76 (2018.01); G06N 20/00 (2019.01)
CPC G06F 8/76 (2013.01) [G06F 8/433 (2013.01); G06N 20/00 (2019.01)] 20 Claims
OG exemplary drawing
 
1. A computer-implemented method comprising:
obtaining, by a software modernization service of a cloud provider network, application artifacts associated with a software application, wherein the application artifacts include at least one of: source code files, bytecode files, or intermediate language files;
generating, based on the application artifacts, a graph-based representation of the software application indicating dependency relationships among a plurality of application components of the application artifacts, wherein the graph-based representation includes:
a plurality of nodes each representing an application component of the plurality of application components, and
a plurality of edges each representing a dependency relationship between two application components of the plurality of application components;
identifying, based on the graph-based representation of the software application, a type of source software application architecture associated with the software application;
receiving input indicating a type of target software application architecture;
identifying, based on the type of source software application architecture and the type of target software application architecture, an application clustering template, wherein the application clustering template includes parameters related to use of a machine learning model or algorithm to identify clusters of nodes from the graph-based representation of the software application, and wherein the parameters include at least one of: a type of machine learning model or algorithm, a feature set, or one or more machine learning hyperparameters;
sending, to a machine learning service of the cloud provider network, a request to cluster nodes from the plurality of nodes of the graph-based representation of the software application, wherein the request includes parameters based on the application clustering template;
obtaining, from the machine learning service, a set of clusters each including two or more nodes from the plurality of nodes; and
providing data used to display a visualization including an indication of the set of clusters, and wherein each cluster represents a portion of the software application recommended for decomposition into a separate software service.