IP Library › Granted Patent US 11,893,364
Granted Patent B2
US 11,893,364 · App. 17/891,410 · Granted Feb 6, 2024

Accelerating application modernization

Inventors: Kevin Gilpin (Weston, MA); Elizabeth Lawler (Weston, MA); Dustin Byrne (Haverhill, MA); Daniel Warner (Stow, MA)
Assignee: AppLand Inc.
G06F8/35G06F8/34G06F8/433G06F8/447G06F8/453G06F8/60G06F11/3684
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,893,364
App. No.
17/891,410
Granted
Feb 6, 2024
Kind
B2
Abstract

Various embodiments of the present technology generally relate to the characterization and improvement of software applications. More specifically, some embodiments relate to systems and methods for modeling code behavior and generating new versions of the code based on the code behavior models. In some embodiments, a method of improving a codebase includes recording a run of the existing code, characterizing the code behavior via one or more models, prototyping new code according to a target language and target environment, deploying the new code to the target environment, and comparing the behavior of the new code to the behavior of the existing code. In some implementations, generating new code based on the behavior models includes using one or more machine learning techniques for code generation based on the target language and environment.

Claims (81)

1. A computer-implemented method of updating software code, the method comprising:

recording a run of existing code written in a first programming language;

interrogating the recording to generate a behavior model of the run, wherein the behavior model represents a behavior of the existing code, and wherein interrogating the recording comprises:

identifying and labeling one or more functional areas of the existing code,

identifying decision points and code branches between functional areas of the existing code, and

identifying one or more code paths connecting steps performed by the existing code;

providing the behavior model and a target programming language as input to an artificial intelligence algorithm trained to generate new code based on the input, wherein:

the new code, when executed, mimics the behavior of the existing code,

the new code is written in the target programming language, and

the target programming language is a different programming language than the first programming language;

receiving, as output from the artificial intelligence algorithm, the new code; and

deploying the new code to a target environment.

2. The computer-implemented method of claim 1 , further comprising:

generating a graphical depiction of the behavior model.

3. The computer-implemented method of claim 1 , further comprising:

generating an architecture depiction of the existing code, wherein the architecture depiction depicts one or more features of the existing code.

4. The computer-implemented method of claim 3 , wherein generating the architecture depiction further comprises generating a high-level view of the existing code by rolling up the one or more code paths.

5. The computer-implemented method of claim 1 , further comprising:

characterizing the existing code based on the behavior model, wherein characterizing the existing code based on the behavior model comprises:

characterizing one or more features of the existing code; and

characterizing one or more of dependencies, logic, and data queries.

6. The computer-implemented method of claim 1 , further comprising:

recording a run of the new code;

interrogating the recording of the run of the new code to generate a second behavior model of the run of the new code; and

generating a graphical depiction of the behavior model and the second behavior model.

7. The computer-implemented method of claim 1 , further comprising:

comparing behavior of the new code to one or more of the behavior of the existing code, predicted behavior of the new code, and desired behavior of the new code.

8. The computer-implemented method of claim 1 , further comprising:

recording a run of a second version of the existing code;

interrogating the recording of the run of the second version to generate a second behavior model; and

generating a graphical depiction of the behavior model and the second behavior model.

9. A system comprising:

one or more processors; and

a memory having program instructions stored thereon that, upon execution by the one or more processors, cause the one or more processors to:

record a run of existing code written in a first programming language,

interrogate the recording to generate a behavior model of the run, wherein the behavior model represents a behavior of the existing code, and wherein interrogating the recording comprises:

identifying and labeling one or more functional areas of the existing code;

identifying decision points and code branches between functional areas of the existing code; and

identifying one or more code paths connecting steps performed by the existing code,

provide the behavior model and a target programming language as input to an artificial intelligence algorithm trained to generate new code based on the input, wherein:

the new code, when executed, mimics the behavior of the existing code;

the new code is written in the target programming language; and

the target programming language is a different programming language than the first programming language,

receive, as output from the artificial intelligence algorithm, the new code, and

deploy the new code to a target environment.

10. The system of claim 9 , wherein the memory comprises further program instructions that, upon execution by the one or more processors, cause the one or more processors to:

generate a graphical depiction of the behavior model.

11. The system of claim 9 , wherein the memory comprises further program instructions that, upon execution by the one or more processors, cause the one or more processors to:

generate an architecture depiction of the existing code, wherein the architecture depiction depicts one or more features of the existing code.

12. The system of claim 11 , wherein the program instructions to generate the architecture depiction comprise further program instructions that, upon execution by the one or more processors, cause the one or more processors to:

generate a high-level view of the existing code by rolling up the one or more code paths.

13. The system of claim 9 , wherein the memory comprises further program instructions that, upon execution by the one or more processors, cause the one or more processors to:

characterize one or more features of the existing code; and

characterize one or more of dependencies, logic, and data queries.

14. The system of claim 9 , wherein the memory comprises further program instructions that, upon execution by the one or more processors, cause the one or more processors to:

record a run of the new code;

interrogate the recording of the run of the new code to generate a second behavior model of the run of the new code; and

generate a graphical depiction of the behavior model and the second behavior model.

15. The system of claim 9 , wherein the memory comprises further program instructions that, upon execution by the one or more processors, cause the one or more processors to:

compare behavior of the new code to one or more of the behavior of the existing code, predicted behavior of the new code, and desired behavior of the new code.

16. The system of claim 9 , wherein the program instructions to generate the behavior model comprise further program instructions that, upon execution by the one or more processors, cause the one or more processors to:

record a run of a second version of the existing code;

interrogate the recording of the run of the second version to generate a second behavior model; and

generate a graphical depiction of the behavior model and the second behavior model.

17. A computer-readable storage device having stored thereon instructions that, upon execution by one or more processors, cause the one or more processors to:

record a run of existing code written in a first programming language;

interrogate the recording to generate a behavior model of the run, wherein the behavior model represents a behavior of the existing code, and wherein interrogating the recording comprises:

identifying one or more functional areas of the existing code,

identifying decision points and code branches between functional areas of the existing code, and

identifying one or more code paths connecting steps performed by the existing code;

provide the behavior model and a target programming language as input to an artificial intelligence algorithm trained to generate new code based on the input, wherein:

the new code, when executed, mimics the behavior of the existing code,

the new code is written in the target programming language, and

the target programming language is a different programming language than the first programming language; and

deploy the new code to a target environment.

18. The computer-readable storage device of claim 17 , having stored thereon further instructions that, upon execution by the one or more processors, cause the one or more processors to:

generate a graphical depiction of the behavior model.

19. The computer-readable storage device of claim 17 , having stored thereon further instructions that, upon execution by the one or more processors, cause the one or more processors to:

generate an architecture depiction of the existing code, wherein the architecture depiction depicts one or more features of the existing code.

20. The computer-readable storage device of claim 19 , wherein the instructions to generate the architecture depiction comprise further instructions that, upon execution by the one or more processors, cause the one or more processors to:

generate a high-level view of the existing code by rolling up the one or more code paths.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2023
From: GILPIN, KEVIN; LAWLER, ELIZABETH; BYRNE, DUSTIN; WARNER, DAN
To: APPLAND INC.
Reel/Frame 065928/0348 →
Continuity (4)
Continuation 16911241 · Jun 24, 2020
Provisional Application 63029027 · May 22, 2020
Provisional Application 62942638 · Dec 2, 2019
Related Publication 20220391179A1 · Dec 8, 2022
Cited By (1)
US 12,423,066