IP Library Granted Patent US 10,095,513
Granted Patent B1
US 10,095,513 · App. 14/935,849 · Granted Oct 9, 2018

Functional dependency analysis

Inventor: Peter Webb (Newton, MA)
Assignee: The MathWorks, Inc.
G06F8/76G06F8/30G06F8/433G06F8/61G06F17/30106G06F8/71G06F8/74G06F17/30309
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 10,095,513
App. No.
14/935,849
Granted
Oct 9, 2018
Kind
B1
Abstract

A device may store dependency information for a group of software components provided by a technical computing environment. The group of software components may include a first software component and a second software component and may identify the second software component as being a dependent software component of the first software component. The device may obtain an application generated via the technical computing environment and may determine that the application invokes the first software component. The device may access the dependency information based on the application invoking the first software component and may determine that the first software component invokes the second software component based on the dependency information. The device may generate a deployable form of the application that allows the application to run in another computing environment.

Claims (102)

1. A method comprising:

obtaining information associated with an application generated via a first computing environment,

the obtaining the information associated with the application being performed by a device;

determining that a first software component is not to be excluded from a deployable form of the application being deployed to a second computing environment,

the second computing environment being different from the first computing environment, and

the determining that the first software component is not to be excluded from the deployable form of the application being performed by the device;

determining, after determining that the first software component is not to be excluded from the deployable form of the application, a symbol that is referenced by the first software component,

the symbol relating to one or more lines of code, and

the determining that the first software component includes the symbol being performed by the device;

determining that the symbol corresponds to a second software component that is not to be deployed to the second computing environment,

the determining that the symbol corresponds to the second software component that is not to be deployed to the second computing environment being performed by the device;

removing the symbol from a set of one or more symbols based on determining that the symbol corresponds to the second software component that is not to be deployed to the second computing environment,

the second software component being available in the second computing environment or a library of components associated with the second computing environment, and

the removing the symbol being performed by the device; and

generating the deployable form of the application, including the first software component, and excluding the second software component, based on the symbol being removed from the set of one or more symbols,

the deployable form of the application allowing the application to run in the second computing environment, and

the generating the deployable form of the application being performed by the device.

2. The method of claim 1 , further comprising:

continually performing a dependency analysis; and

capturing, based on continually performing the dependency analysis, one or more dependencies as the one or more dependencies are created or updated,

where determining that the first software component is not to be excluded comprises:

determining that the first software component is not to be excluded based on capturing the one or more dependencies.

3. The method of claim 2 , further comprising:

receiving a notification of a change to one or more of the first software component or the second software component,

the notification triggering a dependency analysis of at least one of the first software component or the second software component,

where continually performing the dependency analysis comprises:

continually performing the dependency analysis based on receiving the notification of the change.

4. The method of claim 2 , further comprising:

pausing the continually performing the dependency analysis when there are no new software components or updated software components to be analyzed.

5. The method of claim 1 , further comprising:

updating dependency information to indicate that the first software component invokes the second software component based on the symbol corresponding to the second software component.

6. The method of claim 5 , further comprising:

designating a portion of the application as program code provided by the first computing environment;

determining that the first software component is included in the portion of the application designated as program code; and

accessing the dependency information based on the first software component being included in the portion of the application designated as program code.

7. The method of claim 6 , further comprising:

determining a location in a memory storing the first computing environment; and

determining that a file including the first software component is stored in the location in the memory,

where designating the portion of the application as program code comprises:

designating the file as program code based on the file being stored in the location in the memory.

8. A device comprising:

one or more processors to:

obtain information associated with an application generated via a first computing environment;

determine that a first function is not to be excluded from a deployable form of the application being deployed to a second computing environment,

the second computing environment being different from the first computing environment;

determine, after determining that the first function is not to be excluded from the deployable form of the application, a symbol that is referenced by the first function,

the symbol relating to one or more lines of code;

determine that the symbol corresponds to a second function that is not to be deployed to the second computing environment;

remove the symbol from a set of one or more symbols based on determining that the symbol corresponds to the second function that is not to be deployed to the second computing environment,

the second function being available in the second computing environment or a library of components associated with the second computing environment; and

generate the deployable form of the application, including the first function, and excluding the second function, based on the symbol being removed from the set of one or more symbols,

the deployable form of the application allowing the application to run in the second computing environment.

9. The device of claim 8 , where the one or more processors are further to:

continually perform a dependency analysis; and

capture, based on continually performing the dependency analysis, one or more dependencies as the one or more dependencies are created or updated.

10. The device of claim 9 ,

where the one or more processors are further to:

receive a notification of a change to one or more of the first function or the second function, and

where the one or more processors, when continually performing the dependency analysis, are to:

continually perform the dependency analysis based on the notification of the change.

11. The device of claim 9 , where the one or more processors are further to:

pause the continually performing the dependency analysis when there are no new functions or updated functions to be analyzed.

12. The device of claim 8 , where the one or more processors are further to:

update dependency information to indicate that the first function invokes the second function based on the symbol corresponding to the second function.

13. The device of claim 12 , where the one or more processors are further to:

designate a portion of the application as program code provided by the first computing environment;

determine that the first function is included in the portion of the application designated as program code; and

access the dependency information based on the first function being included in the portion of the application designated as program code.

14. The device of claim 13 ,

where the one or more processors are further to:

determine a location in a memory storing the first computing environment; and

determine that a file including the first function is stored in the location in the memory; and

where the one or more processors, when designating the portion of the application as program code, are to:

designate the file as program code based on the file being stored in the location in the memory.

15. A non-transitory computer-readable medium storing instructions, the instructions comprising:

one or more instructions that, when executed by one or more processors, cause the one or more processors to:

obtain information associated with an application generated via a first computing environment;

determine that a first software component is not to be excluded from a deployable form of the application being deployed to a second computing environment,

the second computing environment being different from the first computing environment;

determine, after determining that the first software component is not to be excluded from the deployable form of the application, a symbol that is referenced by the first software component,

the symbol relating to one or more lines of code;

determine that the symbol corresponds to a second software component that is not to be deployed to a second computing environment;

remove the symbol from a set of one or more symbols based on determining that the symbol corresponds to the second software component that is not to be deployed to the second computing environment,

the second software component being available in the second computing environment or a library of components associated with the second computing environment; and

generate the deployable form of the application, including the first software component and excluding the second software component, based on the symbol being removed from the set of one or more symbols,

the deployable form of the application allowing the application to run in the second computing environment.

16. The non-transitory computer-readable medium of claim 15 , where the one or more instructions that, when executed by one or more processors, further cause the one or more processors to:

continually perform a dependency analysis; and

capture, based on continually performing the dependency analysis, one or more dependencies as the one or more dependencies are created or updated.

17. The non-transitory computer-readable medium of claim 16 ,

where the one or more instructions that, when executed by one or more processors, further cause the one or more processors to:

receive a notification of a change to one or more of the first software component or the second software component, and

where the one or more instructions, that cause the one or more processors to continually perform the dependency analysis, further cause the one or more processors to:

continually perform the dependency analysis based on the notification of the change.

18. The non-transitory computer-readable medium of claim 16 , where the one or more instructions that, when executed by one or more processors, further cause the one or more processors to:

pause the continually performing the dependency analysis when there are no new software components or updated software components to be analyzed.

19. The non-transitory computer-readable medium of claim 15 , where the one or more instructions that, when executed by one or more processors, further cause the one or more processors to:

update dependency information to indicate the first software component invokes the second software component based on the symbol corresponding to the second software component.

20. The non-transitory computer-readable medium of claim 19 , where the one or more instructions that, when executed by one or more processors, further cause the one or more processors to:

designate a portion of the application as program code provided by the first computing environment;

determine that the first software component is included in the portion of the application designated as program code; and

access the dependency information based on the first software component being included in the portion of the application designated as program code.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2015
From: WEBB, PETER
To: THE MATHWORKS, INC.
Reel/Frame 036993/0539 →
Continuity (1)
Continuation 13910104 · Jun 4, 2013