G06F8/72

MONITORING APPLICATION CODE USAGE FOR IMPROVED IMPLEMENTATION OF REUSABLE CODE

A code tracking system monitors usage of application code executed by one or more computing devices. Characteristics of the usage of the application code are determined. Using the characteristics of the usage of the application code, a modification to an entry of application code executed by the one or more computing devices is detected. The detected modification to the entry of application code is communicated to a code management system. The code management system presents the modification to the entry of the application code to a user of the code management system.

MONITORING APPLICATION CODE USAGE FOR IMPROVED IMPLEMENTATION OF REUSABLE CODE

A code tracking system monitors usage of application code executed by one or more computing devices. Characteristics of the usage of the application code are determined. Using the characteristics of the usage of the application code, a modification to an entry of application code executed by the one or more computing devices is detected. The detected modification to the entry of application code is communicated to a code management system. The code management system presents the modification to the entry of the application code to a user of the code management system.

REUSABLE CODE MANAGEMENT FOR IMPROVED DEPLOYMENT OF APPLICATION CODE

A code repository stores application code. A code management determines, based at least in part on requested features selected in a graphical user interface, code requirements that include attributes of application code needed to achieve the requested features. The code management system determines, based at least in part on the determined code requirements and the metadata for each entry of application code stored in the code repository, one or more candidate application code entries from the code repository. The code management system presents the candidate application code entries for user selection in the graphical user interface. After receipt of a user selection of a selected application code, the selected application code is provided to a computing device associated with the user.

REUSABLE CODE MANAGEMENT FOR IMPROVED DEPLOYMENT OF APPLICATION CODE

A code repository stores application code. A code management determines, based at least in part on requested features selected in a graphical user interface, code requirements that include attributes of application code needed to achieve the requested features. The code management system determines, based at least in part on the determined code requirements and the metadata for each entry of application code stored in the code repository, one or more candidate application code entries from the code repository. The code management system presents the candidate application code entries for user selection in the graphical user interface. After receipt of a user selection of a selected application code, the selected application code is provided to a computing device associated with the user.

Machine learning assisted source code refactoring to mitigate anti-patterns

Techniques are described for enabling the automatic refactoring of software application source code to mitigate identified anti-patterns and other software modernization-related issues. A software modernization system analyzes software applications to generate various types of modernization report information, where the report information can include identifications of various types of design and cloud anti-patterns, proposed decompositions of monolithic applications into subunits, refactoring cost information, recommended modernization tools and migration paths, among other such information. A software modernization system further includes a refactoring engine that can automatically refactor source code based on such application analysis information, e.g., to automatically address identified anti-patterns, restructure code for decomposition, etc. A refactoring engine performs refactoring actions based on refactoring templates, machine learning (ML) refactoring models, or other input.

Machine learning assisted source code refactoring to mitigate anti-patterns

Techniques are described for enabling the automatic refactoring of software application source code to mitigate identified anti-patterns and other software modernization-related issues. A software modernization system analyzes software applications to generate various types of modernization report information, where the report information can include identifications of various types of design and cloud anti-patterns, proposed decompositions of monolithic applications into subunits, refactoring cost information, recommended modernization tools and migration paths, among other such information. A software modernization system further includes a refactoring engine that can automatically refactor source code based on such application analysis information, e.g., to automatically address identified anti-patterns, restructure code for decomposition, etc. A refactoring engine performs refactoring actions based on refactoring templates, machine learning (ML) refactoring models, or other input.

SYSTEM AND METHOD FOR BATCH AND SCHEDULER MIGRATION IN AN APPLICATION ENVIRONMENT MIGRATION

A method of batch and scheduler migration assesses a batch job, scans it's scheduling mechanism and components, ascertains a quantum change for migrating the batch job to a target batch service and forecasts an assessment statistic that provides at least one functional readiness and a timeline to complete the migration of the batch job. The method generates a transformed batch job structure by breaking the batch job according to the target batch service while retaining the scheduling mechanism. Further, it updates containerized batch service components of the target batch service as per the forecasted assessment statistic and the transformed batch job structure, and migrates the batch job to the target batch service by re-platforming the updated containerized batch service components.

Dynamic cloud anti-pattern detection for a modernization assessment service

Techniques are described for enabling an application modernization system to efficiently identify various types of software development “anti-patterns” (including cloud anti-patterns) associated with software applications. An anti-pattern is broadly any characteristic of a software application or system that represents an undesirable or suboptimal solution to a problem within a given software design context. Depending on the particular software design context, examples of possible anti-patterns and cloud anti-patterns can include the use of insecure network protocols, an application's reliance on local file system access, the use of a deprecated or outdated class, function, or library, etc. An application modernization system described herein includes a modernization assessment client application that identifies the presence of anti-patterns in users' software applications using a collection of anti-pattern definitions (e.g., defined based on an anti-pattern definition syntax) obtained from an application modernization service of a cloud provider network.

Usage-based software library decomposition
11550553 · 2023-01-10 · ·

Performing usage-based software library decomposition is disclosed herein. In some examples, a processor device generates a first library graph representing a first software library including multiple functions. The first library graph comprises a plurality of nodes that each correspond to a function of the first software library. The processor device identifies a function within the first software library (“invoked function”) that is directly invoked by an application that depends on the first software library, then generates a call graph including nodes within the first library graph (“dependency nodes”) corresponding to either the invoked function or another function invoked by the invoked function during application execution. Using the call graph, the processor device generates a second software library including only functions of the first software library corresponding to dependency nodes of the call graph.

Usage-based software library decomposition
11550553 · 2023-01-10 · ·

Performing usage-based software library decomposition is disclosed herein. In some examples, a processor device generates a first library graph representing a first software library including multiple functions. The first library graph comprises a plurality of nodes that each correspond to a function of the first software library. The processor device identifies a function within the first software library (“invoked function”) that is directly invoked by an application that depends on the first software library, then generates a call graph including nodes within the first library graph (“dependency nodes”) corresponding to either the invoked function or another function invoked by the invoked function during application execution. Using the call graph, the processor device generates a second software library including only functions of the first software library corresponding to dependency nodes of the call graph.