IP Library Granted Patent US 12,314,714
Granted Patent B2
US 12,314,714 · App. 18/454,555 · Granted May 27, 2025

Semantic functional wrappers of services

Inventors: Tom L. Button (Medina, WA); Federico Zoufaly (Curridabat, CR)
Assignee: Snowflake Inc.
G06F8/76G06F8/75G06F9/541
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,314,714
App. No.
18/454,555
Granted
May 27, 2025
Kind
B2
Abstract

Functional wrappers are scripts and related software that provide a way to group and invoke functionality comprising semantic intent in a legacy application. These functional wrappers allow programmatic access to functionality in legacy applications in contemporary software architectures without risk of porting errors. Additional functionality to provide features with presently expected, but not available at the time the legacy applications were developed, such as functional wrappers to provide parallelism and scaling, are disclosed. Finally, automatic generation of the functional wrappers are also disclosed.

Claims (43)

1. A system comprising:

a processor; and

a memory communicatively connected to the processor, the memory being configured to store computer-executable instructions that when executed by the processor, causes the processor to perform operations comprising:

analyzing, by a script generation software application, a legacy application to identify user interface elements of the legacy application, the analyzing of the legacy application comprising performing a static analysis, the static analysis comprising parsing source code of the legacy application to identify one or more object instance names of user interface objects for the user interface elements based on one or more user interface identifier class types, the one or more user interface elements enabling navigation to and from one or more forms of the legacy application;

analyzing, by the script generation software application, usage of the legacy application to identify a functionality of the legacy application corresponding to a semantic intent, the semantic intent mapping one or more user interface requirements of a non-legacy application to one or more first functions of the legacy application, the analyzing of the usage of the legacy application comprising performing a dynamic analysis that records usage activity of a running instance of the legacy application using the one or more object instance names and one or more addresses of the user interface objects, wherein one or more second functions of the non-legacy application lack at least one one-to-one correspondence with the one or more first functions of the legacy application;

generating, by the script generation software application, virtual user interface elements that comprise the user interface elements of the legacy application, a set of control interfaces for invoking the user interface elements, and wrappers of the user interface elements for exposing the user interface elements for execution;

generating, by the script generation software application, a software map that maps the user interface elements of the legacy application to the functionality of the legacy application; and

generating, by the script generation software application, one or more scripts based at least on the user interface elements as wrapped by the virtual user interface elements and the functionality of the legacy application.

2. The system of claim 1 , wherein at least one script of the one or more scripts is configured to invoke at least one of the user interface elements by at least one of a journaling hook or an operating system API.

3. The system of claim 1 , wherein the operations comprise receiving, at the script generation software application, a preliminary map data file of potential user interface elements, and wherein the static analysis is based at least on the preliminary map data file.

4. The system of claim 1 , wherein the dynamic analysis comprises:

extracting, by the script generation software application, user interface elements invoked during run time; and

mapping, by the script generation software application, user interface elements identified during static analysis to user interface elements identified during the dynamic analysis.

5. The system of claim 4 , wherein the operations comprise receiving a preliminary software data map, the performing the dynamic analysis comprising performing the dynamic analysis based at least on one or more of setup variables or environmental variables that are included in the preliminary software data map.

6. The system of claim 4 , wherein the operations comprise receiving a preliminary recording setup data file, the performing of the dynamic analysis comprising performing the dynamic analysis based at least on pre-identified sets of functionality corresponding to the semantic intent, the preliminary recording setup data file comprising the semantic intent, the semantic intent being used by the script generation software application to generate a script that corresponds to each semantic intent of the preliminary recording setup data file.

7. The system of claim 6 , wherein the operations comprise deploying the generated scripts by storing, in a repository, at least one generated script, the wrappers of the user interface elements, and the software map.

8. A computer-implemented method comprising:

analyzing, by a script generation software application, a legacy application to identify user interface elements of the legacy application, the analyzing of the legacy application comprising: performing a static analysis, the static analysis comprising parsing source code of the legacy application to identify one or more object instance names of user interface objects for the user interface elements based on one or more user interface identifier class types, the one or more user interface elements enabling navigation to and from one or more forms of the legacy application;

analyzing, by the script generation software application, usage of the legacy application to identify a functionality of the legacy application corresponding to a semantic intent, the semantic intent mapping one or more user interface requirements of a non-legacy application to one or more first functions of the legacy application, the analyzing of the usage of the legacy application comprising performing a dynamic analysis that records usage activity of a running instance of the legacy application using the one or more object instance names and one or more addresses of the user interface objects, wherein one or more second functions of the non-legacy application lack at least one one-to-one correspondence with the one or more first functions of the legacy application;

generating, by the script generation software application, virtual user interface elements that comprise the user interface elements of the legacy application, a set of control interfaces for invoking the user interface elements, and wrappers of the user interface elements for exposing the user interface elements for execution;

generating, by the script generation software application, a software map that maps the user interface elements of the legacy application to the functionality of the legacy application; and

generating, by the script generation software application, one or more scripts based at least on the user interface elements as wrapped by the virtual user interface elements and the functionality of the legacy application.

9. The computer-implemented method of claim 8 , wherein at least one script of the one or more scripts is configured to invoke at least one of the user interface elements by at least one of a journaling hook or an operating system API.

10. The computer-implemented method of claim 8 , comprising receiving, at the script generation software application, a preliminary map data file of potential user interface elements, and wherein the static analysis is based at least on the preliminary map data file.

11. The computer-implemented method of claim 8 , wherein the dynamic analysis comprises:

extracting, by the script generation software application, user interface elements invoked during run time; and

mapping, by the script generation software application, user interface elements identified during static analysis to user interface elements identified during the dynamic analysis.

12. The computer-implemented method of claim 11 , comprising receiving a preliminary software data map, the performing the dynamic analysis comprising performing the dynamic analysis based at least on one or more of setup variables or environmental variables that are included in the preliminary software data map.

13. The computer-implemented method of claim 11 , comprising receiving a preliminary recording setup data file, the performing of the dynamic analysis comprising performing the dynamic analysis based at least on pre-identified sets of functionality corresponding to the semantic intent, the preliminary recording setup data file comprising the semantic intent, the semantic intent being used by the script generation software application to generate a script that corresponds to each semantic intent of the preliminary recording setup data file.

14. The computer-implemented method of claim 13 , comprising deploying the generated scripts by storing, in a repository, at least one generated script, the wrappers of the user interface elements, and the software map.

15. One or more non-transitory computer-readable media storing computer-executable instructions that upon execution cause one or more processors to perform operations comprising:

analyzing, by a script generation software application, a legacy application to identify user interface elements of the legacy application, the analyzing of the legacy application comprising performing a static analysis, the static analysis comprising parsing source code of the legacy application to identify one or more object instance names of user interface objects for the user interface elements based on one or more user interface identifier class types, the one or more user interface elements enabling navigation to and from one or more forms of the legacy application;

analyzing, by the script generation software application, usage of the legacy application to identify a functionality of the legacy application corresponding to a semantic intent, the semantic intent mapping one or more user interface requirements of a non-legacy application to one or more first functions of the legacy application, the analyzing comprising performing a dynamic analysis that records usage activity of a running instance of the legacy application using the one or more object instance names and one or more addresses of the user interface objects, wherein one or more second functions of the non-legacy application lack at least one one-to-one correspondence with the one or more first functions of the legacy application;

generating, by the script generation software application, virtual user interface elements that comprise the user interface elements of the legacy application, a set of control interfaces for invoking the user interface elements, and wrappers of the user interface elements for exposing the user interface elements for execution;

generating, by the script generation software application, a software map that maps the user interface elements of the legacy application to the functionality of the legacy application; and

generating, by the script generation software application, one or more scripts based at least on the user interface elements as wrapped by the virtual user interface elements and the functionality of the legacy application.

16. The one or more non-transitory computer-readable media of claim 15 , wherein at least one script of the one or more scripts is configured to invoke at least one of the user interface elements by at least one of a journaling hook or an operating system API.

17. The one or more non-transitory computer-readable media of claim 15 , wherein the operations comprise receiving, at the script generation software application, a preliminary map data file of potential user interface elements, and wherein the static analysis is based at least on the preliminary map data file.

18. The one or more non-transitory computer-readable media of claim 15 , wherein the operations comprise receiving, at the script generation software application, a preliminary map data file of potential user interface elements, and wherein the static analysis is based at least on the preliminary map data file.

19. The one or more non-transitory computer-readable media of claim 15 , wherein the dynamic analysis comprises:

extracting, by the script generation software application, user interface elements invoked during run time; and

mapping, by the script generation software application, user interface elements identified during static analysis to user interface elements identified during the dynamic analysis.

20. The one or more non-transitory computer-readable media of claim 19 , wherein the operations comprise receiving a preliminary software data map, the performing the dynamic analysis comprising performing the dynamic analysis based at least on one or more of setup variables or environmental variables that are included in the preliminary software data map.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 14, 2024
From: BUTTON, TOM; ZOUFALY, FEDERICO
To: MOBILIZE.NET CORPORATION
Reel/Frame 068284/0780 →
CONFIRMATORY ASSIGNMENT Recorded Aug 14, 2024
From: MOBILIZE.NET CORPORATION
To: SNOWFLAKE INC.
Reel/Frame 068606/0345 →
Continuity (3)
Continuation 17184328 · Feb 24, 2021
Provisional Application 62980982 · Feb 24, 2020
Related Publication 20230401058A1 · Dec 14, 2023
References Cited (34)
US 8381191B2 · Mondal · 2013 [cited by examiner]
US 8910163B1 · Grechishkin · 2014 [cited by examiner]
US 9384101B2 · Calvo · 2016 [cited by examiner]
US 10073761B2 · Kidron · 2018 [cited by examiner]
US 10620990B2 · Bachelor · 2020 [cited by examiner]
US 10705824B2 · Zhao · 2020 [cited by examiner]
US 11789726B2 · Button et al. · 2023 [cited by applicant]
US 20030115572A1 · Zondervan · 2003 [cited by examiner]
US 20040223009A1 · Szladovics · 2004 [cited by examiner]
US 20050193380A1 · Vitanov · 2005 [cited by examiner]
US 20050223392A1 · Cox · 2005 [cited by examiner]
US 20050257196A1 · Hollander · 2005 [cited by examiner]
US 20090319979A1 · Mondal · 2009 [cited by examiner]
US 20100064033A1 · Travostino · 2010 [cited by examiner]
US 20130031462A1 · Calvo · 2013 [cited by examiner]
US 20140215446A1 · Araya · 2014 [cited by examiner]
US 20140337821A1 · Pilot · 2014 [cited by examiner]
US 20150234642A1 · Araya · 2015 [cited by examiner]
US 20160217058A1 · Kidron · 2016 [cited by examiner]
US 20170123863A1 · Erickson · 2017 [cited by examiner]
US 20170139741A1 · Bachelor · 2017 [cited by examiner]
US 20190278639A1 · Colmone · 2019 [cited by examiner]
US 20200241916A1 · Bachelor · 2020 [cited by examiner]
US 20210263736A1 · Button et al. · 2021 [cited by applicant]
“U.S. Appl. No. 17/184,328, Advisory Action mailed Oct. 11, 2022”, 3 pgs. [cited by applicant]
“U.S. Appl. No. 17/184,328, Final Office Action mailed Jun. 8, 2022”, 22 pgs. [cited by applicant]
“U.S. Appl. No. 17/184,328, Non Final Office Action mailed Dec. 7, 2021”, 21 pgs. [cited by applicant]
“U.S. Appl. No. 17/184,328, Non Final Office Action mailed Dec. 14, 2022”, 21 pgs. [cited by applicant]
“U.S. Appl. No. 17/184,328, Notice of Allowance mailed Jun. 23, 2023”, 10 pgs. [cited by applicant]
“U.S. Appl. No. 17/184,328, Response filed Mar. 2, 2022 to Non Final Office Action mailed Dec. 7, 2021”, 18 pgs. [cited by applicant]
“U.S. Appl. No. 17/184,328, Response filed Mar. 30, 2023 to Non Final Office Action mailed Dec. 14, 2022”, 20 pgs. [cited by applicant]
“U.S. Appl. No. 17/184,328, Response filed Aug. 31, 2022 to Final Office Action mailed Jun. 8, 2022”, 18 pgs. [cited by applicant]
“U.S. Appl. No. 16/339,309, 312 Amendment filed Aug. 25, 2023”, 11 pgs. [cited by applicant]
“U.S. Appl. No. 17/184,328, PTO Response to Rule 312 Communication mailed Sep. 12, 2023”, 2 pgs. [cited by applicant]