IP Library Granted Patent US 12,632,229
Granted Patent B2
US 12,632,229 · App. 18/552,822 · Granted May 19, 2026

Creation and automatic updating of a software application

Inventors: Frank Wille (Enschede, NL); Wim Minnen (Enschede, NL); Erik-Jan Krijgsman (Enschede, NL)
Assignee: NOVULO R&D B.V.
G06F8/35G06F8/41G06F8/65G06F8/71
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,632,229
App. No.
18/552,822
Granted
May 19, 2026
Kind
B2
Abstract

A system for creating and/or updating a software application, based on a plurality of software components specified in an application specification, and associated with a database, is configured to: select a data element referred to by a software component, the data element being stored in a catalogue and associated with a unique identifier, the data element not being implemented by the software component; search, based on the identifier, for a further software component in the subset which implements the data element; determine a database element associated with the data element identifiable by the identifier; generate software for the software application from the application specification, the generation comprising linking, based on the identifier, the reference to the data element in the software component to the implementation of the data element by the further software component; and generate database commands to create the database based on at least the determined database elements.

Claims (63)

1 . A system for creating a software application for storing and manipulating data in a database, said software application being based on a subset of a collection of software components, said software application being associated with an application specification defining said subset, said system comprising at least one processor configured to:

select a data element referred to by a software component in said subset of software components, said software component comprising a reference referring to said data element, said data element being stored in a catalogue and associated with a unique identifier, said data element not being implemented by said software component;

search, based on the unique identifier, for a further software component in said subset which implements said data element;

determine a database element, said database element being associated with said data element and said database element being identifiable by said unique identifier;

generate software for said software application from said application specification, the generation comprising linking, based on said unique identifier, the reference to said data element in said software component to the implementation of said data element by said further software component; and

generate database commands to create the database based on at least said determined database element.

2 . The system as claimed in claim 1 , wherein said at least one processor is configured to:

determine that a new version of said further software component is available, said new version of said further software component comprising a new implementation of said data element;

generate a new version of said software, the generation comprising linking, based on said unique identifier, the reference to said data element in said software component to the new implementation of said data element by said new version of said further software component;

determine changes to said database element between said implementation of said data element and said new implementation of said data element; and

generate database commands to update the database based on at least said changes.

3 . The system as claimed in claim 2 , wherein a software component in an application specification is associated with a version identifier and wherein determining database commands comprises searching for predetermined data conversion commands based on the version identifier of said further software component in said application specification and the version identifier of said new version of said further software component.

4 . The system as claimed in claim 1 , wherein said at least one processor is configured to:

receive one or more functionality criteria specifying required functionality of the software application; and

create and/or update the application specification such that the functionality criteria are met by the software application using a minimal number of software components and/or a minimal number of data elements.

5 . The system as claimed in claim 1 , wherein said at least one processor is configured to:

produce an error if said further software component is not found in said subset.

6 . The system as claimed in claim 1 , wherein the software application is associated with configuration information, said configuration information comprising the reference to said data element, the reference comprising said unique identifier.

7 . The system as claimed in claim 2 , wherein the software application is associated with configuration information, said configuration information comprising the reference to said data element, the reference comprising said unique identifier; and said at least one processor is configured to:

update the configuration information based on said new implementation of said data element and based on said unique identifier.

8 . The system as claimed in claim 6 , wherein the generating database commands comprises generating database commands based on said configuration information and based on said unique identifier.

9 . The system as claimed in claim 1 , wherein said at least one processor is configured to:

search for said further software component in a plurality of application specifications, each application specification being associated with a software application; and

select said software application if the application specification associated with said software application comprises said further software component.

10 . The system as claimed in claim 1 ,

wherein generating software comprises generating software code and wherein said at least one processor is configured to:

compile said software application based on said software code; and, wherein, generating software comprises generating a runnable model and wherein said at least one processor is configured to:

interpret and execute said runnable model during runtime.

11 . The system as claimed in claim 1 , wherein said at least one processor is configured to:

create or update the database based on the generated database commands.

12 . The system as claimed in claim 1 , wherein said at least one processor is configured to:

create or update a user interface element of a user interface associated with said software application, said user interface element being associated with said implementation of said data element, said user interface element being associated with said unique identifier.

13 . The system as claimed in claim 1 , wherein said at least one processor is configured to:

determine that said software component comprises a reference to a process definition stored in said catalogue, said process definition not being implemented by said software component, said process definition being associated with a further unique identifier;

determine, based on said further unique identifier, whether a further software component in said collection of software components implements said process definition; and,

if said further software component implements said process definition, generate software for said software application, the generation comprising linking, based on said further unique identifier, the reference to said process definition in said software component to the implementation of said process definition by said further software component; or

if no further software component implements said process definition, perform one of the following actions: generating an error message, or generating software for said software application, the generation comprising determining a default return value for the reference to said process definition.

14 . The system as claimed in claim 1 , wherein said at least one processor is configured to:

determine that the software components in the subset of software components comprise multiple instances of a plug-in;

select one instance of the plug-in; and

replace references to instances that have not been selected with a reference to the selected one instance.

15 . The system as claimed in claim 1 , wherein generating software comprises generating software code and wherein said at least one processor is configured to:

compile said software application based on said software code.

16 . The system as claimed in claim 1 , wherein, generating software comprises generating a runnable model and wherein said at least one processor is configured to:

interpret and execute said runnable model during runtime.

17 . The system as claimed in claim 2 , wherein said at least one processor is configured to:

determine that said software component comprises a reference to a process definition stored in said catalogue, said process definition not being implemented by said software component, said process definition being associated with a further unique identifier;

determine, based on said further unique identifier, whether a further software component in said collection of software components implements said process definition; and,

if said further software component implements said process definition, generate software for said new version of said software application, the generation comprising linking, based on said further unique identifier, the reference to said process definition in said software component to the implementation of said process definition by said further software component; or

if no further software component implements said process definition, perform one of the following actions: generating an error message, or generating software for said new version of said software application, the generation comprising determining a default return value for the reference to said process definition.

18 . The system as claimed in claim 14 , wherein said one instance of the plug-in has a highest version number among the multiple instances.

19 . A computer-implemented method of creating a software application for storing and manipulating data in a database, said software application being based on a subset of a collection of software components, said software application being associated with an application specification defining said subset, said method comprising:

selecting, by at least one processor, a data element referred to by a software component in said subset of software components, said software component comprising a reference referring to said data element, said data element being stored in a catalogue and associated with a unique identifier, said data element not being implemented by said software component;

searching, by said at least one processor, based on the unique identifier, for a further software component in said subset which implements said data element;

determining, by said at least one processor, a database element, said database element being associated with said data element and said database element being identifiable by said unique identifier;

generating, by said at least one processor, software for said software application from said application specification, the generation comprising linking, based on said unique identifier, the reference to said data element in said software component to the implementation of said data element by said further software component; and

generating, by said at least one processor, database commands to create the database based on at least said determined database element.

20 . A non-transitory computer-readable medium storing instructions which, when executed on a computer system, cause the computer system to create a software application for storing and manipulating data in a database, said software application being based on a subset of a collection of software components, said software application being associated with an application specification defining said subset, the creation of said software application comprising:

selecting a data element referred to by a software component in said subset of software components, said software component comprising a reference referring to said data element, said data element being stored in a catalogue and associated with a unique identifier, said data element not being implemented by said software component;

searching, based on the unique identifier, for a further software component in said subset which implements said data element;

determining a database element, said database element being associated with said data element and said database element being identifiable by said unique identifier;

generating software for said software application from said application specification, the generation comprising linking, based on said unique identifier, the reference to said data element in said software component to the implementation of said data element by said further software component; and

generating database commands to create the database based on at least said determined database element.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 10, 2023
From: WILLE, FRANK; MINNEN, WIM; KRIJGSMAN, ERIK-JAN
To: NOVULO R&D B.V.
Reel/Frame 065529/0056 →
Priority Claims (1)
NL 2027852 · Mar 29, 2021 · national
Continuity (1)
Related Publication 20240168727A1 · May 23, 2024
References Cited (32)
US 7062753B1 · Ward et al. · 2006 [cited by applicant]
US 7536679B1 · O'Connell et al. · 2009 [cited by applicant]
US 8239855B2 · Wetherell et al. · 2012 [cited by applicant]
US 8584086B2 · Yoshimura · 2013 [cited by examiner]
US 9727623B1 · Catania · 2017 [cited by examiner]
US 10613970B1 · Jammula · 2020 [cited by examiner]
US 20040254951A1 · Bloesch · 2004 [cited by examiner]
US 20080115116A1 · Francis et al. · 2008 [cited by applicant]
US 20130263090A1 · Polk et al. · 2013 [cited by applicant]
US 20140109082A1 · Kimmet · 2014 [cited by examiner]
US 20150169302A1 · DeAnna · 2015 [cited by examiner]
US 20160098256A1 · Tehrani · 2016 [cited by examiner]
US 20160321064A1 · Sankaranarasimhan · 2016 [cited by examiner]
US 20180203674A1 · Dayanandan · 2018 [cited by examiner]
US 20180293085A1 · Li · 2018 [cited by examiner]
US 20190042233A1 · Majumdar et al. · 2019 [cited by applicant]
US 20200183683A1 · Majumdar et al. · 2020 [cited by applicant]
US 20210089436A1 · Gangina · 2021 [cited by applicant]
US 20220103427A1 · Mallipudi · 2022 [cited by examiner]
US 20230168866A1 · Balassiano · 2023 [cited by examiner]
US 20240160558A1 · Wille et al. · 2024 [cited by applicant]
WO 2022211618A1 · 2022 [cited by applicant]
“Apex Developer Guide”, Sep. 3, 2020, 3615 pages, Retrieved from https://resources.docs.salesforce.com/226/latesVen-us/sfdc/pdf/salesforce_apex_language_reference.pdf. [cited by applicant]
“Salesforce DX Developer Guide”, Aug. 27, 2020, 233 pages, Retrieved from: https://resources.docs.salesforce.com/226/latesVen-us/sfdc/pdf /sfdx dev. pdf. [cited by applicant]
“Visualforce Developer Guide”, Aug. 20, 2020, 815 pages, Retrieved from: https://resources.docs.salesforce.com/226/latesVen-us/sfdc/pdf/salesforce_pages_developers_guide.pdf. [cited by applicant]
Chacon, S. and Straub, B., “Pro Git”, The Expert's Voice, Second Edition, Jul. 21, 2020, 527 pages, Retrieved from: http://web.archive.org/web/20200801073140/https://gitscm.com/book/en/v2. [cited by applicant]
Winkelmeyer, R., “Working with Modular Development and Unlocked Packages: Part 4”, Jun. 26, 2018, 6 pages, Retrieved from https://developer.salesforce.com/blogs/2018/06/working-withmodular-development-and-unlocked-packa… [cited by applicant]
Zayne, T., “Working with Modular Development and Unlocked Packages: Part 1”, Jun. 5, 2018, 6 pages, Retrieved from: https://developer.salesforce.com/blogs/2018/06/working-withmodular-development-and-unlocked-packages-pa… [cited by applicant]
Zayne, T., “Working with Modular Development and Unlocked Packages: Part 2”, Jun. 12, 2018, 9 pages, Retrieved from: https://developer.salesforce.com/blogs/2018/06/working-withmodular-development-and-u n locked-packages… [cited by applicant]
Zayne, T., “Working with Modular Development and Unlocked Packages: Part 3”, Jun. 19, 2018, 7 pages, Retrieved from: https://developer.salesforce.com/blogs/2018/06/working-withmodular-development-and-unlocked-packages-p… [cited by applicant]
Office Action in corresponding European patent application serial No. 22713093.7 dated May 8, 2025. [cited by applicant]
International Search Report and Written Opinion in corresponding International Ser. No. PCT/NL2022/050167 dated Jun. 8, 2022. [cited by applicant]