IP Library › Granted Patent US 11,593,096
Granted Patent B1
US 11,593,096 · App. 17/192,431 · Granted Feb 28, 2023

Systems and methods for measuring complexity of applications and components in software development and deployment platforms

Inventors: Bassam Henri Chaptini (Tampa, FL); Vaibhav Rathi (Jersey City, NJ); Gary Hoberman (Syosset, NY)
Assignee: Unqork, Inc.
G06F8/71
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,593,096
App. No.
17/192,431
Granted
Feb 28, 2023
Kind
B1
Abstract

Disclosed are methods, systems, devices, apparatus, media, design structures, platforms, and other implementations, including a method that includes receiving, by a processor-based device, configuration data representative of an initial arrangement of interlinked components forming a data application, and determining based on the configuration data, by the processor-based device, one or more complexity scores indicative of levels of complexities for one or more portions of the initial arrangement of interlinked components forming the data application. The method further includes automatically reconfiguring, by the processor-based device, the initial arrangement of interlinked components based on the computed one or more complexity scores to produce a resultant arrangement of interlinked components forming the data application.

Claims (56)

1. A method comprising: receiving, by a processor-based device, configuration data representative of an initial arrangement of interlinked components forming a data application;

determining based on the configuration data, by the processor-based device, one or more complexity scores indicative of levels of complexities for one or more portions of the initial arrangement of interlinked components forming the data application;

and automatically reconfiguring, by the processor-based device, the initial arrangement of interlinked components based on the determined one or more complexity scores to produce a resultant arrangement of interlinked components forming the data application;

wherein automatically reconfiguring the initial arrangement of interlinked components comprises separating the initial arrangement of interlinked components into multiple modular portions comprising the resultant arrangement of interlinked components, including:

determining cumulative complexity scores for a hierarchical structure of at least a portion of the initial arrangement, where the cumulative complexity scores for each node of the hierarchical structure are equal to sum of cumulative complexity scores of respective child nodes of the each node;

and traversing the hierarchical structure and separating a portion of components comprising a particular node in the traversed hierarchical structure and child nodes of the particular node into a separate component module based, at least in part, on a determination that the cumulative score of the particular node is less than a pre-determined maximum complexity threshold.

2. The method of claim 1 , wherein determining the one or more complexity scores comprises computing cyclomatic complexity scores for the one or more portions of the data application.

3. The method of claim 1 , wherein determining the one or more complexity scores comprises one or more of:

computing component complexity scores for one or more of the interlinked components forming the data application; or

computing a workflow complexity score representative of a workflow complexity defined by the interlinked components.

4. The method of claim 3 , wherein computing the component complexity scores for the one or more of the interlinked components comprises:

determining implementation characteristics for a particular component of the one or more interlinked components; and

deriving a component complexity score for the particular component based on the implementation characteristics for the particular component.

5. The method of claim 4 , wherein deriving the component complexity score for the particular component or the workflow complexity score comprises one or more of:

a) when the particular component is determined to be a decision component, incrementing the component complexity score by one for each cell of a decision table of the decision component,

b) when the particular component is determined to be a calculator component to perform a calculation on two or more inputs to the calculator component, incrementing the component complexity score by one for each IF statement identified in the calculator component,

c) when the particular component is determined to be a data mapper component to map input data to one or more tables managed through the data mapper component, incrementing the component complexity score by one for each row of the data mapper component, and for each IF statement identified in the data mapper component, or

d) when the particular component is determined to be within a workflow process defining background processing involving two or more content components in the data application, incrementing the workflow complexity score by one for each start point identified in the workflow process, and incrementing the workflow complexity score by one for each branch out of a gateway identified in the workflow component.

6. The method of claim 1 , further comprising:

presenting the one or more complexity scores in an output diagram comprising a graphical representation of the data application.

7. The method of claim 6 , wherein presenting the complexity scores comprises:

presenting a workflow diagram illustrating at least a portion of the data application comprising the interlinked components; and

presenting one or more of: individual component complexity scores for the respective interlinked components, or a summary of the complexity scores.

8. The method of claim 1 , wherein automatically reconfiguring the initial arrangement of interlinked components comprises:

automatically reconfiguring the initial arrangement of interlinked components to produce the resultant arrangement with a resultant plurality of portions comprising interlinked components, with the resultant plurality of portions associated with an average resultant complexity that is lower than an average initial complexity for the one or more portions of the initial arrangement of interlinked components.

9. The method of claim 1 , wherein automatically reconfiguring the initial arrangement of interlinked components comprises:

reconfiguring the initial arrangement of interlinked components forming the data application based on a learning engine implementation applied to the configuration data representative of the initial arrangement of the interlinked components forming the data application.

10. The method of claim 1 , further comprising:

upon separating the portion of components into the separate component module, updating a group of cumulative complexity scores that depended on the complexity scores of the components in the component module to decrease the group of cumulative complexity scores by the cumulative score of the particular node; and

continuing traversing a remainder of the hierarchical structure using the updated group of cumulative complexity scores.

11. The method of claim 1 , wherein automatically reconfiguring the initial arrangement of interlinked components comprises:

identifying for at least one of the one or more portions of the initial arrangement of the interlinked components at least one respective equivalent template of interlinked components from a library of pre-determined templates; and

replacing the at least one of the one or more portions of the initial arrangement with the identified at least one respective equivalent template of interlinked components.

12. A system comprising: one or more computing devices comprising one or more processors, and one or more non-transitory storage devices for storing instructions that, when executed by the one or more processors cause the one or more computing devices to:

receive configuration data representative of an initial arrangement of interlinked components forming a data application;

determine based on the configuration data one or more complexity scores indicative of levels of complexities for one or more portions of the initial arrangement of interlinked components forming the data application;

and automatically reconfigure the initial arrangement of interlinked components based on the determined one or more complexity scores to produce a resultant arrangement of interlinked components forming the data application;

wherein the one or more computing devices configured to automatically reconfigure the initial arrangement of interlinked components are configured to separate the initial arrangement of interlinked components into multiple modular portions comprising the resultant arrangement of interlinked components, including to:

determine cumulative complexity scores for a hierarchical structure of at least a portion of the initial arrangement, where the cumulative complexity scores for each node of the hierarchical structure are equal to sum of cumulative complexity scores of respective child nodes of the each node; and

traverse the hierarchical structure and separating a portion of components comprising a particular node in the traversed hierarchical structure and child nodes of the particular node into a separate component module based, at least in part, on a determination that the cumulative score of the particular node is less than a pre-determined maximum complexity threshold.

13. The system of claim 12 , wherein the one or more computing devices configured to determine the one or more complexity scores are configured to compute cyclomatic complexity scores for the one or more portions of the data application.

14. The system of claim 12 , wherein the one or more computing devices configured to determine the one or more complexity scores are configured to perform one or more of:

compute component complexity scores for one or more of the interlinked components forming the data application; or

compute a workflow complexity score representative of a workflow complexity defined by the interlinked components.

15. The system of claim 12 , wherein the one or more computing devices configured to automatically reconfigure the initial arrangement of interlinked components are configured to:

automatically reconfigure the initial arrangement of interlinked components to produce the resultant arrangement with a resultant plurality of portions comprising interlinked components, with the resultant plurality of portions associated with an average resultant complexity that is lower than an average initial complexity for the one or more portions of the initial arrangement of interlinked components.

16. The system of claim 12 , wherein the one or more computing devices configured to automatically reconfigure the initial arrangement of interlinked components are configured to:

identify for at least one of the one or more portions of the initial arrangement of the interlinked components at least one respective equivalent template of interlinked components from a library of pre-determined templates; and

replace the at least one of the one or more portions of the initial arrangement with the identified at least one respective equivalent template of interlinked components.

17. A non-transitory computer readable media programmed with instructions, executable on one or more processors of a computing system, to:

receive configuration data representative of an initial arrangement of interlinked components forming a data application;

determine based on the configuration data one or more complexity scores indicative of levels of complexities for one or more portions of the initial arrangement of interlinked components forming the data application;

and automatically reconfigure the initial arrangement of interlinked components based on the determined one or more complexity scores to produce a resultant arrangement of interlinked components forming the data application;

wherein the instructions to automatically reconfigure the initial arrangement of interlinked components comprise one or more instructions to separate the initial arrangement of interlinked components into multiple modular portions comprising the resultant arrangement of interlinked components, including to:

determine cumulative complexity scores for a hierarchical structure of at least a portion of the initial arrangement, where the cumulative complexity scores for each node of the hierarchical structure are equal to sum of cumulative complexity scores of respective child nodes of the each node;

and traverse the hierarchical structure and separating a portion of components comprising a particular node in the traversed hierarchical structure and child nodes of the particular node into a separate component module based, at least in part, on a determination that the cumulative score of the particular node is less than a pre-determined maximum complexity threshold.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 16, 2022
From: CHAPTINI, BASSAM HENRI; RATHI, VAIBHAV; HOBERMAN, GARY
To: UNQORK, INC.
Reel/Frame 059281/0661 →
Continuity (1)
Provisional Application 62985770 · Mar 5, 2020
Cited By (22)
US 12,197,560 US 12,260,190 US 12,271,849 US 12,314,704 US 12,314,882 US 12,379,835 US 12,423,061 US 12,430,825 US 12,487,811 US 12,572,867 US 12,573,105 US 12,586,268 US 12,625,683 US 12,639,402 US 12,645,759 US 12,694,636 US 12,705,579 US 12,711,464 US 12,717,468 US 12,732,508 US 12,738,365 US 12,743,497