US 11,983,545 B2
Dynamic procedures for software products
Björn Strihagen, Täby (SE)
Assigned to Addi Medical AB, Danderyd (SE)
Filed by Addi Medical AB, Danderyd (SE)
Filed on Nov. 12, 2021, as Appl. No. 17/524,774.
Claims priority of application No. 2051321-4 (SE), filed on Nov. 12, 2020.
Prior Publication US 2022/0147374 A1, May 12, 2022
Int. Cl. G06F 9/445 (2018.01); G06F 8/41 (2018.01); G06F 8/54 (2018.01)
CPC G06F 9/44521 (2013.01) [G06F 8/44 (2013.01); G06F 8/54 (2013.01)] 12 Claims
OG exemplary drawing
 
1. A computerized method for changing a functionality of an executing software product in runtime, the method comprising:
a. providing, in a memory of a system, the executable software product, wherein the executable software product is generated using an object-oriented programming language, the executable software product comprising:
i) at least one first programming interface;
ii) at least one trigger point, wherein each of the at least one trigger point is indicative of a location in a software code of the software product for invocation of at least one detected dynamic procedure associated with the trigger point;
iii) a change detector configured to detect, in runtime, any addition, deletion or change of any dynamic procedure source code stored in the memory and to, in runtime, trigger compilation of a selection of the dynamic procedure source code comprised in the memory in response to detection of any addition, deletion or change of any dynamic procedure source code stored in the memory;
iv) a trigger point detector, configured to detect, in runtime, the at least one trigger point comprised in the executable software product and to, in runtime, trigger invocation and execution of at least one dynamic procedure associated with each detected trigger point in response to detection of the at least one trigger point; and
v) a runtime compiler, a runtime linker and a runtime loader configured to compile, link, and load the dynamic procedure source code in runtime, i.e., during execution of the executable software product;
b. providing, in the memory, the dynamic procedure source code of at least one dynamic procedure designed to introduce a change in the functionality in the executable software product, wherein the dynamic procedure source code of each of the at least one dynamic procedure comprises at least one second programming interface that complies with one of the at least one first programming interface;
c. creating an executing program in a dynamic runtime environment by loading the executable software product using a system loader comprised in or communicatively connected to the system, and
in runtime, i.e., during execution of the executable software product:
d. detecting any addition, deletion or change of the dynamic procedure source code in the memory using the change detector;
e. compiling a selection of the dynamic procedure source code, using the runtime compiler; and
f. linking the compiled selection of the dynamic procedure source code, using the runtime linker;
g. detecting the at least one trigger point comprised in the executable software product, by detecting a first programming interface in the source code of the software product, by the trigger point detector;
h. in response to the detection of the at least one trigger point, for each of the at least one detected trigger point:
i) mapping, by the trigger point detector, the detected first programming interface with one or more stored dynamic procedure in the memory having a second programming interface that matches the detected first programming interface and
ii) invoking, from the memory, the at least one dynamic procedure associated with the detected trigger point; and
i. loading, or executing, the at least one invoked dynamic procedure within the executing program, using the runtime loader.