# US 9,521,209 B2 · Code generation

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

- Number: US 9,521,209 B2
- Document ID: US9521209B2
- Status: Granted
- Kind: B2
- Application number: 14/056,482
- Filed: 2013-10-17
- Published: 2014-12-25
- Granted: 2016-12-13
- Earliest claimed: 2002-11-06
- Assignees: Code Valley Corp Pty Ltd
- Applicants: Code Valley Corp Pty Ltd
- Inventors: Noel William Lovisa; Eric Phillip Lawrey
- Web page: https://patentgrep.com/patent/US9521209B2

## CPC

- G06F 8/34: Graphical or visual programming
- G06F 8/36: Software reuse
- G06F 9/54: Interprogram communication
- H04L 67/567: Integrating service provisioning from a plurality of service providers
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

The present invention provides a method of generating computer executable code using components, each of which corresponds to a respective data manipulation service, typically implemented by a respective entity. The method includes defining a combination of components corresponding to a sequence of data manipulations. The data manipulations are then performed, which can be achieved by requesting the provision of each service from the respective entities in accordance with the defined component combination, thereby causing computer executable code to be generated.

## Claims

### Claim 1

A method of generating computer executable code using components representing component servers that generate an executable code fragment to provide a respective functionality, the method including:
a) Determining a component combination by selecting a plurality of components and defining connections between at least some of the components, the component combination being defined in accordance with requirements to allow a desired functionality to be achieved; and,
b) Generating the computer executable code in accordance with the component combination by:
i) For each component in the component combination, generating a build request including:
(1) An indication of any connections between the component and other components in the component combination; and,
(2) A construction site location for any executable code fragment to be generated by the component server represented by the component;
ii) Providing each build request to a component server corresponding to the respective component in the component combination, each component server being implemented by a component processing system; and,
iii) Causing at least some of the component servers to:
(1) Generate an executable code fragment in accordance with the respective build request, by at least one of:
(a) Interacting with one or more other component servers based on the indication of connections in the respective build request; and,
(b) Generating additional build requests for causing the implementation of further component servers; and,
(2) Provide the executable code fragment to a construction site in accordance with the construction site location; and,
iv) Combining the executable code fragments in the construction site to thereby form the computer executable code by concatenating each executable code fragment at a construction site location in accordance with the respective build request; and,
c) Providing the computer executable code to a processing system, such that execution of the computer executable code by the processing system causes the processing system to perform the desired functionality.

### Claim 2 (depends on 1)

A method according to claim 1, at least some of the components including one or more ports for receiving and/or outputting data to be manipulated.

### Claim 3 (depends on 2)

A method according to claim 2, each port having an agent adapted to control transfer of data to and from the component.

### Claim 4 (depends on 1)

A method according to claim 1, the processing system including a store, the method including storing one or more of the executable code fragments in the store.

### Claim 5 (depends on 1)

A method according to claim 1, at least some of the components being formed from a number of combined sub-components, the sub-components also being components.

### Claim 6 (depends on 1)

A method according to claim 1, at least some of the executable code fragments being generated using at least one of:
a) Manual generation of executable code fragments by an individual;
b) Computer code adapted to be executed by a processing system, to thereby generate the executable code fragments automatically; and,
c) Combinations of sub-components, the sub-components also being components.

### Claim 7 (depends on 1)

A method according to claim 1, the method including causing a first processing system to:
a) Select a number of components in response to input commands received from a user;
b) Define the component combination using the selected components; and,
c) Cause the component combination to be implemented.

### Claim 8 (depends on 7)

A method according to claim 7, at least some of the components including one or more ports, the method including causing the first processing system to:
a) Provide an indication of the ports of each selected component to the user; and,
b) Interconnect selected ones of the ports in response to input commands from the user to thereby define the component combination.

### Claim 9 (depends on 7)

A method according to claim 7, the method including causing a second processing system to:
a) Determine details of a number of components; and
b) Provide at least an indication of the details to the user via the first processing system.

### Claim 10 (depends on 9)

A method according to claim 9, the method including causing the second processing system to:
a) Select respective ones of the components in response to input commands from the user; and,
b) Provide the details of the selected components to the user via the first processing system.

### Claim 11 (depends on 10)

A method according to claim 10, the details being component specifications, the second processing system including:
a) A store for storing the component specifications including at least one of:
i) An indication of the manipulation service;
ii) A graphical representation of the component; and,
iii) Port specifications defining the operation of the agents associated with each port; and,
b) A processor, the method including causing the processor to:
i) Obtain one or more component specifications from the store; and,
ii) Provide the component specifications to the user via the first processing system.

### Claim 12 (depends on 9)

A method according to claim 9, the method including causing the second processing system to:
a) Determine performance information, the performance information being representative of one or more criteria regarding the implementation of the components; and,
b) Provide the performance information to a user, the user selecting the components in accordance with the performance information.

### Claim 13 (depends on 7)

A method according to claim 7, the method including causing the first processing system to:
a) Generate a graphical representation of the one or more selected components; and,
b) Manipulate the graphical representation in response to input commands received from a user to thereby define the component combination.

### Claim 14 (depends on 7)

A method according to claim 7, the first processing system being coupled to the plurality of component processing systems via the communications network, the method including:
a) Generating the build request for each component in the component combination; and,
b) Transferring the build request to each component processing system via the communications network, each component processing system being adapted to respond to the build request to implement the respective component server.

### Claim 15 (depends on 14)

A method according to claim 14, the method including:
a) Determining any data required by the components; and,
b) Providing the data in the build request.

### Claim 16 (depends on 14)

A method according to claim 14, each build request including an indication of the interconnections for each of the ports of the respective component.

### Claim 17 (depends on 16)

A method according to claim 16, the method including causing each component processing system to:
a) Implement a respective agent associated with each port; and,
b) Cause each agent to cooperate with an agent of another component in accordance with the defined interconnections, to thereby allow data to be transferred between the ports.

### Claim 18 (depends on 1)

A method according to claim 1, the method including causing the generated executable code fragments to be context dependent.

### Claim 19 (depends on 18)

A method according to claim 18, the method causing at least some of the component servers to:
a) Determine a context for the executable code fragment; and,
b) Generated the executable code fragment service in accordance with the determined context.

### Claim 20 (depends on 19)

A method according to claim 19, the processing system including at least a memory, stack and registers, the context including at least one of:
a) The state of at least one of the registers, stack and memory;
b) Other components in the defined component combination; and,
c) Random factors.
