# US 11,307,852 B1 · Automated generation of dependency graph based on input and output requirements of information

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,307,852 B1
- Document ID: US11307852B1
- Status: Granted
- Kind: B1
- Application number: 17/515,239
- Filed: 2021-10-29
- Granted: 2022-04-19
- Earliest claimed: 2021-10-29
- Assignees: Snowflake Inc.
- Applicants: Snowflake Inc.
- Inventors: Alexander Hess; Terry Marc Hardie
- Web page: https://patentgrep.com/patent/US11307852B1

## CPC

- G06F 8/433: {Dependency analysis; Data or control flow analysis}
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F 8/10: Requirements analysis; Specification techniques
- G06F 9/4494: {data driven}
- G06F 11/3604: Analysis of software for verifying properties of programs (testing of software G06F11/3668)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system and method for automatically generating a dependency graph based on input and output requirements of information. The method includes obtaining, by a processing device, a list of a plurality of modules executing on one or more processing devices, the plurality of modules associated with a plurality of input requirements and a plurality of output requirements. Each module is configured to generate an output dataset of a respective output requirement of the plurality of output requirements based on an input dataset of a respective input requirement of the plurality of input requirements. The method includes determining, by the processing device, an execution order of the plurality of modules based on the plurality of input requirements and the plurality of output requirements. The method includes establishing, by the processing device, a plurality of connections between the plurality of modules based on the execution order.

## Claims

### Claim 1

A method comprising:
obtaining, by a processing device, a list of a plurality of modules executing on one or more processing devices, the plurality of modules associated with a plurality of input requirements and a plurality of output requirements, each module is configured to generate an output dataset of a respective output requirement of the plurality of output requirements based on an input dataset of a respective input requirement of the plurality of input requirements;
determining, by the processing device, an execution order of the plurality of modules based on the plurality of input requirements and the plurality of output requirements; and
establishing, by the processing device, a plurality of connections between the plurality of modules based on the execution order.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
receiving, by the processing device, a first output dataset from a first module of the plurality of modules; and
redirecting, by the processing device using one or more of the plurality of connections, the first output dataset to a second module of the plurality of modules to cause the second module to generate a second output dataset based on the first output dataset.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
receiving, by the processing device, the second output dataset from the second module of the plurality of modules;
redirecting, by the processing device using one or more of the plurality of connections, the second output dataset to a third module of the plurality of modules to cause the third module to generate a third output dataset based on the second output dataset; and
redirecting, by the processing device using one or more of the plurality of connections, the second output dataset to a fourth module of the plurality of modules to cause the fourth module to generate a fourth output dataset based on the second output dataset.

### Claim 4 (depends on 1)

The method of claim 1, wherein a first connection of the plurality of connections is between a first module of the plurality of modules and a third module of the plurality of modules, wherein a second connection of the plurality of connections is between a second module of the plurality of modules and the third module of the plurality of modules, and further comprising:
determining, by the processing device, that a first output dataset that is generated by the first module is available before a second output dataset that is generated by the second module.

### Claim 5 (depends on 4)

The method of claim 4, further comprising:
redirecting, by the processing device responsive to determining that the first output dataset is available before the second output dataset, the first output dataset to the third module of the plurality of modules without redirecting the second output dataset to the third module of the plurality of modules.

### Claim 6 (depends on 4)

The method of claim 4, wherein the first module was in a first state when generating the first output dataset, and wherein the second module was in a second state when generating the second output dataset, and further comprising:
determining, by the processing device, that the first module generated the first output dataset while in an error state;
determining, by the processing device responsive to determining that the first module generated the first output dataset while in an error state, that the second module generated the second output dataset while in an error-free state; and
redirecting, by the processing device responsive to determining that the second module generated the second output dataset while in an error-free state, the second output dataset to the third module of the plurality of modules without redirecting the first output dataset to the third module of the plurality of modules.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
determining, by the processing device, a change in a first module of the plurality of modules from an error-free state to an error state;
identifying, by the processing device, a subset of modules of the plurality of modules whose respective input dataset depends on the change; and
causing each of the subset of modules to re-generate the output dataset of the respective output requirement of the plurality of output requirements based on the input dataset of the respective input requirement of the plurality of input requirements.

### Claim 8 (depends on 7)

The method of claim 7, wherein the change in the first module of the plurality of modules from the error-free state to the error state occurs after the first module of the plurality of modules generates the output dataset of the respective output requirement of the plurality of output requirements based on the input dataset of the respective input requirement of the plurality of input requirements.

### Claim 9 (depends on 1)

The method of claim 1, further comprising:
determining, by the first module of the plurality of modules, that a state of the first module changed during or after the generation of the first output dataset; and
generating, by the first module, a flag indicating an invalidity of the first output dataset or a requirement for a subset of modules to re-generate a plurality of output datasets.

### Claim 10 (depends on 2)

The method of claim 2, further comprising:
replacing, by the processing device, a first module of the plurality of modules with a third module of the plurality of modules;
receiving, by the processing device, a third output dataset from the third module of the plurality of modules;
determining, by the processing device, a compliance of the third output dataset to the input requirements of the second module of the plurality of modules; and
redirecting, by the processing device responsive to determining the compliance of the second output dataset to the input requirements of the second module, the third output dataset to the second module of the plurality of modules.

### Claim 11 (depends on 10)

The method of claim 10, wherein the first module sends the first output dataset to the processing device using a first interface of the first module, and the third module sends the third output dataset to the processing device using a second interface, and wherein the first interface and the second interface correspond to a common interface type.

### Claim 12 (depends on 10)

The method of claim 10, wherein the second output dataset is different from the first output dataset in at least one of a data format, a data value, or a data type.

### Claim 13 (depends on 2)

The method of claim 2, wherein the second module is unaware that the first module of the plurality of modules generated the first output dataset.

### Claim 14 (depends on 1)

The method of claim 1, wherein each module is configured to determine a capability to generate the output dataset of a respective output requirement of the plurality of output requirements based on the input dataset of a respective input requirement of the plurality of input requirements.

### Claim 15 (depends on 14)

The method of claim 14, wherein each module is configured to send a message to the processing device that is indicative of the capability.

### Claim 16

A system comprising:
a memory; and
a processing device, operatively coupled to the memory, to:
obtain a list of a plurality of modules executing on one or more processing devices, the plurality of modules associated with a plurality of input requirements and a plurality of output requirements, each module is configured to generate an output dataset of a respective output requirement of the plurality of output requirements based on an input dataset of a respective input requirement of the plurality of input requirements;
determine an execution order of the plurality of modules based on the plurality of input requirements and the plurality of output requirements; and
establish a plurality of connections between the plurality of modules based on the execution order.

### Claim 17 (depends on 16)

The system of claim 16, wherein the processing device is further to:
receive a first output dataset from a first module of the plurality of modules; and
redirect, using one or more of the plurality of connections, the first output dataset to a second module of the plurality of modules to cause the second module to generate a second output dataset based on the first output dataset.

### Claim 18 (depends on 16)

The system of claim 16, wherein the processing device is further to:
receive the second output dataset from the second module of the plurality of modules;
redirect, using one or more of the plurality of connections, the second output dataset to a third module of the plurality of modules to cause the third module to generate a third output dataset based on the second output dataset; and
redirect, using one or more of the plurality of connections, the second output dataset to a fourth module of the plurality of modules to cause the fourth module to generate a fourth output dataset based on the second output dataset.

### Claim 19 (depends on 16)

The system of claim 16, wherein a first connection of the plurality of connections is between a first module of the plurality of modules and a third module of the plurality of modules, wherein a second connection of the plurality of connections is between a second module of the plurality of modules and the third module of the plurality of modules, and wherein the processing device is further to:
determine that a first output dataset that is generated by the first module is available before a second output dataset that is generated by the second module.

### Claim 20 (depends on 19)

The system of claim 19, wherein the processing device is further to:
redirect, responsive to determining that the first output dataset is available before the second output dataset, the first output dataset to the third module of the plurality of modules without redirecting the second output dataset to the third module of the plurality of modules.

### Claim 21 (depends on 19)

The system of claim 19, wherein the first module was in a first state when generating the first output dataset, and wherein the second module was in a second state when generating the second output dataset, and wherein the processing device is further to:
determine that the first module generated the first output dataset while in an error state;
determine, responsive to determining that the first module generated the first output dataset while in an error state, that the second module generated the second output dataset while in an error-free state; and
redirect, responsive to determining that the second module generated the second output dataset while in an error-free state, the second output dataset to the third module of the plurality of modules without redirecting the first output dataset to the third module of the plurality of modules.

### Claim 22 (depends on 16)

The system of claim 16, wherein the processing device is further to:
determine a change in a first module of the plurality of modules from an error-free state to an error state;
identify a subset of modules of the plurality of modules whose respective input dataset depends on the change; and
cause each of the subset of modules to re-generate the output dataset of the respective output requirement of the plurality of output requirements based on the input dataset of the respective input requirement of the plurality of input requirements.

### Claim 23 (depends on 22)

The system of claim 22, wherein the change in the first module of the plurality of modules from the error-free state to the error state occurs after the first module of the plurality of modules generates the output dataset of the respective output requirement of the plurality of output requirements based on the input dataset of the respective input requirement of the plurality of input requirements.

### Claim 24 (depends on 16)

The system of claim 16, wherein the processing device is further to:
determine, by the first module of the plurality of modules, that a state of the first module changed during or after the generation of the first output dataset; and
generate, by the first module, a flag indicating an invalidity of the first output dataset or a requirement for a subset of modules to re-generate a plurality of output datasets.

### Claim 25 (depends on 17)

The system of claim 17, wherein the processing device is further to:
replace a first module of the plurality of modules with a third module of the plurality of modules;
receive a third output dataset from the third module of the plurality of modules;
determine a compliance of the third output dataset to the input requirements of the second module of the plurality of modules; and
redirect, responsive to determining the compliance of the third output dataset to the input requirements of the second module, the third output dataset to the second module of the plurality of modules.

### Claim 26 (depends on 25)

The system of claim 25, wherein the first module sends the first output dataset to the processing device using a first interface of the first module, and the third module sends the third output dataset to the processing device using a second interface, and wherein the first interface and the second interface correspond to a common interface type.

### Claim 27 (depends on 25)

The system of claim 25, wherein the second output dataset is different from the first output dataset in at least one of a data format, a data value, or a data type.

### Claim 28 (depends on 17)

The system of claim 17, wherein the second module is unaware that the first module of the plurality of modules generated the first output dataset.

### Claim 29 (depends on 16)

The system of claim 16, wherein each module is configured to determine a capability to generate the output dataset of a respective output requirement of the plurality of output requirements based on the input dataset of a respective input requirement of the plurality of input requirements, and send a message to the processing device that is indicative of the capability.

### Claim 30

A non-transitory computer-readable medium storing instructions that, when execute by a processing device, cause the processing device to:
obtain, by a processing device, a list of a plurality of modules executing on one or more processing devices, the plurality of modules associated with a plurality of input requirements and a plurality of output requirements, each module is configured to generate an output dataset of a respective output requirement of the plurality of output requirements based on an input dataset of a respective input requirement of the plurality of input requirements;
determine an execution order of the plurality of modules based on the plurality of input requirements and the plurality of output requirements; and
establish a plurality of connections between the plurality of modules based on the execution order.
