IP Library Granted Patent US 11,269,605
Granted Patent B1
US 11,269,605 · App. 16/682,706 · Granted Mar 8, 2022

Programming language conversion

Inventors: Prasanth Nandanuru (Seriligampally, IN); Andrew J. Garner, IV (State Road, NC); Kory Bunya (Foster City, CA); Eduardo Dela Torre (Oakland, CA); Dennis Montenegro (Concord, GA); Yevanna M. Yejjala (East Godavari Dist., IN); Dinakar Channakal Krishnappa (Yelahanka, IN); Chinababu Kona (West Godavari, IN); Sai Krishna Verma Sundaragiri (Warangal, IN); Priyanka Amara (Hyderabad, IN); Shiju Thukalankuzhy John (Hyderabad, IN)
Assignee: Wells Fargo Bank, N.A.
G06F8/51G06F8/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,269,605
App. No.
16/682,706
Granted
Mar 8, 2022
Kind
B1
Abstract

An application can be converted to new programming language or framework. A source application written for a legacy framework is analyzed and divided into smaller segments of code. The smaller segments are evaluated for quality in view of best practices design for writing applications. A rubric is determined for each segment and compared to a best practice threshold. Segments can be evaluated for features that can be passed through a model. The model converts the features into new code adapted for target framework. Machine learning and rules databases are updated with details of the conversion.

Claims (34)

1. A method, comprising:

executing, on a processor, instructions that cause the processor to perform operations comprising:

dividing source code into clusters of smaller code modules that include part of the source code, wherein the source code is specified in a manner that supports interaction with a first programming framework;

extracting features from the clusters;

computing a conversion score for the clusters based on the features, wherein the conversion score represents ease of conversion of source code of each cluster as a comparison of sensitivity and specificity of each cluster; and

determining whether the clusters are candidates for automatic conversion based on comparison of the conversion score to a predetermined threshold.

2. The method of claim 1 , the operations further comprising converting one or more of the clusters into a form that supports interaction with a second programming framework when the conversion score assigned to the one or more of the clusters is above the predetermined threshold.

3. The method of claim 1 , the operations further comprising flagging one or more of the clusters for modeling when the conversion score is at or below the predetermined threshold.

4. The method of claim 1 , the operations further comprising flagging one or more of the clusters for manual conversion, when the conversion score is at or below the predetermined threshold.

5. The method of claim 1 , wherein dividing the source code comprises parsing the source code with k-means clustering to coarse logical clusters.

6. The method of claim 5 , wherein dividing the source code further comprises applying hierarchical divisive clustering to each coarse logical cluster to create fine grained micro clusters.

7. The method of claim 1 , the operations further comprising building a model that maps clusters in the first programming framework to corresponding clusters in a second programming framework.

8. The method of claim 1 , the operations further comprising computing the conversion score by dividing a measure of sensitivity by a measure of specificity.

9. The method of claim 1 , the operations further comprising generating a report including the conversion score for each of the clusters.

10. A system, comprising:

a processor coupled to a memory storing instructions that when executed by the processor cause the processor to:

divide source code into clusters of smaller code modules that include part of the source code, wherein the source code is specified in a manner that supports interaction with a first programming framework;

extract features from the clusters;

compute a conversion score for the clusters based on the features, wherein the conversion score represents ease of conversion of source code of each cluster as a comparison of sensitivity and specificity of each cluster; and

identify clusters for automatic conversion based on comparison of the conversion score to a predetermined threshold.

11. The system of claim 10 , wherein the instructions further cause the processor to convert one or more of the clusters into a form that supports interaction with a second programming framework when the conversion score assigned to the one or more of the clusters is above the predetermined threshold.

12. The system of claim 10 , wherein the instructions further cause the processor to flag one or more of the clusters for modeling when the conversion score is at or below the predetermined threshold.

13. The system of claim 10 , wherein the instructions further cause the processor to flag one or more of the clusters for manual conversion, when the conversion score is at or below the predetermined threshold.

14. The system of claim 10 , wherein the instructions further cause the processor to parse the source code with k-means clustering to coarse logical clusters.

15. The system of claim 14 , wherein the instructions further cause the processor to apply hierarchical divisive clustering to each coarse logical cluster to create fine grained micro clusters.

16. The system of claim 10 , wherein the instructions further cause the processor to construct a model that maps clusters in the first programming framework to corresponding clusters in a second programming framework.

17. The system of claim 10 , wherein the instructions further cause the processor to generate a report including the conversion score for the clusters.

18. A computer-readable storage medium having instructions stored thereon that enable at least one processor to perform operations upon execution of the instructions, the operations comprising:

dividing source code into clusters of smaller code modules that include part of the source code, wherein the source code is specified in a manner that supports interaction with a first programming framework;

extracting features from the clusters;

computing a conversion score for the clusters based on the features, wherein the conversion score represents ease of conversion of source code of each cluster as a comparison of sensitivity and specific of each cluster; and

identifying one or more of the clusters for automatic conversion based on comparison of the conversion score to a predetermined threshold.

19. The computer-readable storage medium of claim 18 , the operations further comprising converting one or more of the clusters into a form that supports interaction with a second programming framework when the conversion score assigned to the one or more of the clusters is above the predetermined threshold.

20. The computer-readable storage medium of claim 18 , the operations further comprising flagging one or more of the clusters for modeling when the conversion score is at or below the predetermined threshold.

Assignments (2)
ADDRESS CHANGE Recorded Jun 2, 2025
From: WELLS FARGO BANK, N.A.
To: WELLS FARGO BANK, N.A.
Reel/Frame 071769/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 13, 2019
From: NANDANURU, PRASANTH; GARNER, ANDREW J., IV; DELA TORRE, EDUARDO; MONTENEGRO, DENNIS; YEJJALA, YEVANNA M.; KRISHNAPPA, DINAKAR CHANNAKAL; KONA, CHINABABU; SUNDARAGIRI, SAI KRISHNA VERMA; AMARA, PRIYANKA; JOHN, SHIJU THUKALANKUZHY
To: WELLS FARGO BANK, N.A.
Reel/Frame 050999/0331 →
Continuity (3)
Continuation 15968193 · May 1, 2018
Continuation 15015797 · Feb 4, 2016
Provisional Application 62271796 · Dec 28, 2015
Cited By (2)
US 12,579,050 US 12,717,562