购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

丛书序

进入21世纪以来,信息技术及其应用飞速发展,已经广泛覆盖并深入渗透到了社会生活的方方面面。特别地,近十年来,以云计算、大数据、移动互联网、物联网、人工智能、区块链为代表的新一代信息技术推动信息技术应用进入跨界融合的繁荣期,开始呈现出“网构化、泛在化、智能化”的新趋势,并不断催生新平台、新模式和新思维。

可以说,在某种意义上,信息技术及其深度应用已经推动人类社会步入一个新的发展阶段。可以从不同的视角去考察和认知这个新的发展阶段:从基础设施视角,可将其视为以互联网为核心主干,由移动网、广电网、物联网等多种网络融合形成新型泛在化基础设施,并以支撑规模化跨界创新应用服务模式为特征的“互联网+”时代;从计算模式视角,可将其视为以支持计算、存储、网络、数据、应用等资源的集约式管理和服务化使用为特征的云计算时代;从信息资源视角,则可将其视为将数据作为新型战略资源并以数据的深度挖掘和融合应用为特征的大数据时代;从信息应用视角,则可将其视为以人工智能技术为基础,支持从感知、认知到决策的智能化时代。

然而,如果从使能技术视角看,软件技术在信息技术中始终处于“灵魂”地位,所有新的信息技术应用、平台和服务模式,均以软件技术作为基础支撑;更为重要的是,在数字经济时代,软件技术已经成为企业的核心竞争力,不仅引领了信息技术产业的变革,在很多传统领域(如汽车、能源、制造、零售等)中的存在比重和重要性也在不断加大,在支持这些传统领域产业结构升级换代甚至颠覆式创新的过程中起到了核心作用,并进一步加速重构全球分工体系和竞争格局。特别地,作为新一轮科技革命和产业变革的标志,德国的“工业4.0”和美国的“工业互联网”,均将软件技术作为发展重点。软件已经走出信息世界的范畴,深度渗透到物理世界和人类社会中,全面发挥“赋能、赋值、赋智”的重要作用,甚至开始扮演着重新定义整个世界图景的重要角色。我们正在进入一个“软件定义一切”的时代!

“软件定义一切”已然成为一种客观需求,并呈现出快速发展的态势,其主要体现形式是软件“基础设施化”。一方面,在数字经济时代,人类社会经济活动高度依赖信息基础设施,而软件是信息基础设施的重要组成部分;另一方面,软件也将“重新定义”传统物理世界基础设施和社会经济基础设施,这将对人类社会的运行,甚至人类文明的进步起到重要的支撑作用。在这样的时代背景下,我们该如何理解“软件定义”的技术内涵及其带来的软件“基础设施化”?“软件定义”产生的背景是什么,它现在处于什么阶段,未来又将如何发展?本丛书将尝试对上述问题做一些解读。

一、无所不在的软件

从1946年第一台真正意义上的通用电子计算机ENIAC诞生至今,计算机已经历了70余年的发展历程。软件伴随着硬件而产生,其核心目的是帮助人们更方便、更高效地使用计算机。从技术角度看,软件的发展和演化有四个基本驱动力:追求更具表达能力、更符合人类思维模式、易构造、易演化的软件模型;支持高效率、高质量的软件开发;充分发挥硬件资源的能力,支持高效能、高可靠、易管理的软件运行;桥接异构性,实现多个应用系统之间的交互操作。

从软件制品的形态上看,软件发展大体上经历了三个阶段,即软硬一体化阶段,产品化、产业化阶段,以及网络化、服务化阶段。需要指出的是,这三个阶段尽管在时间上有先后顺序,但它们并不对立,也难以绝对分离,它们之间前后传承、交织,呈现出“包容式”的融合发展态势。

1.软硬一体化阶段

在计算机诞生后相当长的一段时间内,实际上并没有“软件”的概念,计算机主要通过用机器语言和汇编语言编写程序来直接操作硬件的方式运行,因此只有“程序”的概念,其应用则以军事领域为主。19世纪60年代前后,在高级程序设计语言出现后(1957年,IBM开发了第一个高级程序设计语言Fortran),“软件”才作为与“硬件”对应的词被提出,以程序和文档融合体的形态从硬件中分离出来,成为相对独立的制品。在这个时期,“高级语言程序+文档”是软件的主要展现形式,软件主要应用于科学工程计算领域和商业计算领域(如COBOL语言在银行业的广泛应用)。特别值得一提的是,在计算机发展史上具有里程碑意义的大型机——IBM 360系列机中,出现了最早的和硬件系统解耦的主机操作系统——OS/360操作系统。OS/360操作系统对IBM 360系列机的推广应用起到了非常重要的作用,同时也对日后的软件技术和软件产业产生了很大的影响。尽管OS/360操作系统还是和IBM硬件捆绑在一起销售,但人们已经开始意识到软件的重要性。也正是在这个时期,计算机作为一门学科开始形成,其学科体系不断完善,软件学科成型并得到快速发展,程序员也开始逐渐成为一个专门的职业。总体来看,在软硬一体化阶段,软件还是作为硬件的附属品存在,基本面向大型机/小型机设计,应用领域有限,其移植性和灵活性也比较差。

2.产品化、产业化阶段

1973年,Charles Thacker设计与实现了第一台现代个人计算机Xerox Alto(他后来也因此贡献而获得图灵奖),可以将其视作PC时代的开端。随着PC的广泛应用和软件的产品化,软件在计算机技术和计算机产业中的比重不断加大,地位越来越重要,由此催生了人类历史上第一波信息化浪潮,即以单机应用为主要特征的数字化阶段(信息化1.0)。拉里·埃里森创办的甲骨文公司,被认为是历史上第一个“纯粹的”软件公司;而比尔·盖茨创办微软公司,则是软件发展历程中的一个里程碑事件,它标志着软件开始正式成为一个独立产业,并开始应用于几乎所有领域。在这个时期,软件主要以面向单机的“复制”产品形态存在,通过付费版权的形式对外发售,几乎不再与硬件捆绑销售。软件逐渐颠覆了传统计算机产业“硬件为王”的格局(如Windows和Office成就了微软在PC时代的垄断地位),开始成为IT产业的主导者。同时,软件在各个行业领域的不断普及,也极大地影响甚至改变了人类生产和生活方式(如办公软件的出现,彻底改变了人类传统的办公方式)。作为一种“无污染、微能耗、高就业”的新兴产业,从这个时期起,软件产业开始大幅度提高国家整体的经济运行效率,其自身也在不断形成庞大的规模,拉动国民经济指数快速增长,软件产业逐渐成为衡量一个国家信息产业水平,甚至是综合国力的标志之一。

3.网络化、服务化阶段

自19世纪中期开始,互联网开始其商用进程并快速发展普及,同时也推动了软件从单机计算环境向网络计算环境的延伸,带来了第二波信息化浪潮,即以联网应用为主要特征的网络化阶段(信息化2.0),软件开始逐步进入网络化、服务化阶段,并覆盖社会经济生活的方方面面。在互联网环境下,软件的形态也发生了重大的变化,“软件即服务”(Software as a Service,SaaS)成为一种非常重要的网络化软件交付形态和使用方式。不同于传统的面向单机的复制形态,“软件即服务”使得人们不必再拥有软件产品的全部,而是可以通过互联网在任何时间、任何地点、任何设备上,直接与软件提供者连接并按需获取和使用软件的功能。例如,相对于传统单机版的Office,微软Office 365和Google Docs等均基于云端部署和提供服务,用户不必在本机安装和更新升级,只需通过客户端程序(如浏览器)连入互联网就可以访问和使用所需要的功能。这种“不求拥有,只求使用”的特性只有通过软件和互联网的结合才能实现,这也从一定程度上推动了软件产业从“以产品为中心”的制造业向“以用户为中心”的服务业转型。这一阶段软件形态的另一个重要变化是App化和应用商店模式。伴随着2010年前后移动互联网和智能终端设备的大量普及,应用商店模式得到了快速发展,在苹果Apple Store、谷歌Google Play以及大量第三方应用商店上,已经汇集了数十万应用开发者和他们开发的数百万的App,累计下载数百亿次。用户通过App来连接并访问互联网上的各种信息服务,实现线上社交和互联沟通(如微信和Facebook等);而应用商店则提供了一个平台,使得开发者和用户更紧密地连接在一起。互联网的快速发展和深度应用,催生了各种新的商业模式和盈利模式,并开始颠覆传统行业(如唱片业、交通行业、邮政等)。如果说,互联网的核心价值是“连接”,那么,软件就是实现“连接”的基础使能技术。

随着互联网及其延伸带来的信息技术的普及应用,软件不断渗透到人类生产和生活的各个角落,支持我们对各类资源进行更加有效的管理和使用,为我们提供更加便利的服务,提高生产效率和生活质量。正如互联网名人堂入选者、著名的网景通信公司创始人Marc Andreessen所说,软件正在吞噬整个世界(Software eats the world)!

当前,软件呈现出“基础设施化”的趋势。一方面,软件自身已成为信息技术应用基础设施的重要组成部分,以平台方式为各类信息技术应用和服务提供基础性能力和运行支撑。另一方面,软件正在“融入”到支撑整个人类经济社会运行的“基础设施”中,特别是随着互联网和其他网络(包括电信网、移动网、物联网等)的不断交汇融合,软件正在对传统物理世界基础设施和社会经济基础设施进行重塑和重构,通过软件定义的方式赋予其新的能力和灵活性,成为促进生产方式升级、生产关系变革、产业升级、新兴产业和价值链的诞生与发展的重要引擎。软件“赋能、赋值、赋智”的作用正在被加速和加倍放大,软件将对人类社会的运行和人类文明的发展进步起到重要支撑作用。正如C++编程语言发明者Bjarne Stroustrup所说,人类文明运行在软件之上(Our civilization runs on software)。

二、软件定义的时代

互联网和其他网络(包括电信网、移动网、物联网等)的交汇融合,进一步推动了人类社会与信息空间、物理世界的融合,形成新的人机物融合的环境。作为互联网的延伸,人机物融合标志着我们从终端互联、用户互联、应用互联开始走向万物互联,信息技术及其应用更加无处不在,“大数据”现象随之产生,信息化的第三波浪潮(信息化3.0),即以数据的深度挖掘与融合应用为主要特征的智能化阶段正在开启。

人机物融合环境下,信息基础设施蕴含着覆盖数据中心(云)、通信网络(网和边缘设备)和智能终端及物联网设备(端)的海量异构资源,而信息技术及其应用开始呈现出泛在化、社会化、情境化、智能化等新型应用形态与模式,需求多样且多变。人机物融合环境下的新型应用对软件“基础设施化”提出了新的要求:软件平台需要更好地凝练应用共性,更有效地管理资源,并根据频繁变化的应用需求和动态多变的应用场景对各类资源进行按需、深度、灵活的定制。而现有的软件平台主要面向传统计算模式的应用需求,存在很大的局限:纵向上看,各类资源紧密耦合难以分割,很难根据应用特征进行性能优化,难以对底层资源进行弹性可伸缩的调度及分配;横向上看,各类资源被锁定在单个应用系统的内部,形成大量的“信息孤岛”,难以实现互联互通。因此,现有软件平台的资源分配方式固定且有限,个性化定制能力严重不足,制约了人机物融合应用的发展。为了应对这些挑战,就需要实现海量异构资源的深度“软件定义”。

1.软件定义的兴起

“软件定义”是近年来信息技术的热点术语。一般认为,“软件定义”的说法始于“软件定义的网络”(Software-Defined Network,SDN)。在传统的网络体系结构中,网络资源配置大多是对各个路由器/交换机进行独立的配置,网络设备制造商不允许第三方开发者对硬件进行重新编程,控制逻辑都是以硬编码的方式直接写入路由器/交换机的,这种以硬件为中心的网络体系结构,复杂性高、扩展性差、资源利用率低、管理维护工作量大,无法适应上层业务扩展演化的需要。2008年前后,斯坦福大学提出“软件定义网络”,并研制了OpenFlow交换机原型。在OpenFlow中,网络设备的管理控制功能从硬件中被分离出来,成为一个单独的完全由软件形成的控制层,抽象化底层网络设备的具体细节,为上层应用提供了一组统一的管理视图和编程接口(Application Programming Interface,API),而用户则可以通过API对网络设备进行任意编程,从而实现新型的网络协议、拓扑架构,并且不需要改动网络设备本身,满足上层应用对网络资源的不同需求。2011年前后,SDN逐渐被广泛应用于数据中心的网络管理,并取得了巨大的成功,重新“定义”了传统的网络架构,甚至改变了传统通信产业结构。在SDN之后,又陆续出现了“软件定义”的存储、“软件定义”的环境、“软件定义”的数据中心等。可以说,针对泛在化资源的“软件定义一切(Software-Defined Everything,SDX)”正在重塑传统的信息技术体系,成为信息技术产业发展的重要趋势。

2.软件定义的本质

实现SDX的技术途径,就是把过去的一体化硬件设施打破,实现硬件资源的虚拟化和管理任务的可编程,即将传统的“一体式(Monolithic)”硬件设施分解为“基础硬件虚拟化及其API+管控软件”两部分:基础硬件通过API提供标准化的基本功能,进而新增一个软件层替换“一体式”硬件设施中实现管控的“硬”逻辑,为用户提供更开放、灵活的系统管控服务。采取这种技术手段的直接原因是互联网环境下新型应用对计算资源的共享需求,以云计算、大数据为代表的新型互联网应用要求硬件基础设施能够以服务的方式灵活地提供计算资源,而目前的计算资源管理、存储管理、网络管理在很大程度上是与应用业务脱离的,几乎都是手工管理、静态配置、极少变动、分割运行的,难以满足上层应用对计算资源个性定制、灵活调度、开放共享的需求。而要满足上述需求,就必须改变目前应用软件开发和资源管理各自分离的情况,使得计算资源能够根据应用需求自动管理、动态配置,因此,“软件定义”就成为一个自然选择。通过“软件定义”,底层基础设施架构在抽象层次上就能趋于一致。换言之,对于上层应用而言,不再有因异构的计算设备、存储设备、网络设备、安全设备导致的区别,应用开发者能根据需求更加方便、灵活地配置和使用这些资源,从而可以为云计算、大数据、移动计算、边缘计算、泛在计算等信息应用按需“定义”适用的基础资源架构。

需要指出的是,尽管“软件定义”是近年来出现的概念,但其依据的硬件资源虚拟化和管理任务可编程这两个核心原则一直都是计算机操作系统设计与实现的核心原则。计算机操作系统作为一种系统软件,向上为用户提供各种公共服务以控制程序运行、改善人机界面,向下管理各类硬件资源。因此,从用户的视角来看,操作系统就是一台“软件定义”的“计算机”;从软件研究者的视角来看,操作系统集“软件定义”之大成。就此而言,所有的SDX在本质上都没有脱离操作系统的三层架构的范畴,均符合硬件资源虚拟化与管理任务可编程的技术原理。

“软件定义”和软件化是两个不同的概念。软件化仅仅描述了根据业务需求来开发具有相应功能的软件应用系统的过程,关注的是行业知识、能力和流程等软件实现;而“软件定义”则是一种方法学及其实现的技术手段,其关注点在于将底层基础设施资源进行虚拟化并开放API,通过可编程的方式实现灵活可定制的资源管理,同时,凝练和承载行业领域的共性,以更好地适应上层业务系统的需求和变化。无论是“软件定义”的网络、“软件定义”的存储、“软件定义”的数据中心还是其他“SDX”,就其技术本质而言,均意味着构造针对“X”的“操作系统”。

未来的面向人机物融合的软件平台,将是对海量异构基础设施资源进行按需、深度“软件定义”而形成的泛在操作系统(Ubiquitous Operating System)。因此,“软件定义”是实现人机物融合环境下软件“基础设施化”的重要技术途径。

3.软件定义的机遇

人机物融合环境下,万物皆可互联,一切均可编程,“软件定义”成为信息化的主要发展脉络。随着人机物融合环境下基础设施资源发生的巨大变化,“软件定义”正在逐渐走出信息世界的范畴,其内涵和外延均产生了新的发展,面临着新的机遇。

“软件定义”不再局限于计算、存储、网络等传统意义上的基础硬件资源,还覆盖云、网、端的各类资源,包括电能、传感、平台、应用等软/硬件,以及数据和服务资源等。“软件定义”概念正在泛化,“软件定义”将实现从单一资源的按需管控到全网资源的互联互通的跃进,支持纵向全栈式、横向一体化的多维资源按需可编程,最终形成面向人机物融合应用的基础设施架构。

另一方面,“软件定义”正在向物理世界延伸。在“工业互联网”和“工业4.0”的发展蓝图中,“软件定义”将成为核心竞争力。例如,制造业需要实现硬件、知识和工艺流程的软件化,进而实现软件平台化,为制造业赋予数字化、网络化、定制化、智能化的新属性。伴随着“软件定义”的泛化与延伸,软件将有望为任意物理实体定义新的功能、效能与边界。

在IT不断泛在化并不断向物理世界延伸的基础上,“软件定义”将向人类社会延伸。通过“软件定义”的手段,可以为各领域的“虚拟组织”(如家庭、企业、政府等)打造更加高效、智能、便捷的基础设施。例如,“软件定义的城市”不仅将城市中各类信息/物理基础设施进行开放共享和互联互通,还需要为政务、交通、环境、卫生等社会公共服务部门构造数据流通交换和业务功能组合的API,支持这些部门的智能联动,实现动态高效的、精细化的城市治理。

4.软件定义的挑战

要实现更加全面、灵活和有深度的“软件定义”,软件研究者需要面对一系列的技术挑战。

●体系结构设计决策问题。“软件定义”本质上需要抽象其管控的资源,因此需要从体系结构角度来合理地划分和选择受管控元素的“粒度”和“层次”。随着“软件定义”概念的泛化,如何界定软件和硬件的功能,如何划分、组装、配置相应元素,成为值得探究的问题。

●系统质量问题。“软件定义”在现有的基础设施资源上加入了一个虚拟的“软件层”来实现对资源的灵活管控。这就需要合理平衡管理灵活化和虚拟化后带来的性能损耗(如与直接访问原系统相比)。同时,还需要考虑降低“软件层”的复杂性和故障率,并在故障发生时高效、精确地定位故障并进行快速修复,以保障整个系统的可靠性。“软件定义”本质上实现了应用软件和底层资源在逻辑上的解耦,因此,还需要保证这两部分在运行时刻可以分别进行独立的扩展和演化,并保持整个系统的稳定。

●系统安全问题。“软件定义”使得资源管理可编程,在带来开放性、灵活性的同时,也会带来更多的安全隐患。尤其是对于工业控制等安全攸关的领域来说,这些安全隐患可能会带来难以估量的财产和生命损失。因此,如何保障“软件定义”后系统的安全性,是“软件定义”的方案设计、实现和部署实施中必须考虑的问题。

●轻量级虚拟化技术。虚拟化实现了对硬件资源的“软化”,是“软件定义”的基础技术,但现有的以虚拟机为单位的技术应用于大量新型设备(如智能终端和物联网设备)后,难以满足其性能和实时性要求,因此需要发展轻量级虚拟化技术。已有的一些进展,如以Docker为代表的容器技术,可以对主流的hypervisor虚拟化技术进行发展和补充,从而简化对资源的管理和调度,大幅提高资源利用率和管理效率。

●原有系统到“软件定义”系统平滑过渡。为了使原有系统平滑过渡到“软件定义”系统,往往需要对已有的资源进行大幅度改造,甚至需要安装新的硬件并开发新的管理系统。这样会面临人力、时间、经济、风控等多方面因素。因此,实现平滑过渡也需要合理的方案。

●高度自适应的智能化软件平台。从软件技术角度看,未来人机物融合需要高度自适应的智能化软件平台。目前的软件平台大多是以硬件资源为中心的,如果基础设施层发生变化,软件平台必然会发生改变,软件平台上运行的应用往往也需要随之发生相应的改变。理想的方式是未来的软件平台具有预测和管理未来硬件资源变化的能力,能适应底层资源的变化而不改变自身和软件平台上运行的应用系统。学术界已经开始在这方面进行尝试和探索,例如,2014年,美国DARPA宣布支持“可运行一百年的软件系统”的研究项目,希望构造出能动态适应资源和运行环境变化的、长期稳定运行的软件系统(Resource Adaptive Software System)。

三、展望与寄语

如上所述,软件作为信息技术产业的核心与灵魂,发挥着巨大的使能作用和渗透辐射作用,在支撑人类社会运行和人类文明进步中将发挥重要的“基础设施”作用。“软件定义”则是实现软件“基础设施化”的重要方法学和关键技术途径,“软件定义”将成为推动信息技术和产业变革、引领其他行业信息化变革的新标志与新特征,开启人机物融合应用的新世界图景。

电子工业出版社与工业和信息化部电子第五研究所联合推出的这套“软件定义系列丛书”,基于对当前经济社会和信息技术发展趋势的认识和把握,针对“软件定义”这一热点,对其产生背景、技术内涵、价值意义、应用实践等进行阐述,剖析“软件定义”在IT行业、制造与服务行业、经济社会等诸多领域产生的作用和影响,这是一件很有意义的工作。这套丛书从科普的角度叙述“软件定义”的发展历程,同时伴有丰富的相关领域的典型案例,既可以作为信息技术从业人员和科研人员的参考书来加深对“软件定义”的理解和认识,也可以作为各地经信委等政府部门的工作人员、企业管理人员、创业者等的参考书,起到开阔眼界、辅助决策的作用。希望本套丛书的出版,能够为推动我国信息技术产业发展、建设制造强国与网络强国、建设数字中国、发展数字经济贡献一份力量。


梅宏
2019年12月

注:本文曾刊载于《中国软件和信息服务业发展报告(2018年)》,作为本丛书序,略有修改补充。 fvAxLZJFUmV+7xWH8huiS4Bcg37zQdBWsAwilUFUybl5H8bpyYVmV2bXij4XU2C6

点击中间区域
呼出菜单
上一章
目录
下一章
×