什么是软件定义?难道以前没有软件定义?都是硬件定义吗?
我们先来看一下,什么是软件。
软件是一系列按照特定顺序组织的计算机数据和指令的集合。这个集合的作用其实就是为了和硬件交流。从广义来说, 软件就是用户与硬件之间的接口 。用户通过软件来操控硬件。
早期,为了大规模生产,降低制造的复杂度和成本,许多功能都固化在硬件里,我们可以称为硬件定义。随着灵活性、自动化、多样化、个性化定制的需求日益增长,由软件来操控硬件资源的情况将越来越多、越来越广。
举个空调的例子:
最早的空调里面也有软件,但相对固化,不提供或者提供非常少的接口,缺乏灵活性。那时,我们只能选择温度,或者开关;后来出现了更多的选择,如风速、风向等的设定。到了智能家居时代,通过向应用软件开放空调的编程接口,我们能在回家之前,就能借助手机或者平板,开启并设置空调了。
软件定义,究其本质,就是将原来高度耦合的一体化硬件,通过标准化、抽象化,解耦成不同的部件。围绕这些部件,建立起不同的抽象层,以API(应用编程接口)等方式,实现原来必须由硬件才能提供的功能。再由管理控制软件,自动地进行硬件资源的部署、优化和管理,提高灵活性,为应用提供服务。
简而言之,软件定义就是 更多地由软件来驱动并控制硬件资源 。
需要注意的是, 软件定义其实是一个过程 ,不是一蹴而就的目标,它分成不同阶段。软件定义逐渐将硬件与软件进行解耦, 将硬件的可操控成分按需求、分阶段地通过编程接口或者以服务的方式逐步暴露给应用 ,分阶段地满足应用对资源的不同程度、不同广度的灵活调用。