# US 10,503,496 B2 · Smart tool for enterprise-wide version control of codes during software integration and deployment

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

- Number: US 10,503,496 B2
- Document ID: US10503496B2
- Status: Granted
- Kind: B2
- Application number: 15/887,576
- Filed: 2018-02-02
- Published: 2019-08-08
- Granted: 2019-12-10
- Earliest claimed: 2018-02-02
- Assignees: Bank of America Corporation
- Applicants: Bank of America Corporation
- Inventors: Venkata R. Natari
- Web page: https://patentgrep.com/patent/US10503496B2

## CPC

- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F 8/60: Software deployment
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Embodiments of the present invention provide a system for controlling versions of codes during software integration and deployment. The system is typically configured for creating a program increment development branch in a first environment system, opening a first iteration candidate under the program increment development branch with a first iteration version number associated with a program increment version range of the program increment development branch, receiving at least one first development code from a first user via a smart tool user interface, moving the first development code to the first iteration candidate, receiving a first input from the first user to lock the first iteration candidate, locking the first iteration candidate, and closing the first iteration candidate.

## Claims

### Claim 1

A system for enterprise-wide version control of codes during software integration and deployment, the system comprising:
one or more memory devices;
a smart tool stored in the one or more memory devices, the smart tool comprising one or more modules with instructions executable by one or more processing devices operatively coupled to the one or more memory devices, wherein the one or more processing devices are configured for executing the instructions to:
create a program increment development branch in a first environment system, wherein the program increment development branch comprises a program increment version range;
open a first iteration candidate under the program increment development branch with a first iteration version number, wherein the first iteration version number is associated with the program increment version range;
create a release development branch in the first environment system, wherein the release development branch comprises a release version range;
open a first release candidate under the release development branch with a first release version number, wherein the first release version number is associated with the release version range;
receive at least one first development code associated with a first ruleset from a first user via a smart tool user interface;
receive a first data instance and a first framework candidate associated with the first development code from the first user via the smart tool user interface, wherein the first data instance is utilized by the first development code to achieve one or more functions based on the first ruleset, and the first framework candidate is a collection of functions or objects associated with the first ruleset;
in response to receiving the first development code, the first data instance, and the first framework candidate, move the first development code, the first data instance, and the first framework candidate to the first iteration candidate;
receive a first input from the first user to lock the first iteration candidate;
lock the first iteration candidate based on receiving the first input from the first user and close the first iteration candidate; and
create a package of the first iteration candidate comprising the first data instance, the first framework candidate and the first development code.

### Claim 2 (depends on 1)

The system of claim 1, wherein the one or more processing devices are configured for executing the instructions in the one or more modules to deploy the first iteration candidate to a second environment system in response to creating the package of the first iteration candidate, wherein the second environment system is a testing environment system or an acceptance test environment system.

### Claim 3 (depends on 1)

The system of claim 1, wherein the one or more processing devices are configured for executing the instructions in the one or more modules to:
in response to closing the first iteration candidate, open a second iteration candidate under the program increment development branch with a second iteration version number, wherein the second iteration version number is consecutive to the first iteration version number;
receive a second development code associated with the first ruleset from at least one of the first user or a second user;
in response to receiving the second development code, move the second development code to the second iteration candidate;
receive a second input from at least one of the first user or the second user to lock the second iteration candidate;
lock the second iteration candidate based on receiving the second input from at least one of the first user or the second user and close the second iteration candidate; and
in response to closing the second iteration candidate, open a third iteration candidate under the program increment development branch with a third iteration version number, wherein the third iteration version number is consecutive to the second iteration version number.

### Claim 4 (depends on 3)

The system of claim 3, wherein the one or more processing devices are configured for executing the instructions in the one or more modules to deploy the first iteration candidate and the second iteration candidate to a second environment system in response to closing the second iteration candidate.

### Claim 5 (depends on 4)

The system of claim 4, wherein the one or more processing devices are configured for executing the instructions in the one or more modules to:
in response to deploying the first iteration candidate and the second iteration candidate to the second environment system, perform a plurality of tests on the first iteration candidate and the second iteration candidate;
determine that the plurality of tests on the first iteration candidate and the second iteration candidate are successful;
move the first iteration candidate and the second iteration candidate to the first release candidate with the first release version number.

### Claim 6 (depends on 5)

The system of claim 5, wherein the one or more processing devices are configured for executing the instructions in the one or more modules to:
deploy the first release candidate to a third environment system on a predetermined cycle end date associated with a first release cycle, wherein the third environment system is a production environment system.

### Claim 7 (depends on 6)

The system of claim 6, wherein the one or more processing devices are configured for executing the instructions in the one or more modules to open a second release candidate under the release development branch with a second release version number in response to deploying the first release candidate to the third environment system, wherein the second release version number is associated with the release version range and is consecutive to the first release version number.

### Claim 8 (depends on 1)

The system of claim 1, wherein the first development code and the second development code are incremental changes.

### Claim 9 (depends on 1)

The system of claim 1, wherein the first development code and second development are associated with a single feature.

### Claim 10 (depends on 1)

The system of claim 1, wherein the first development code and the second development code are associated with different features.

### Claim 11

A computer program product for enterprise-wide version control of codes during software integration and deployment, the computer program product comprising at least one non-transitory computer readable medium comprises computer readable instructions for:
creating a program increment development branch in a first environment system, wherein the program increment development branch comprises a program increment version range;
opening a first iteration candidate under the program increment development branch with a first iteration version number, wherein the first iteration version number is associated with the program increment version range;
creating a release development branch in the first environment system, wherein the release development branch comprises a release version range;
opening a first release candidate under the release development branch with a first release version number, wherein the first release version number is associated with the release version range;
receiving at least one first development code associated with a first ruleset from a first user via a smart tool user interface;
receiving a first data instance and a first framework candidate associated with the first development code from the first user via the smart tool user interface, wherein the first data instance is utilized by the first development code to achieve one or more functions based on the first ruleset, and the first framework candidate is a collection of functions or objects associated with the first ruleset;
in response to receiving the first development code, the first data instance, and the first framework candidate, moving the first development code, the first data instance, and the first framework candidate to the first iteration candidate;
receiving a first input from the first user to lock the first iteration candidate;
locking the first iteration candidate based on receiving the first input from the first user and closing the first iteration candidate; and
creating a package of the first iteration candidate comprising the first data instance, the first framework candidate and the first development code.

### Claim 12 (depends on 11)

The computer program product of claim 11, wherein the non-transitory computer readable medium comprises computer readable instructions for deploying the first iteration candidate to a second environment system in response to creating the package of the first iteration candidate, wherein the second environment system is a testing environment system or an acceptance test environment system.

### Claim 13 (depends on 11)

The computer program product of claim 11, wherein the non-transitory computer readable medium comprises computer readable instructions for:
in response to closing the first iteration candidate, opening a second iteration candidate under the program increment development branch with a second iteration version number, wherein the second iteration version number is consecutive to the first iteration version number;
receiving a second development code associated with the first ruleset from at least one of the first user or a second user;
in response to receiving the second development code, moving the second development code to the second iteration candidate;
receiving a second input from at least one of the first user or the second user to lock the second iteration candidate;
locking the second iteration candidate based on receiving the second input from at least one of the first user or the second user and closing the second iteration candidate; and
in response to closing the second iteration candidate, opening a third iteration candidate under the program increment development branch with a third iteration version number, wherein the third iteration version number is consecutive to the second iteration version number.

### Claim 14 (depends on 13)

The computer program product of claim 13, wherein the non-transitory computer readable medium comprises computer readable instructions for deploying the first iteration candidate and the second iteration candidate to a second environment system in response to closing the second iteration candidate.

### Claim 15 (depends on 14)

The computer program product of claim 14, wherein the non-transitory computer readable medium comprises computer readable instructions for:
in response to deploying the first iteration candidate and the second iteration candidate to the second environment system, performing a plurality of tests on the first iteration candidate and the second iteration candidate;
determining that the plurality of tests on the first iteration candidate and the second iteration candidate are successful;
moving the first iteration candidate and the second iteration candidate to the first release candidate with the first release version number.

### Claim 16 (depends on 15)

The computer program product of claim 15, wherein the non-transitory computer readable medium comprises computer readable instructions for deploying the first release candidate to a third environment system on a predetermined cycle end date associated with a first release cycle, wherein the third environment system is a production environment system.

### Claim 17

A computer implemented method for enterprise-wide version control of codes during software integration and deployment, the computer implemented method comprising:
creating a program increment development branch in a first environment system, wherein the program increment development branch comprises a program increment version range;
opening a first iteration candidate under the program increment development branch with a first iteration version number, wherein the first iteration version number is associated with the program increment version range;
creating a release development branch in the first environment system, wherein the release development branch comprises a release version range;
opening a first release candidate under the release development branch with a first release version number, wherein the first release version number is associated with the release version range;
receiving at least one first development code associated with a first ruleset from a first user via a smart tool user interface;
receiving a first data instance and a first framework candidate associated with the first development code from the first user via the smart tool user interface, wherein the first data instance is utilized by the first development code to achieve one or more functions based on the first ruleset, and the first framework candidate is a collection of functions or objects associated with the first ruleset;
in response to receiving the first development code, the first data instance, and the first framework candidate, moving the first development code, the first data instance, and the first framework candidate to the first iteration candidate;
receiving a first input from the first user to lock the first iteration candidate;
locking the first iteration candidate based on receiving the first input from the first user and close the first iteration candidate; and
creating a package of the first iteration candidate comprising the first data instance, the first framework candidate and the first development code.

### Claim 18 (depends on 17)

The computer implemented method of claim 17, wherein the computer implemented method further comprises deploying the first iteration candidate to a second environment system in response to creating the package of the first iteration candidate wherein the second environment system is a testing environment system or an acceptance test environment system.
