Software-defined infrastructure
Software-defined infrastructure (SDI) is the definition of technical computing infrastructure entirely under the control of software with no operator or human intervention. It operates independent of any hardware-specific dependencies and is programmatically extensible.

In the SDI approach, an application's infrastructure requirements are defined declaratively (both functional and non-functional requirements) such that sufficient and appropriate hardware can be automatically derived and provisioned to deliver those requirements.

Typical deployments require software-defined networking (SDN) and cloud computing capabilities as a minimal point of entry.

The benefits of SDI is that it lowers/eliminates effort towards infrastructure maintenance, allows companies to move focus to other parts of the software, ensures consistence while also allowing for extensibility, remote deployment through configuration without downtime, and allows you to leverage the power of versioning such as git.

Advanced capabilities enable the transition from one configuration to another without downtime as mentioned before, by automatically calculating the set of state changes between one configuration and another and an automated transition step between each step, thus achieving the complete change via software.

See also
 Infrastructure as Code

References

Software design