IP Library › Granted Patent US 11,455,150
Granted Patent B2
US 11,455,150 · App. 16/911,241 · Granted Sep 27, 2022

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,455,150
App. No.
16/911,241
Granted
Sep 27, 2022
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 (47)

1. A method of improving software code, the method comprising:

recording, by a system comprising a processor, a run of existing code, wherein the existing code makes up at least a portion of an application and is written in a first programming language;

generating, by the system, a behavior model based on the recorded run, wherein generating the behavior model comprises:

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

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

generating, by the system, an architecture depiction of the at least a portion of the application depicting one or more features of the application, wherein generating the architecture depiction comprises generating a high-level view of the existing code by rolling up the one or more code paths;

generating, by the system, new code based at least on the behavior model and a target programming language, wherein the target programming language is distinct from the first programming language;

deploying, by the system, the new code in a target environment; and

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

2. The method of claim 1 , further comprising enabling, by the system, display of a graphical depiction of the behavior model.

3. The method of claim 1 , further comprising

characterizing, by the system, the application based on the behavior model, wherein

characterizing the application based on the behavior model comprises:

characterizing one or more features of the application; and

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

4. The method of claim 1 , wherein generating the behavior model further comprises identifying decision points and code branches between functional areas of the existing code.

5. One or more non-transitory computer-readable storage media having program instructions stored thereon that, when read and executed by a processing system, direct the processing system to at least:

record a run of existing code, wherein the existing code makes up at least a portion of an application and is written in a first programming language;

generate a behavior model based on the recorded run, wherein generating the behavior model comprises:

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

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

generate an architecture depiction of the at least a portion of the application depicting one or more features of the application, wherein generating the architecture depiction comprises generating a high-level view of the existing code by rolling up the one or more code paths;

generate new code based at least on the behavior model and a target environment, wherein the new code is written in a second code language that is distinct from the first programming language;

deploy the new code in a target environment; and

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

6. The one or more non-transitory computer-readable storage media of claim 5 , wherein the program instructions further direct the processing system to enable display of a graphical depiction of the behavior model.

7. The one or more non-transitory computer-readable storage media of claim 5 , wherein the program instructions further direct the processing system to characterize the existing code based on the behavior model, wherein to characterize the existing code based on the behavior model the program instructions direct the processing system to:

characterize one or more features of the application; and

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

8. The one or more non-transitory computer-readable storage media of claim 5 , wherein to generate the behavior model, the program instructions further direct the processing system to identify decision points and code branches between functional areas of the existing code.

9. A computing apparatus comprising:

one or more computer-readable storage media;

a processing system operatively coupled with the one or more computer-readable storage media; and

program instructions stored on the one or more computer-readable storage media that, when executed by the processing system, direct the processing system to at least:

record a run of existing code, wherein the existing code makes up at least a portion of an application and is written in a first programming language;

generate a behavior model based on the recorded run, wherein to generate the behavior model, the program instructions direct the processing system to:

identify one or more functional areas of the existing code; and

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

generate an architecture depiction of the at least a portion of the application depicting one or more features of the application, wherein generating the architecture depiction comprises generating a high-level view of the existing code by rolling up the one or more code paths;

generate new code based at least on the behavior model and a target programming language, wherein the target programming language is distinct from the first programming language;

deploy the new code in a target environment; and

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

10. The computing apparatus of claim 2 , wherein the program instructions further direct the processing system to characterize the application based on the behavior model, wherein characterizing the application based on the behavior model comprises:

characterizing one or more features of the application; and

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

11. Computing apparatus of claim 9 , wherein to generate the behavior model, the program instructions further direct the processing system to identify decision points and code branches between functional areas of the existing code.

12. The computing apparatus of claim 9 , wherein the program instructions further direct the processing system to enable display of the architecture depiction.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 24, 2020
From: GILPIN, KEVIN; LAWLER, ELIZABETH; BYRNE, DUSTIN; WARNER, DANIEL
To: APPLAND INC.
Reel/Frame 053031/0702 →
Continuity (3)
Provisional Application 63029027 · May 22, 2020
Provisional Application 62942638 · Dec 2, 2019
Related Publication 20210165640A1 · Jun 3, 2021