IP Library Granted Patent US 11,262,987
Granted Patent B1
US 11,262,987 · App. 14/983,012 · Granted Mar 1, 2022

User interface isolation verification

Inventor: Richard B. Lyman (Pleasant Grove, UT)
Assignee: EMC IP HOLDING COMPANY LLC
G06F8/423G06F8/38
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,262,987
App. No.
14/983,012
Granted
Mar 1, 2022
Kind
B1
Abstract

Systems and methods for developing software applications including user interfaces. A user interface that is developed in a distributed manner may include components or plugins from multiple developers. The plugins can be evaluated prior to approval to determine whether any changes to the plugins are isolated and do not adversely impact other plugins or portions of the user interface. Plugins that are not sufficiently isolated are rejected.

Claims (82)

1. A method for performing isolation verification, the method comprising:

receiving a plugin associated with a user interface at a server that includes an isolation verification module, wherein the user interface is associated with second plugins, wherein the isolation verification module is configured to determine whether the plugin is isolated with respect to the second plugins;

evaluating the plugin with respect to the second plugins, by the isolation verification module, in an automated manner by:

transforming the plugin into a syntax tree by at least partially compiling source code of the plugin;

detecting variables of the plugin from the syntax tree;

identifying function calls included in the source code of the plugin from the syntax tree;

identifying references to elements included in strings included the source code from the syntax tree;

identifying references to libraries in the source code; and

identifying selectors included in the source code from the syntax tree;

determining that the plugin is isolated with respect to the second plugins by:

determining that the variables in the plugin are not used in the second plugins;

determining that the function calls included in the source code of the plugin do not call a function or procedure included in source code of the second plugins;

determining that the referenced elements in the strings are present in the source code of the plugin;

determining that the referenced libraries are not redefined, wherein changes to a library provided by the plugin are acceptable; and

determining that none of the selectors is configured to select content associated with the second plugins;

approving the plugin after determining that the plugin is isolated and rejecting the plugin when determining that the plugin is not isolated and providing a reason for rejecting the plugin; and

generating the user interface using the second plugins and the plugin after the plugin is approved.

2. The method of claim 1 , further comprising receiving the second plugins and evaluating the second plugins simultaneously to determine whether the multiple plugins are isolated with respect to each other and with respect to the plugin.

3. The method of claim 1 , wherein the plugin is isolated when the impact of the plugin on the second plugins used in generating the user interface is authorized.

4. The method of claim 1 , further comprising determining that the plugin is not isolated when one or more of:

at least one of the variables is used in the second plugins;

the plugin calls a function or procedure of the second plugins;

the referenced elements in the strings are present in the source code of the second plugins; and

at least one of the selectors is configured to select content associated with the second plugins.

5. The method of claim 1 , further comprising:

Identifying second references in the source code that are not included in the strings; and

determining if the second references refer to the second plugins or other components of the user interface.

6. The method of claim 5 , further comprising determining that the plugin is not isolated when the second references refer to the second plugins, libraries, or components of the user interface.

7. The method of claim 1 , further comprising determining whether any of the variables are associated with the second plugins or whether any of the variables of the plugin are global variables.

8. The method of claim 7 , further comprising determining that the plugin is isolated when use of the variables that are global variables or that are associated with the second plugins is authorized.

9. A method for performing isolation verification, the method comprising:

receiving a plugin associated with a user interface from a developer wherein the plugin includes source code, wherein the user interface is associated with second plugins and each of the second plugins includes source code;

transforming the plugin into a transformation structure by at least partially compiling the source code of the plugin;

evaluating the transformation structure in an automated manner to determine if the plugin is isolated, wherein evaluating the transformation structure includes:

detecting variables of the plugin from the transformation structure;

identifying function calls included in the source code of the plugin from the transformation structure;

identifying references to elements included in strings included the source code from the transformation structure;

identifying references to libraries in the source code; and

identifying selectors included in the source code from transformation structure;

determining that the plugin is not isolated with respect to the second plugins by:

determining that the variables are not used only within the plugin;

determining that the function calls included in the source code of the plugin calls a function or procedure included in the source code of the second plugins;

determining that the referenced elements in the strings are present in the source code of the second plugins;

determining that at least one references in the source code is redefined by the source code; and

determining that one or more of the selectors is configured to select content associated with the second plugins;

approving the plugin when determining that the plugin is isolated and rejecting the plugin when determining that the plugin is not isolated and providing a reason for rejecting the plugin; and

generating the user interface using the second plugins and the plugin after the plugin is approved.

10. The method of claim 9 , wherein the plugin is isolated when an impact of the plugin on the other plugins is authorized.

11. The method of claim 9 , wherein the transformation structure includes an abstract syntax tree.

12. The method of claim 10 , further comprising evaluating the second plugins to determine whether the second plugins are isolated from each other.

13. The method of claim 10 , further comprising determining that the plugin is isolated when one or more of:

none of the variables is used in the second plugins;

the plugin does not call a function or procedure of the second plugins;

the referenced elements in the strings are not present in the source code of the second plugins; and

the selectors are configured to only select content inside of the plugin.

14. The method of claim 10 , further comprising determining that the plugin is isolated when one of the variables is a global variable and use of the global variable is authorized.

15. The method of claim 10 , wherein changes to a library or using the library in an unauthorized manner indicate that the plugin is not isolated.

16. The method of claim 10 , determining that the plugin is isolated when only references to namespaces belonging to the plugin are made in the source code.

17. The method of claim 16 , further comprising identifying a reason why the plugin is not isolated when the plugin is not approved and providing the reason to a developer.

18. A non-transitory storage medium having stored therein computer-executable instructions which, when executed by one or more hardware processors, perform the processes recited in claim 9 .

19. A server, wherein the server comprises:

one or more hardware processors; and

the non-transitory storage medium as recited in claim 18 .

20. A non-transitory computer readable medium having stored therein computer-executable instructions which, when executed by one or more hardware processors, implement a method for performing isolation verification, the method comprising:

developing a plugin by a first developer;

developing second plugins by a second developer, wherein the second plugins are developed separately from the plugin;

receiving the plugin associated with a user interface at a server that includes an isolation verification module, wherein the user interface is associated with the second plugins, wherein the isolation verification module is configured to determine whether the plugin is isolated with respect to the second plugins;

evaluating the plugin with respect to the second plugins, by the isolation verification module, in an automated manner by:

transforming the plugin into a syntax tree by at least partially compiling source code of the plugin;

detecting variables of the plugin from the syntax tree;

identifying function calls included in the source code of the plugin from the syntax tree;

identifying references to elements included in strings included the source code from the syntax tree;

identifying references to libraries in the source code; and

identifying selectors included in the source code from the syntax tree;

determining that the plugin is isolated with respect to the second plugins by:

determining that the variables in the plugin are not used in the second plugins;

determining that the function calls included in the source code of the plugin do not call a function or procedure included in the source code of the second plugins;

determining that the referenced elements in the strings are present in the source code of the plugin;

determining that the referenced libraries are not redefined, wherein changes to a library provided by the plugin are acceptable; and

determining that none of the selectors is configured to select content associated with the second plugins;

approving the plugin after determining that the plugin is isolated and rejecting the plugin when determining that the plugin is not isolated and providing a reason for rejecting the plugin; and

generating the user interface using the second plugins and the plugin after the plugin is approved.

Assignments (5)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2017
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041872/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2016
From: LYMAN, RICHARD B.
To: EMC CORPORATION
Reel/Frame 039372/0384 →