IP Library › Granted Patent US 12,423,092
Granted Patent B2
US 12,423,092 · App. 18/468,763 · Granted Sep 23, 2025

System and method for classifying software code based on functionality and criticality

Inventors: Sakshi Bakshi (New Delhi, IN); Sudhakar Balu (Chennai, IN); Siva Kumar Paini (Telangana, IN)
Assignee: Bank of America Corporation
G06F8/70G06F8/65
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,423,092
App. No.
18/468,763
Filed
Sep 18, 2023
Granted
Sep 23, 2025
Kind
B2
Art Unit
2168
USPC
717/120
Abstract

A system for classifying software code determines a first function, a first set of operations, and a first criticality level of a first software code. The system determines a second function, a second set of operations, and a second criticality level of the second software code. The system determines that the first function of the first software code corresponds to the second function of the second software code. The system compares the operations of the first software code with the operations of the second software code and determines that the first and second software code have at least one operation in common with each other. The system determines that the first criticality level of the first software code corresponds to the second criticality level of the second software code. In response, the system classifies the first software code and the second software code in a first group.

Claims (163)

1. A system for classifying software code, comprising:

a memory configured to store:

a first log file comprising information about historical executions of a first software code; and

a second log file comprising information about historical executions of a second software code; and

a processor operably coupled to the memory, and configured to:

access the first log file and the second log file;

determine a first function of the first software code from the first log file;

determine a first set of operations performed by the first software code from the first log file;

determine that a first number of the first set of operations is within a first range of values;

determine a first criticality level of the first software code based at least in part upon determining that the first number of the first set of operations is within the first range of values;

determine a second function of the second software code from the second log file;

determine a second set of operations performed by the second software code from the second log file;

determine that a second number of the second set of operations is within the first range of values;

determine a second criticality level of the second software code based at least in part upon determining that the second number of the second set of operations is within the first range of values;

compare each operation from among the first set of operations with a counterpart operation from among the second set of operations;

determine, based at least in part upon the comparison of each operation, that the first software code has at least one operation in common with the second software code based at least in part upon the first set of operations and the second set of operations;

compare the first function of the first software code with the second function of the second software code;

determine, based at least in part upon the comparison of the first function and with the second function, that the first function of the first software code corresponds to the second function of the second software code;

classify the first software code and the second software code in a first group, in response to:

determining that the first software code has at least one operation in common with the second software code;

determining that the first criticality level corresponds to the second criticality level; and

determining that the first function of the first software code corresponds to the second function of the second software code;

receive a request to update one or more software codes associated with the first function; and

in response to receiving the request, execute a first update instruction that causes at least a first portion of the first software code and a second portion of the second software code that are related to the first function to be updated.

2. The system of claim 1 , wherein:

the memory is further configured to store a third log file comprising information about historical executions of a third software code; and

the processor is further configured to:

determine a third function of the third software code from the third log file;

determine a third set of operations performed by the third software code from the third log file;

compare each of the third set of operations with a counterpart operation from among the first set of operations;

determine that the third software code does not have any operation in common with the first software code;

determine that a third number of the third set of operations is within a second range of values;

compare the third function of the third software code with the first function of the first software code;

determine that the third function of the third software code does not correspond to the first function of the first software code; and

classify the third software code in a second group, wherein the second group is different from the first group, in response to:

determining that the third software code does not have any operation in common with the first software code;

determining that the third number of the third set of operations is within the second range of values; and

determining that the third function of the third software code does not correspond to the first software code.

3. The system of claim 2 , wherein the processor is further configured to:

receive a second request to update software codes associated with the third function; and

in response to receiving the second request, execute a second update instruction that causes at least a third portion of the third software code that is related to the third function to be updated.

4. The system of claim 3 , wherein the second update instruction further causes other software codes classified in the second group to be updated.

5. The system of claim 1 , wherein:

in response to determining that the first software code has at least one operation in common with the second software code and that the first function of the first software code corresponds to the second function of the second software code, the processor is further configured to determine that the first software code and the second software code can be updated in parallel; and

the first software code and the second software code are updated in parallel in response to the first update instruction.

6. The system of claim 1 , wherein the processor is further configured to:

execute the at least one operation of the first software code;

determine that the at least one operation of the first software code has failed; and

in response to determining that the at least one operation of the first software code has failed:

restart the first software code; and

re-execute the first update instruction on the first software code.

7. The system of claim 1 , wherein:

the first function of the first software code comprises creating user profiles for a plurality of users on a web page; and

the first set of operations comprises:

for each user from among the plurality of users:

entering a user credential associated with the user into a first text field on a first web page;

filling out a form with user information associated with the user on a second webpage; and

submitting the filled-out form on the second webpage.

8. A method for classifying software code, comprising:

accessing a first log file and a second log file, wherein:

the first log file comprising information about historical executions of a first software code; and

the second log file comprising information about historical executions of a second software code;

determining a first function of the first software code from the first log file;

determining a first set of operations performed by the first software code from the first log file;

determining that a first number of the first set of operations is within a first range of values;

determining a first criticality level of the first software code based at least in part upon determining that the first number of the first set of operations is within the first range of values;

determining a second function of the second software code from the second log file;

determining a second set of operations performed by the second software code from the second log file;

determining that a second number of the second set of operations is within the first range of values;

determining a second criticality level of the second software code based at least in part upon determining that the second number of the second set of operations is within the first range of values;

comparing each operation from among the first set of operations with a counterpart operation from among the second set of operations;

determining, based at least in part upon the comparison of each operation, that the first software code has at least one operation in common with the second software code based at least in part upon the first set of operations and the second set of operations;

comparing the first function of the first software code with the second function of the second software code;

determining, based at least in part upon the comparison of the first function and with the second function, that the first function of the first software code corresponds to the second function of the second software code;

classifying the first software code and the second software code in a first group, in response to:

determining that the first software code has at least one operation in common with the second software code;

determining that the first criticality level corresponds to the second criticality level; and

determining that the first function of the first software code corresponds to the second function of the second software code;

receive a request to update one or more software codes associated with the first function; and

in response to receiving the request, executing a first update instruction that causes at least a first portion of the first software code and a second portion of the second software code that are related to the first function to be updated.

9. The method of claim 8 , further comprising:

storing a third log file comprising information about historical executions of a third software code;

determining a third function of the third software code from the third log file;

determining a third set of operations performed by the third software code from the third log file;

comparing each of the third set of operations with a counterpart operation from among the first set of operations;

determining that the third software code does not have any operation in common with the first software code;

determining that a third number of the third set of operations is within a second range of values;

comparing the third function of the third software code with the first function of the first software code;

determining that the third function of the third software code does not correspond to the first function of the first software code; and

classifying the third software code in a second group, wherein the second group is different from the first group, in response to:

determining that the third software code does not have any operation in common with the first software code;

determining that the third number of the third set of operations is within the second range of values; and

determining that the third function of the third software code does not correspond to the first software code.

10. The method of claim 9 , further comprising:

receiving a second request to update software codes associated with the third function; and

in response to receiving the second request, executing a second update instruction that causes at least a third portion of the third software code that is related to the third function to be updated.

11. The method of claim 10 , wherein the second update instruction further causes other software codes classified in the second group to be updated.

12. The method of claim 8 , wherein:

in response to determining that the first software code has at least one operation in common with the second software code and that the first function of the first software code corresponds to the second function of the second software code, the method further comprises determining that the first software code and the second software code can be updated in parallel; and

the first software code and the second software code are updated in parallel in response to the first update instruction.

13. The method of claim 8 , further comprising:

executing the at least one operation of the first software code;

determining that the at least one operation of the first software code has failed; and

in response to determining that the at least one operation of the first software code has failed:

restarting the first software code; and

re-executing the first update instruction on the first software code.

14. The method of claim 8 , wherein:

the first function of the first software code comprises creating user profiles for a plurality of users on a web page; and

the first set of operations comprises:

for each user from among the plurality of users:

entering a user credential associated with the user into a first text field on a first web page;

filling out a form with user information associated with the user on a second webpage; and

submitting the filled-out form on the second webpage.

15. A non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to:

access a first log file and a second log file, wherein:

the first log file comprising information about historical executions of a first software code; and

the second log file comprising information about historical executions of a second software code;

determine a first function of the first software code from the first log file;

determine a first set of operations performed by the first software code from the first log file;

determine that a first number of the first set of operations is within a first range of values;

determine a first criticality level of the first software code based at least in part upon determining that the first number of the first set of operations is within the first range of values;

determine a second function of the second software code from the second log file;

determine a second set of operations performed by the second software code from the second log file;

determine that a second number of the second set of operations is within the first range of values;

determine a second criticality level of the second software code based at least in part upon determining that the second number of the second set of operations is within the first range of values;

compare each operation from among the first set of operations with a counterpart operation from among the second set of operations;

determine, based at least in part upon the comparison of each operation, that the first software code has at least one operation in common with the second software code based at least in part upon the first set of operations and the second set of operations;

compare the first function of the first software code with the second function of the second software code;

determine, based at least in part upon the comparison of the first function and with the second function, that the first function of the first software code corresponds to the second function of the second software code;

classify the first software code and the second software code in a first group, in response to:

determining that the first software code has at least one operation in common with the second software code;

determining that the first criticality level corresponds to the second criticality level; and

determining that the first function of the first software code corresponds to the second function of the second software code;

receive a request to update one or more software codes associated with the first function; and

in response to receiving the request, execute a first update instruction that causes at least a first portion of the first software code and a second portion of the second software code that are related to the first function to be updated.

16. The non-transitory computer-readable medium of claim 15 , wherein:

a third log file comprising information about historical executions of a third software code is stored in a memory; and

the instructions further cause the processor to:

determine a third function of the third software code from the third log file;

determine a third set of operations performed by the third software code from the third log file;

compare each of the third set of operations with a counterpart operation from among the first set of operations;

determine that the third software code does not have any operation in common with the first software code;

determine that a third number of the third set of operations is within a second range of values;

compare the third function of the third software code with the first function of the first software code;

determine that the third function of the third software code does not correspond to the first function of the first software code; and

in response to:

determining that the third software code does not have any operation in common with the first software code;

determining that the third number of the third set of operations is within the second range of values; and

determining that the third function of the third software code does not correspond to the first software code:

classify the third software code in a second group, wherein the second group is different from the first group.

17. The non-transitory computer-readable medium of claim 16 , wherein the instructions further cause the processor to:

receive a second request to update software codes associated with the third function; and

in response to receiving the second request, execute a second update instruction that causes at least a third portion of the third software code that is related to the third function to be updated.

18. The non-transitory computer-readable medium of claim 17 , wherein the second update instruction further causes other software codes classified in the second group to be updated.

19. The non-transitory computer-readable medium of claim 15 , wherein:

in response to determining that the first software code has at least one operation in common with the second software code and that the first function of the first software code corresponds to the second function of the second software code, the instructions further cause the processor to determine that the first software code and the second software code can be updated in parallel; and

the first software code and the second software code are updated in parallel in response to the first update instruction.

20. The non-transitory computer-readable medium of claim 15 , wherein the instructions further cause the processor to:

execute the at least one operation of the first software code;

determine that the at least one operation of the first software code has failed; and

in response to determining that the at least one operation of the first software code has failed:

restart the first software code; and

re-execute the first update instruction on the first software code.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2023
From: BAKSHI, SAKSHI; BALU, SUDHAKAR; PAINI, SIVA KUMAR
To: BANK OF AMERICA CORPORATION
Reel/Frame 064930/0406 →
Continuity (1)
Related Publication 20250094166A1 · Mar 20, 2025
References Cited (29)
US 7818215B2 · King et al. · 2010 [cited by applicant]
US 8040902B1 · Raghunathan et al. · 2011 [cited by applicant]
US 8180735B2 · Ansari et al. · 2012 [cited by applicant]
US 8316237B1 · Felsher et al. · 2012 [cited by applicant]
US 8341270B2 · Mazzaferri et al. · 2012 [cited by applicant]
US 8429630B2 · Nickolov et al. · 2013 [cited by applicant]
US 8468244B2 · Redlich et al. · 2013 [cited by applicant]
US 8521586B2 · Angles et al. · 2013 [cited by applicant]
US 8566115B2 · Moore · 2013 [cited by applicant]
US 8568356B2 · Lebel et al. · 2013 [cited by applicant]
US 8935275B2 · Rathod · 2015 [cited by applicant]
US 9204374B2 · Raleigh · 2015 [cited by applicant]
US 9240019B2 · Ricci · 2016 [cited by applicant]
US 9571582B2 · Petite et al. · 2017 [cited by applicant]
US 9591010B1 · Muddu et al. · 2017 [cited by applicant]
US 9779126B2 · Tu et al. · 2017 [cited by applicant]
US 9860709B2 · Addepalli et al. · 2018 [cited by applicant]
US 9883309B2 · Samuelsson et al. · 2018 [cited by applicant]
US 10248657B2 · Prahlad et al. · 2019 [cited by applicant]
US 10705948B2 · Ramasamy et al. · 2020 [cited by applicant]
US 10769633B2 · Dua · 2020 [cited by applicant]
US 11586188B2 · Cella et al. · 2023 [cited by applicant]
US 20210186329A1 · Tran · 2021 [cited by applicant]
US 20220229957A1 · Venugopal et al. · 2022 [cited by applicant]
CN 114035820A · 2022 [cited by examiner]
CN 115373709A · 2022 [cited by examiner]
Radoi et al., “Translating Imperative Code to MapReduce”,2014,ACM,OOPSLA '14,pp. 909-927 (Year: 2014). [cited by examiner]
Bakshi et al., U.S. Appl. No. 18/468,768, “System and method for dynamic switching between an old version and a new version of a software code,” filed Sep. 18, 2023. [cited by applicant]
Bakshi et al., U.S. Appl. No. 18/468,775, “System and method for addressing software code update failure,” filed Sep. 18, 2023. [cited by applicant]