IP Library › Granted Patent US 12,430,146
Granted Patent B2
US 12,430,146 · App. 17/069,487 · Granted Sep 30, 2025

Visualization for splitting an application into modules

Inventors: Srikanth Govindaraj Tamilselvam (Chennai, IN); Amith Singhee (Bangalore, IN); Shivali Agarwal (Ghaziabad, IN); Utkarsh Milind Desai (Bangalore, IN); Raunak Sinha (Noida, IN)
Assignee: International Business Machines Corporation
G06F9/44578G06F8/60G06F9/44505G06F9/451G06F11/302G06F11/324
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 12,430,146
App. No.
17/069,487
Granted
Sep 30, 2025
Kind
B2
Abstract

One embodiment provides a computer implemented computer implemented method, including: receiving information describing an application to be split into a plurality of modules to be hosted on a remote services environment; identifying a plurality of possible sets of modules for splitting the application; providing a visualization of the application split into modules, wherein the visualization displays different possible sets of modules as different layers within the visualization; and splitting, responsive to receiving user input within the visualization selecting one of the different layers, the application into one of the different possible sets of modules based upon the one of the different layers.

Claims (41)

1. A computer implemented method, comprising:

creating a data schema in a common data model from an analysis of an application;

based on the data schema, creating one or more nodes from the application by an unsupervised clustering algorithm, wherein the one or more nodes are portions of the application;

for each of a plurality of defined constraints and splitting techniques, iteratively generating one or more clusters from the one or more nodes, wherein each cluster is a possible set of modules and wherein a constraint includes a resource usage requirement, a runtime requirement, a maximum class or object requirement, a maximum module size;

displaying on a graphical user interface on a display device, a first visualization layer corresponding to a first possible set of modules, accompanied by an input area, wherein the input area accepts at least one checkbox selection, each checkbox selection corresponding to a splitting technique;

iteratively displaying within the graphical user interface on the display device, one or more subsequent visualization layers of the possible set of modules, wherein each subsequently displayed visualization layer overlays a previously displayed visualization layer, leaving each previously displayed visualization layer having a selected checkbox selection visible; and

splitting the application into one of the different possible sets of modules, responsive to receiving user input within the interactive overlay visualization selecting one of the different layers as a final module set for splitting the application.

2. The method of claim 1 , comprising inferring additional information about the application by parsing and analyzing the information describing the application.

3. The method of claim 2 , comprising mapping the information describing the application and the additional information into a data model.

4. The method of claim 1 further comprising, identifying and treating portions of the information as the node and utilizing the unsupervised clustering algorithm on the nodes to identify nodes belonging to a single cluster.

5. The method of claim 1 , wherein the interactive overlay visualization accepts input from a user to display different ones of the different possible sets of modules based upon a desired application perspective.

6. The method of claim 1 , wherein the interactive overlay visualization comprises selections for splitting the application based upon metrics.

7. The method of claim 1 , comprising providing a recommendation of one of the different possible sets of modules based upon requirements provided by a user.

8. The method of claim 7 , wherein the providing a recommendation comprises providing an explanation for the recommendation.

9. The method of claim 1 , comprising re-identifying sets of modules based upon feedback provided by the user regarding the plurality of possible sets of modules.

10. The method of claim 1 , wherein the information comprises at least one of: a source file corresponding to the application and code corresponding to the application.

11. An apparatus, comprising:

at least one processor; and

a computer readable storage medium having computer readable program code embodied therewith and executable by the at least one processor, the computer readable program code comprising:

computer readable program code to create a data schema in a common data model from an analysis of an application;

computer readable program code to, based on the data schema, create one or more nodes from the application by an unsupervised clustering algorithm, wherein the one or more nodes are portions of the application;

computer readable program code to, for each of a plurality of defined constraints and splitting techniques, iteratively generating one or more clusters from the one or more nodes, wherein each cluster is a possible set of modules, and wherein a constraint includes a resource usage requirement, a runtime requirement, a maximum class or object requirement, a maximum module size;

computer readable program code to display on a graphical user interface on a display device, a first visualization layer corresponding to a first possible set of modules, accompanied by an input area, wherein the input area accepts at least one checkbox selection, each checkbox selection corresponding to a splitting technique;

computer readable program code to iteratively display within the graphical user interface on the display device, one or more subsequent visualization layers of the possible set of modules, wherein each subsequently displayed visualization layer overlays a previously displayed visualization layer, leaving each previously displayed visualization layer having a selected checkbox selection visible; and

computer readable program code to split the application into one of the different possible sets of modules, responsive to receiving user input within the interactive overlay visualization selecting one of the different layers as a final module set for splitting the application.

12. A computer program product, comprising:

a non-transitory tangible computer readable storage medium having computer readable program code embodied therewith, the computer readable program code executable by a processor and comprising:

computer readable program code to create a data schema in a common data model from an analysis of an application;

computer readable program code to, based on the data schema, creating one or more nodes from the application by an unsupervised clustering algorithm, wherein the one or more nodes are portions of the application;

computer readable program code to for each of a plurality of defined constraints and splitting techniques, iteratively generate one or more clusters from the one or more nodes, wherein each cluster is a possible set of modules, and wherein a constraint includes a resource usage requirement, a runtime requirement, a maximum class or object requirement, a maximum module size;

computer readable program code to display on a graphical user interface on a display device, a first visualization layer corresponding to a first possible set of modules, accompanied by an input area, wherein the input area accepts at least one checkbox selection, each checkbox selection corresponding to a splitting technique;

computer readable program code to iteratively display within the graphical user interface on the display device, one or more subsequent visualization layers of the possible set of modules, wherein each subsequently displayed visualization layer overlays a previously displayed visualization layer, leaving each previously displayed visualization layer having a selected checkbox selection visible; and

computer code to split the application into one of the different possible sets of modules, responsive to receiving user input within the interactive overlay visualization selecting one of the different layers as a final module set for splitting the application.

13. The computer program product of claim 12 , comprising inferring additional information about the application by parsing and analyzing the information describing the application.

14. The computer program product of claim 13 , comprising mapping the information describing the application and the additional information into a data model.

15. The computer program product of claim 12 , wherein the identifying comprises treating portions of the information as a node and utilizing an unsupervised clustering algorithm on the nodes to identify nodes belonging to a single cluster.

16. The computer program product of claim 12 , wherein the interactive overlay visualization accepts input from a user to display different ones of the different possible sets of modules based upon a desired application perspective.

17. The computer program product of claim 12 , wherein the interactive overlay visualization comprises selections for splitting the application based upon metrics.

18. The computer program product of claim 12 , comprising providing a recommendation of one of the different possible sets of modules based upon requirements provided by a user.

19. The computer program product of claim 18 , wherein the providing a recommendation comprises providing an explanation for the recommendation.

20. The computer program product of claim 12 , comprising re-identifying sets of modules based upon feedback provided by the user regarding the plurality of possible sets of modules.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 13, 2020
From: TAMILSELVAM, SRIKANTH GOVINDARAJ; SINGHEE, AMITH; AGARWAL, SHIVALI; DESAI, UTKARSH MILIND; SINHA, RAUNAK
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 054042/0428 →
Continuity (1)
Related Publication 20220113989A1 · Apr 14, 2022
References Cited (33)
US 10430250B2 · Ishikawa et al. · 2019 [cited by applicant]
US 10579370B2 · Gupta · 2020 [cited by applicant]
US 20020138787A1 · Pal · 2002 [cited by examiner]
US 20050033457A1 · Yamane · 2005 [cited by examiner]
US 20120116561A1 · Nakagawa · 2012 [cited by examiner]
US 20130246528A1 · Ogura · 2013 [cited by examiner]
US 20150304243A1 · Jasperson, Jr. · 2015 [cited by examiner]
US 20170187785A1 · Johnson et al. · 2017 [cited by applicant]
US 20170364434A1 · Kairali · 2017 [cited by examiner]
US 20180069806A1 · Kumar · 2018 [cited by examiner]
US 20190098106A1 · Mungel · 2019 [cited by examiner]
US 20190108067A1 · Ishikawa · 2019 [cited by examiner]
US 20190138280A1 · Ma · 2019 [cited by examiner]
US 20200042315A1 · Gupta · 2020 [cited by examiner]
US 20210021643A1 · Nakagoe · 2021 [cited by examiner]
US 20210157476A1 · Qiu · 2021 [cited by examiner]
US 20210216444A1 · Gefen · 2021 [cited by examiner]
US 20210263735A1 · Harishankar · 2021 [cited by examiner]
WO WO2019209231A2 · 2019 [cited by applicant]
Azure Architecture Center, “Monoliths to microservices using domain-driven design”, Nov. 4, 2019, 7 pages, Microsoft Docs. [cited by applicant]
Jan Stenberg, “Strategies for Decomposing a System into Microservices”, Jun. 21, 2018, 3 pages, available at: https://www.infoq.com/news/2018/06/decomposing-system-microservices/. [cited by applicant]
Remus Pereni, “From monoliths to micro services using DDD and Mikado”, Accessed on Jun. 25, 2020, 7 pages, available at: https://www.todaysoftmag.com/article/2242/from-monoliths-to-micro-services-using-ddd-and-mikado. [cited by applicant]
Holger Knoche et al., “Using Microservices for Legacy Software Modernization”, 2018, 6 pages, IEEE Computer Society. [cited by applicant]
Genc Mazlami et al., “Extraction of Microservices from Monolithic Software Architectures”, IEEE 24th International Conference on Web Services, 2017, 8 pages, IEEE Digital Library. [cited by applicant]
Adambarage Anuruddha Chathuranga De Alwis et al., “Function-Splitting Heuristics for Discovery of Microservices in Enterprise Systems”, Sep. 2018, 15 pages. [cited by applicant]
Jonas Fritzsch et al., “From Monolith to Microservices: A Classification of Refactoring Approaches”, Software Engineering Aspects of Continuous Development and New Paradigms of Software Production and Deployment First I… [cited by applicant]
Holger Harms et al., “Guidelines for Adopting Frontend Architectures and Patterns in Microservices-Based Systems”, ESEC/FSE '17, Sep. 4-8, 2017, Paderborn, Germany, 6 pages, ACM Digital Library. [cited by applicant]
Mohammad Javad Amiri, “Object-aware Identification of Microservices”, 2018 IEEE International Conference on Services Computing, 4 pages, IEEE Computer Society. [cited by applicant]
Zhongshan Ren et al., “Migrating Web Applications from Monolithic Structure to Microservices Architecture”, Internetware '18, Sep. 16, 2018, Beijing, China, 10 pages, ACM Digital Library. [cited by applicant]
Wuxia Jin et al., “Functionality-oriented Microservice Extraction Based on Execution Trace Clustering”, 2018 IEEE International Conference on Web Services, 8 pages, IEEE Computer Society. [cited by applicant]
Luis Nunes et al., “From a Monolith to a Microservices Architecture: An Approach Based on Transactional Contexts”, European Conference on Software Architecture, 2019, /// pages, SpringerLink. [cited by applicant]
Luciano Baresi et al., “Microservices Identification Through Interface Analysis”, European Conference on Service-Oriented and Cloud Computing, Sep. 2017, 16 pages, ResearchGate. [cited by applicant]
Hulya Vural et al., “A Case Study on Measuring the Size of Microservices”, Jul. 2018, 11 pages, ResearchGate. [cited by applicant]