进入21世纪以来,信息技术及其应用飞速发展,已经广泛覆盖并深入渗透到了社会生活的方方面面。特别地,近十年来,以云计算、大数据、移动互联网、物联网、人工智能、区块链为代表的新一代信息技术推动信息技术应用进入跨界融合的繁荣期,开始呈现出“网构化、泛在化、智能化”的新趋势,并不断催生新平台、新模式和新思维。
可以说,在某种意义上,信息技术及其深度应用已经推动人类社会步入到一个新的发展阶段。对这样一个新的发展阶段,可以从不同的视角去考察和认知。例如,从基础设施视角,可视为是以互联网为核心主干,移动网、广电网、物联网等多种网络融合形成新型泛在化基础设施,并支撑规模化跨界创新应用服务模式为特征的“互联网+”时代;从计算模式视角,可视为是以支持计算、存储、网络、数据、应用等资源的集约式管理和服务化使用为特征的云计算时代;从信息资源视角,则可视为是将数据作为新型战略资源并以数据的深度挖掘和融合应用为特征的大数据时代;从信息应用视角,则可视为是以人工智能技术为基础,支持感知、认知到决策为特征的智能化时代。
然而,如果从使能技术的视角看,软件技术在信息技术中则始终处于“灵魂”地位,所有新的信息技术应用、平台和服务模式,均离不开软件技术作为基础支撑;更为重要的是,在数字经济时代,软件技术已经成为企业的核心竞争力,不仅引领信息技术产业的变革,在很多传统领域(如汽车、能源、制造、零售等)中的存在比重和重要性也在不断加大,在支持这些传统领域产业结构升级换代甚至颠覆式创新的过程中起到核心关键作用,并进一步加速重构了全球分工体系和竞争格局。特别地,作为新一轮科技革命和产业变革的标志,德国的“工业4.0”和美国的“工业互联网”,以及我国的“制造强国战略”,均将软件技术作为发展重点。无所不在的软件,正在走出信息世界的范畴,开始深度渗透到物理世界和人类社会,全面发挥“赋能、赋值、赋智”的重要作用,甚至开始扮演着重新定义整个世界图景的重要角色。在这个意义上,我们正在进入一个“软件定义一切”的时代!
“软件定义一切”已然成为一种客观需求,并呈现快速发展态势,其主要体现形式将是软件“基础设施化”。这不仅是因为在数字经济时代,人类社会经济活动高度依赖信息基础设施,而软件是信息基础设施的重要构成成分;另一方面,软件也将“重新定义”传统物理世界基础设施和社会经济基础设施,对人类社会的运行甚至人类文明的进步将起到重要的支撑作用。在这样的时代背景下,我们该如何理解“软件定义”的技术内涵及其带来的软件“基础设施化”?“软件定义”产生的背景,现在处于什么阶段,未来又将如何发展?本文尝试作一些解读。
01
无所不在的软件
从1946年第一台真正意义上的通用电子计算机ENIAC诞生,计算机已经历了70余年的发展历程。软件伴随着硬件而产生,其核心目的是帮助人们更方便、更高效地使用计算机。从技术角度看,软件的发展和演化有四个基本驱动力,即,追求更具表达能力、更符合人类思维模式、易构造、易演化的软件模型;支持高效率和高质量的软件开发;充分发挥硬件资源的能力,支持高效能、高可靠和易管理的软件运行;桥接异构性,实现多个应用系统之间的互操作。
从软件制品的形态上看,软件发展大体上经历了三个阶段,即软硬一体化阶段、产品化阶段和网络化服务化阶段。当然,需要指出的是,这三个阶段尽管在时间上有先后,但并不对立,也难绝对分离,而是前后传承、交织,呈现出“包容式”的融合发展态势。
在计算机诞生后的相当长一段时期内,实际上并没有“软件”的概念,计算机的运行是通过用机器语言和汇编语言编写程序的方式来直接操作硬件,即只有“程序”的概念,应用则以军事领域为主。约到1950年代末1960年代初,在高级程序设计语言出现后(1957年,IBM开发了第一个高级程序设计语言Fortran),“软件”才作为与“硬件”对应的词被提出,以程序和文档融合体的形态从硬件中分离出来,成为相对独立的制品。在这个时期,软件以“高级语言程序+文档”作为主要展现形式,应用主要为科学工程计算领域和商业计算领域(如COBOL语言在银行业的广泛应用)。特别值得一提的是,在计算机发展史上具有里程碑意义的大型机—IBM 360系列机中,出现了最早的和硬件系统解耦的主机操作系统—OS/360。OS/360对IBM 360系列机的推广应用起到了非常重要的作用,同时也对日后的软件技术和产业产生了很大的影响。尽管OS/360操作系统还是和IBM硬件捆绑一起销售,但人们已经开始意识到软件的重要性。也正是在这个时期,计算机作为一门专门学科开始形成并完善其学科体系,软件学科成型并得到快速发展,程序员也开始逐渐成为一个专门的职业。总体来看,在软硬一体化阶段,软件还是作为硬件的附属品存在,基本均是面向大型机/小型机设计,应用领域有限,移植性和灵活性也比较差。
1973年, Charles Thacker设计与实现了第一台现代个人计算机Xerox Alto(他后来也因此贡献而获图灵奖),可以视作是PC时代的发端。随着PC的广泛应用和软件产品化,软件在计算机技术和产业中的存在比重不断加大,地位更加重要,催生了人类历史上信息化的第一波浪潮,即以单机应用为主要特征的数字化阶段(信息化1.0)。拉里·埃里森创办的甲骨文公司,被认为是历史上第一个“纯粹的”软件公司;而比尔·盖茨创办微软公司,则是软件发展历程中一个里程碑事件,标志着软件开始正式成为一个独立产业,并从此开始应用于几乎所有领域。在这个时期,软件主要以面向单机的“拷贝”产品形态存在,通过付费版权形式对外发售,几乎不再与硬件捆绑销售。软件逐渐颠覆了传统计算机产业“硬件为王”的格局(如Windows和Office成就了微软在个人计算机时代的垄断地位),开始成为IT产业的主导者。同时,软件在各个行业领域的不断普及,也极大地影响甚至改变了人类生产和生活方式(例如,办公软件的出现,彻底改变了人类传统的办公方式)。作为一种“无污染、微能耗、高就业”的新型产业,从这个时期起,软件产业开始大幅度地提高国家整体经济运行效率,其自身也在不断形成庞大规模,拉动国民经济指数快速增长,逐渐成为衡量一个国家信息产业水平甚至是综合国力的标志之一。
1990年代中期开始,互联网开始其商用进程并快速发展普及,同时也推动了软件从单机计算环境向网络计算环境的延伸,带来了信息化的第二波浪潮,即以联网应用为主要特征的网络化阶段(信息化2.0),软件开始逐步进入到网络化、服务化的发展阶段,并覆盖到社会经济生活的方方面面。在互联网环境下,软件的形态也发生了重大的变化, “软件即服务”(Software as a Service)开始成为一种非常重要的网络化软件交付形态和使用方式。不同于传统面向单机的拷贝形态,“软件即服务”使得人们不必再拥有软件产品的全部,而是通过互联网在任何时间、任何地点、任何设备上,直接与软件提供者进行连接并按需获取和使用软件的功能。例如,相对于传统单机版的Office,微软Office 365和Google Docs等均基于云端部署和提供服务,用户不必在本机安装和更新升级,只需通过客户端程序(如浏览器)连入互联网就可以访问和使用所需要的功能。这种“不求拥有,只求使用”的特性,也只有软件和互联网的结合才能实现,并从一定程度上推动了软件产业从“以产品为中心”的制造业向“以用户为中心”的服务业转型。互联网时代软件形态的另一个重要变化则是App化和应用商店模式。伴随着2010年前后移动互联网和智能终端设备的大量普及,应用商店模式得到了快速发展,在苹果Apple Store、谷歌Google Play、以及大量第三方应用商店上,已经汇集了数十万应用开发者和数百万的Apps,累积下载数百亿次。用户通过App来连接并访问互联网上的各种信息服务,实现线上社交和互联沟通(如微信和Facebook等);而应用商店则提供了一个平台,使得开发者和用户更紧密地连接在一起。互联网的快速发展和深度应用,催生了各种新的商业模式和赢利模式,并开始颠覆传统行业(如唱片业、交通出行、邮政等)。如果说,互联网的核心价值是“连接”,那么,软件就是实现“连接”的基础使能技术。
随着互联网及其延伸带来信息技术的普及应用,软件“无所不在”,正在不断渗透到人类生产和生活的各个角落,支持我们对各类资源更加有效的管理和使用,为我们提供更加自然和便利的服务,提高生产效率和生活质量。正如互联网名人堂入选者、著名的网景公司(NetScape)创始人Marc Andreessen所说,软件正在吞噬人类世界(Software eats the world!)[1]。
当前,软件正在呈现出 “基础设施化”的趋势。一方面,软件自身已成为信息技术应用基础设施的重要构成成分,以平台方式为各类信息技术应用和服务提供基础性能力和运行支撑。另一方面,软件正在 “融入”到支撑整个人类经济社会运行的“基础设施”中,特别是随着以互联网和其他网络(包括电信网、移动网、物联网等)的不断交汇融合,软件正在对传统物理世界基础设施和社会经济基础设施进行重塑和重构,通过软件定义的方式赋予其新的能力和灵活性,成为促进生产方式升级、生产关系变革、产业升级、新兴产业和价值链的诞生与发展的重要引擎。软件“赋能、赋值、赋智”的作用正在被加速和加倍放大,对人类社会的运行和人类文明的发展进步起到重要支撑作用。正如C++编程语言发明者Bjarne Stroustrup所说,人类文明运行在软件之上(Our civilization runs on software)[2]。
02
软件定义的时代
互联网和其他网络(包括电信网、移动网、物联网等)的交汇融合,进一步推动了人类社会、信息空间、物理世界的融合,形成新的人机物融合计算环境。作为互联网的延伸,人机物融合标志着我们从终端互联、用户互联、应用互联开始走向万物互联,信息技术及其应用更加无处不在,“大数据”现象随之产生,信息化的第三波浪潮(信息化3.0),即以数据的深度挖掘与融合应用为主要特征的智能化阶段,正在开启。
人机物融合环境下,信息基础设施蕴含着覆盖数据中心(云)、通信网络(网和边缘设备)和智能终端及物联网设备(端)的海量异构资源,而信息技术及其应用开始呈现出泛在化、社会化、情境化、智能化等新型应用形态与模式,需求多样且多变。人机物融合环境下的新型应用对软件“基础设施化”提出了新的要求:软件平台需要更好地凝练应用共性,更有效地管理资源,并根据频繁变化的应用需求和动态多变的应用场景对各类资源作按需、深度、灵活的定制。而现有软件平台主要面向传统计算模式的应用需求,存在很大的局限:纵向上看,各类资源紧密耦合难以分割,很难根据应用特征进行性能优化和底层资源的弹性可伸缩地调度及分配;横向上看,各类资源被锁定在单个应用系统的内部,形成大量的“信息孤岛”难以实现互连互通。因此,现有软件平台的资源分配方式固定且有限,个性化定制能力严重不足,制约了人机物融合应用的发展。为了应对这些挑战,就需要实现海量异构资源的深度“软件定义”。
“软件定义”是近年来信息技术的热点术语。一般认为,软件定义的说法始于“软件定义的网络” (Software-Defined Network,SDN)[3]。传统的网络体系结构,网络资源配置大多是对每个路由器/交换机进行独立的配置,网络设备制造商不允许第三方开发者对硬件进行重新编程,控制逻辑都是以硬编码的方式直接写入交换机或者路由器的,这种“硬件为中心”的网络体系结构,复杂性高、扩展性差、资源利用率低、管理维护工作量大,无法适应上层业务扩展演化的需要。2008年前后,斯坦福大学提出“软件定义网络”并研制了OpenFlow交换机原型。OpenFlow中,网络设备的管理控制功能从硬件中被分离出来成为一个单独的完全由软件形成的控制层,抽象了底层网络设备的具体细节,为上层应用提供了一组统一的管理视图和编程接口(Application Programming Interface,简称API),而用户则可以通过API对网络设备进行任意的编程从而实现新型的网络协议、拓扑架构而不需改动网络设备本身,满足上层应用对网络资源的不同需求。2011年前后,SDN逐渐被广泛应用于数据中心的网络管理,并取得了巨大的成功,重新“定义”了传统的网络架构,甚至改变了传统通信产业结构。在SDN之后,又陆续出现了软件定义的存储、软件定义的环境、软件定义的数据中心等。可以说,针对泛在化资源的“软件定义一切(Software-Defined Everything,SDX)”正在重塑传统的信息技术体系,成为信息技术产业发展的重要趋势。
实现SDX的技术途径,就是把过去的一体化硬件设施打破,实现“硬件资源的虚拟化”和“管理任务的可编程”,即,将传统的“一体式(monolithic)”硬件设施分解为“基础硬件虚拟化及其API + 管控软件”两部分[4]:基础硬件通过API提供标准化的基本功能,进而在其上新增一个软件层替换“一体式”硬件中实现管控的“硬”逻辑,为用户提供更开放、灵活的系统管控服务。采取这种技术手段的直接原因,主要是互联网环境下新型应用对计算资源的共享需求,以云计算、大数据为代表的新型互联网应用要求硬件基础设施能够以服务的方式灵活提供计算资源,而目前的计算资源管理、存储管理、网络管理在很大程度上是与应用业务脱离的,几乎都是手工管理、静态配置、极少变动、分割运行,难以满足上层应用对计算资源个性定制、灵活调度、开放共享的需求。而要满足上述需求,就必须改变目前应用软件开发和资源管理各自分离的情况,使得计算资源能够根据应用需求自动管理、动态配置,因此,“软件定义”就成为一个自然选择。通过软件定义,底层基础设施架构在抽象层次上就能趋于一致。换言之,对于上层应用而言不再有异构的计算设备、存储设备、网络设备、安全设备导致的区别,应用开发者能根据需求更加方便、灵活地来配置和使用这些资源,从而可以为云计算、大数据、移动计算、边缘计算、泛在计算等信息应用按需“定义”出适用的基础资源架构。
需要指出的是,尽管“软件定义”是近期出现的热点概念,但其基于的资源虚拟化和管理可编程这两个核心原则,一直都是计算操作系统设计与实现的核心原则。计算机操作系统作为一种系统软件,向上为应用和用户和提供各种公共服务控制程序运行、改善人机界面,向下管理各类硬件资源。因此,从计算机系统用户的视角来看,操作系统就是一台软件定义的“计算机”;从软件研究者的视角,操作系统体现了“软件定义”之集大成[4]。就这个意义上而言,所有的SDX在本质上都没有脱离操作系统的三层架构的范畴,均符合“硬件资源虚拟化”与“管理任务可编程”的技术原理。
软件定义和软件化是两个不同的概念。“软件化”仅仅描述了根据业务需求来开发具有相应功能的软件应用系统的过程,关注的是行业知识、能力和流程等的软件实现;而“软件定义”则是一种方法学及其实现技术手段,其关注点在于将底层基础设施资源进行虚拟化并开放API,通过可编程的方式实现灵活可定制的资源管理,同时,凝练和承载行业领域的共性,以更好适应上层业务系统的需求和变化。无论是软件定义的网络、软件定义的存储、软件定义的数据中心还是其他“SDX”,就其技术本质而言,均意味着构造针对“X”的“操作系统”。
未来的面向人机物融合的软件平台,将是对海量异构基础设施资源进行按需、深度软件定义而形成的“泛在”操作系统(Ubiquitous Operating System)[5]。因此,软件定义是实现人机物融合环境下软件“基础设施化”的重要技术途径。
人机物融合环境下,万物皆可互联,一切均可编程,正在成为信息化的主要发展脉络。随着人机物融合环境下基础设施资源发生了巨大变化, 软件定义正在逐渐走出信息世界的范畴,内涵和外延上均产生了新的发展,面临着新的机遇。
软件定义不再仅限于计算、存储、网络等传统意义的基础硬件资源,还覆盖云网端的各类资源,包括电能、传感、平台、应用等软硬件与数据和服务资源等。软件定义概念正在“泛化”,将实现从单一资源的按需管控到全网资源的互连互通的跃变,支持纵向全栈式、横向一体化的多维资源按需可编程,最终形成面向人机物融合应用的基础设施架构。
另一方面,软件定义正在向物理世界延伸。在“工业互联网”、“工业4.0”和我国“制造强国战略”的发展蓝图中,软件定义将成为核心竞争力和支撑技术。例如,制造业需要实现“硬件”、知识和工艺流程的软件化,进而实现软件的平台化,为制造业赋予数字化、网络化、定制化、智能化的新属性。伴随着软件定义的泛化与延伸,软件将有望为任意物理实体定义新的功能、效能与边界。
在IT的泛在化并不断向物理世界延伸的基础上,软件定义将向人类社会延伸。通过“软件定义”的手段,可以为各领域的“虚拟组织”(如家庭、企业、政府等)打造更加高效、智能和便捷的基础设施。例如,“软件定义的城市”不仅将城市中各类信息/物理基础设施开放共享和互连互通,还需要为政务、交通、环境、卫生等社会公共服务部门构造出数据流通交换和业务功能组合的API,支持这些部门的智能联动,实现动态高效的精细化的城市治理。
要实现更加全面、灵活和深度的软件定义,软件研究者需要解决一系列的技术挑战。
·
体系结构设计决策问题。软件定义本质上需要对其管控的资源进行抽象,因此需要在体系结构角度来合理地划分和选择受管元素的“粒度”和“层次”。特别地,随着软件定义的泛化,如何界定软、硬件的功能划分并组装、配置相应元素,是值得探究的问题。
·
·
·
系统质量问题。软件定义在现有的基础设施资源之上加入了一个虚拟的“软件层”来实现对资源的灵活管控。这就需要合理平衡管理灵活性和“虚拟化”后带来的性能损耗(如与直接访问原系统相比)。同时,还需要考虑降低“软件层”的复杂性和故障率,并在故障发生时高效精确地定位故障并进行快速修复,以保障整个系统的可靠性。特别地,软件定义本质上实现了应用软件和底层资源在逻辑上的解耦,还需要保证在运行时刻这两部分可以分别进行独立的扩展和演化,并保持整个系统的稳定。
·
·
·
系统安全问题。软件定义使得资源管理可编程,在带来开放性、灵活性的同时,也可能会带来更多的安全隐患。特别是对于工业控制等安全攸关领域来说,这些安全隐患可能会带来难以难以估量的财产和生命损失。因此,如何保障软件定义后系统的安全性,是软件定义的方案设计、实现和部署实施中必须考虑的问题。
·
·
·
轻量的虚拟化技术。虚拟化实现了对硬件资源的软化,是软件定义的基础技术,但现有以虚拟机为单位的技术过于重载,应用于大量新型设备(如智能终端和物联网设备)后,难以满足性能和实时性要求,就需要发展轻量级虚拟化技术。已有的一些进展,例如以Docker为代表的容器技术,可以对现有主流的hypervisor虚拟化技术形成重要发展和补充,可简化对资源的管理和调度,大幅提高资源利用率和管理效率。
·
·
·
原有系统到软件定义系统平滑过渡。为了使得原有系统能平滑过渡到软件定义的系统,往往需要对已有的资源进行大幅度的改造,甚至需要安装新的硬件和需开发新的管理系统。这就面临着人力、时间、经济、风控等因素。因此,实现这个平滑过渡也需要合理的方案。
·
·
·
高度自适应的智能化软件平台。从软件技术角度看,未来人机物融合需要高度自适应的智能化软件平台。目前的平台大多是以硬件资源为中心的,如果基础设施层发生变化,软件平台就必须发生改变,平台上运行的应用往往也需要随之发生相应改变。一个理想方式是,未来的软件平台具有预测和管理未来硬件资源变化的能力,能适应底层资源的变化而不改变自身和其上运行的应用系统。学术界已经开始在这方面进行了尝试和探索,例如,2014年美国DARPA宣布支持“可运行一百年的软件系统”的研究项目,希望构造出能动态适应资源和运行环境变化的长期稳定运行的软件系统(Resource Adaptive Software System)[6]。
·
03
展望与寄语
如上所述,软件作为信息技术产业的核心与灵魂,发挥着巨大的使能作用和渗透辐射作用,在支撑人类社会运行和人类文明进步中将发挥重要的“基础设施”作用。“软件定义”则是实现软件“基础设施化”的重要方法学和关键技术途径,将成为推动信息技术和产业变革、并进而引领其他行业信息化变革的新标志与新特征,开启人机物融合应用的新世界图景。
电子工业出版社与工业和信息化部电子第五研究所联合推出的这套“软件定义”系列丛书, 基于对当前经济社会和信息技术发展趋势的认识和把握,针对“软件定义”这个热点,对其产生背景、技术内涵、价值意义、应用实践等进行阐述,剖析“软件定义”在 IT 行业、制造与服务行业、经济社会等诸多领域产生的作用和影响,是一件很有意义的工作。这套丛书从科普的角度叙述“软件定义”的发展历程,同时伴有丰富的相关领域典型案例,既可以作为信息技术从业人员和科研人员的参考书来加深对“软件定义”的理解和认识,也可以作为各地经信委等政府部门的工作人员、企业管理人员、创业者等的参考书,起到开阔眼界、辅助决策的作用。希望本套丛书的出版,能够为推动我国信息技术产业发展、建设制造强国与网络强国、建设数字中国、发展数字经济贡献一份积极力量。
楼主最近还看过
进入21世纪以来,信息技术及其应用飞速发展,已经广泛覆盖并深入渗透到了社会生活的方方面面。特别地,近十年来,以云计算、大数据、移动互联网、物联网、人工智能、区块链为代表的新一代信息技术推动信息技术应用进入跨界融合的繁荣期,开始呈现出“网构化、泛在化、智能化”的新趋势,并不断催生新平台、新模式和新思维。
可以说,在某种意义上,信息技术及其深度应用已经推动人类社会步入到一个新的发展阶段。对这样一个新的发展阶段,可以从不同的视角去考察和认知。例如,从基础设施视角,可视为是以互联网为核心主干,移动网、广电网、物联网等多种网络融合形成新型泛在化基础设施,并支撑规模化跨界创新应用服务模式为特征的“互联网+”时代;从计算模式视角,可视为是以支持计算、存储、网络、数据、应用等资源的集约式管理和服务化使用为特征的云计算时代;从信息资源视角,则可视为是将数据作为新型战略资源并以数据的深度挖掘和融合应用为特征的大数据时代;从信息应用视角,则可视为是以人工智能技术为基础,支持感知、认知到决策为特征的智能化时代。
然而,如果从使能技术的视角看,软件技术在信息技术中则始终处于“灵魂”地位,所有新的信息技术应用、平台和服务模式,均离不开软件技术作为基础支撑;更为重要的是,在数字经济时代,软件技术已经成为企业的核心竞争力,不仅引领信息技术产业的变革,在很多传统领域(如汽车、能源、制造、零售等)中的存在比重和重要性也在不断加大,在支持这些传统领域产业结构升级换代甚至颠覆式创新的过程中起到核心关键作用,并进一步加速重构了全球分工体系和竞争格局。特别地,作为新一轮科技革命和产业变革的标志,德国的“工业4.0”和美国的“工业互联网”,以及我国的“制造强国战略”,均将软件技术作为发展重点。无所不在的软件,正在走出信息世界的范畴,开始深度渗透到物理世界和人类社会,全面发挥“赋能、赋值、赋智”的重要作用,甚至开始扮演着重新定义整个世界图景的重要角色。在这个意义上,我们正在进入一个“软件定义一切”的时代!
“软件定义一切”已然成为一种客观需求,并呈现快速发展态势,其主要体现形式将是软件“基础设施化”。这不仅是因为在数字经济时代,人类社会经济活动高度依赖信息基础设施,而软件是信息基础设施的重要构成成分;另一方面,软件也将“重新定义”传统物理世界基础设施和社会经济基础设施,对人类社会的运行甚至人类文明的进步将起到重要的支撑作用。在这样的时代背景下,我们该如何理解“软件定义”的技术内涵及其带来的软件“基础设施化”?“软件定义”产生的背景,现在处于什么阶段,未来又将如何发展?本文尝试作一些解读。
01
无所不在的软件
从1946年第一台真正意义上的通用电子计算机ENIAC诞生,计算机已经历了70余年的发展历程。软件伴随着硬件而产生,其核心目的是帮助人们更方便、更高效地使用计算机。从技术角度看,软件的发展和演化有四个基本驱动力,即,追求更具表达能力、更符合人类思维模式、易构造、易演化的软件模型;支持高效率和高质量的软件开发;充分发挥硬件资源的能力,支持高效能、高可靠和易管理的软件运行;桥接异构性,实现多个应用系统之间的互操作。
从软件制品的形态上看,软件发展大体上经历了三个阶段,即软硬一体化阶段、产品化阶段和网络化服务化阶段。当然,需要指出的是,这三个阶段尽管在时间上有先后,但并不对立,也难绝对分离,而是前后传承、交织,呈现出“包容式”的融合发展态势。
在计算机诞生后的相当长一段时期内,实际上并没有“软件”的概念,计算机的运行是通过用机器语言和汇编语言编写程序的方式来直接操作硬件,即只有“程序”的概念,应用则以军事领域为主。约到1950年代末1960年代初,在高级程序设计语言出现后(1957年,IBM开发了第一个高级程序设计语言Fortran),“软件”才作为与“硬件”对应的词被提出,以程序和文档融合体的形态从硬件中分离出来,成为相对独立的制品。在这个时期,软件以“高级语言程序+文档”作为主要展现形式,应用主要为科学工程计算领域和商业计算领域(如COBOL语言在银行业的广泛应用)。特别值得一提的是,在计算机发展史上具有里程碑意义的大型机—IBM 360系列机中,出现了最早的和硬件系统解耦的主机操作系统—OS/360。OS/360对IBM 360系列机的推广应用起到了非常重要的作用,同时也对日后的软件技术和产业产生了很大的影响。尽管OS/360操作系统还是和IBM硬件捆绑一起销售,但人们已经开始意识到软件的重要性。也正是在这个时期,计算机作为一门专门学科开始形成并完善其学科体系,软件学科成型并得到快速发展,程序员也开始逐渐成为一个专门的职业。总体来看,在软硬一体化阶段,软件还是作为硬件的附属品存在,基本均是面向大型机/小型机设计,应用领域有限,移植性和灵活性也比较差。
1973年, Charles Thacker设计与实现了第一台现代个人计算机Xerox Alto(他后来也因此贡献而获图灵奖),可以视作是PC时代的发端。随着PC的广泛应用和软件产品化,软件在计算机技术和产业中的存在比重不断加大,地位更加重要,催生了人类历史上信息化的第一波浪潮,即以单机应用为主要特征的数字化阶段(信息化1.0)。拉里·埃里森创办的甲骨文公司,被认为是历史上第一个“纯粹的”软件公司;而比尔·盖茨创办微软公司,则是软件发展历程中一个里程碑事件,标志着软件开始正式成为一个独立产业,并从此开始应用于几乎所有领域。在这个时期,软件主要以面向单机的“拷贝”产品形态存在,通过付费版权形式对外发售,几乎不再与硬件捆绑销售。软件逐渐颠覆了传统计算机产业“硬件为王”的格局(如Windows和Office成就了微软在个人计算机时代的垄断地位),开始成为IT产业的主导者。同时,软件在各个行业领域的不断普及,也极大地影响甚至改变了人类生产和生活方式(例如,办公软件的出现,彻底改变了人类传统的办公方式)。作为一种“无污染、微能耗、高就业”的新型产业,从这个时期起,软件产业开始大幅度地提高国家整体经济运行效率,其自身也在不断形成庞大规模,拉动国民经济指数快速增长,逐渐成为衡量一个国家信息产业水平甚至是综合国力的标志之一。
1990年代中期开始,互联网开始其商用进程并快速发展普及,同时也推动了软件从单机计算环境向网络计算环境的延伸,带来了信息化的第二波浪潮,即以联网应用为主要特征的网络化阶段(信息化2.0),软件开始逐步进入到网络化、服务化的发展阶段,并覆盖到社会经济生活的方方面面。在互联网环境下,软件的形态也发生了重大的变化, “软件即服务”(Software as a Service)开始成为一种非常重要的网络化软件交付形态和使用方式。不同于传统面向单机的拷贝形态,“软件即服务”使得人们不必再拥有软件产品的全部,而是通过互联网在任何时间、任何地点、任何设备上,直接与软件提供者进行连接并按需获取和使用软件的功能。例如,相对于传统单机版的Office,微软Office 365和Google Docs等均基于云端部署和提供服务,用户不必在本机安装和更新升级,只需通过客户端程序(如浏览器)连入互联网就可以访问和使用所需要的功能。这种“不求拥有,只求使用”的特性,也只有软件和互联网的结合才能实现,并从一定程度上推动了软件产业从“以产品为中心”的制造业向“以用户为中心”的服务业转型。互联网时代软件形态的另一个重要变化则是App化和应用商店模式。伴随着2010年前后移动互联网和智能终端设备的大量普及,应用商店模式得到了快速发展,在苹果Apple Store、谷歌Google Play、以及大量第三方应用商店上,已经汇集了数十万应用开发者和数百万的Apps,累积下载数百亿次。用户通过App来连接并访问互联网上的各种信息服务,实现线上社交和互联沟通(如微信和Facebook等);而应用商店则提供了一个平台,使得开发者和用户更紧密地连接在一起。互联网的快速发展和深度应用,催生了各种新的商业模式和赢利模式,并开始颠覆传统行业(如唱片业、交通出行、邮政等)。如果说,互联网的核心价值是“连接”,那么,软件就是实现“连接”的基础使能技术。
随着互联网及其延伸带来信息技术的普及应用,软件“无所不在”,正在不断渗透到人类生产和生活的各个角落,支持我们对各类资源更加有效的管理和使用,为我们提供更加自然和便利的服务,提高生产效率和生活质量。正如互联网名人堂入选者、著名的网景公司(NetScape)创始人Marc Andreessen所说,软件正在吞噬人类世界(Software eats the world!)[1]。
当前,软件正在呈现出 “基础设施化”的趋势。一方面,软件自身已成为信息技术应用基础设施的重要构成成分,以平台方式为各类信息技术应用和服务提供基础性能力和运行支撑。另一方面,软件正在 “融入”到支撑整个人类经济社会运行的“基础设施”中,特别是随着以互联网和其他网络(包括电信网、移动网、物联网等)的不断交汇融合,软件正在对传统物理世界基础设施和社会经济基础设施进行重塑和重构,通过软件定义的方式赋予其新的能力和灵活性,成为促进生产方式升级、生产关系变革、产业升级、新兴产业和价值链的诞生与发展的重要引擎。软件“赋能、赋值、赋智”的作用正在被加速和加倍放大,对人类社会的运行和人类文明的发展进步起到重要支撑作用。正如C++编程语言发明者Bjarne Stroustrup所说,人类文明运行在软件之上(Our civilization runs on software)[2]。
02
软件定义的时代
互联网和其他网络(包括电信网、移动网、物联网等)的交汇融合,进一步推动了人类社会、信息空间、物理世界的融合,形成新的人机物融合计算环境。作为互联网的延伸,人机物融合标志着我们从终端互联、用户互联、应用互联开始走向万物互联,信息技术及其应用更加无处不在,“大数据”现象随之产生,信息化的第三波浪潮(信息化3.0),即以数据的深度挖掘与融合应用为主要特征的智能化阶段,正在开启。
人机物融合环境下,信息基础设施蕴含着覆盖数据中心(云)、通信网络(网和边缘设备)和智能终端及物联网设备(端)的海量异构资源,而信息技术及其应用开始呈现出泛在化、社会化、情境化、智能化等新型应用形态与模式,需求多样且多变。人机物融合环境下的新型应用对软件“基础设施化”提出了新的要求:软件平台需要更好地凝练应用共性,更有效地管理资源,并根据频繁变化的应用需求和动态多变的应用场景对各类资源作按需、深度、灵活的定制。而现有软件平台主要面向传统计算模式的应用需求,存在很大的局限:纵向上看,各类资源紧密耦合难以分割,很难根据应用特征进行性能优化和底层资源的弹性可伸缩地调度及分配;横向上看,各类资源被锁定在单个应用系统的内部,形成大量的“信息孤岛”难以实现互连互通。因此,现有软件平台的资源分配方式固定且有限,个性化定制能力严重不足,制约了人机物融合应用的发展。为了应对这些挑战,就需要实现海量异构资源的深度“软件定义”。
“软件定义”是近年来信息技术的热点术语。一般认为,软件定义的说法始于“软件定义的网络” (Software-Defined Network,SDN)[3]。传统的网络体系结构,网络资源配置大多是对每个路由器/交换机进行独立的配置,网络设备制造商不允许第三方开发者对硬件进行重新编程,控制逻辑都是以硬编码的方式直接写入交换机或者路由器的,这种“硬件为中心”的网络体系结构,复杂性高、扩展性差、资源利用率低、管理维护工作量大,无法适应上层业务扩展演化的需要。2008年前后,斯坦福大学提出“软件定义网络”并研制了OpenFlow交换机原型。OpenFlow中,网络设备的管理控制功能从硬件中被分离出来成为一个单独的完全由软件形成的控制层,抽象了底层网络设备的具体细节,为上层应用提供了一组统一的管理视图和编程接口(Application Programming Interface,简称API),而用户则可以通过API对网络设备进行任意的编程从而实现新型的网络协议、拓扑架构而不需改动网络设备本身,满足上层应用对网络资源的不同需求。2011年前后,SDN逐渐被广泛应用于数据中心的网络管理,并取得了巨大的成功,重新“定义”了传统的网络架构,甚至改变了传统通信产业结构。在SDN之后,又陆续出现了软件定义的存储、软件定义的环境、软件定义的数据中心等。可以说,针对泛在化资源的“软件定义一切(Software-Defined Everything,SDX)”正在重塑传统的信息技术体系,成为信息技术产业发展的重要趋势。
实现SDX的技术途径,就是把过去的一体化硬件设施打破,实现“硬件资源的虚拟化”和“管理任务的可编程”,即,将传统的“一体式(monolithic)”硬件设施分解为“基础硬件虚拟化及其API + 管控软件”两部分[4]:基础硬件通过API提供标准化的基本功能,进而在其上新增一个软件层替换“一体式”硬件中实现管控的“硬”逻辑,为用户提供更开放、灵活的系统管控服务。采取这种技术手段的直接原因,主要是互联网环境下新型应用对计算资源的共享需求,以云计算、大数据为代表的新型互联网应用要求硬件基础设施能够以服务的方式灵活提供计算资源,而目前的计算资源管理、存储管理、网络管理在很大程度上是与应用业务脱离的,几乎都是手工管理、静态配置、极少变动、分割运行,难以满足上层应用对计算资源个性定制、灵活调度、开放共享的需求。而要满足上述需求,就必须改变目前应用软件开发和资源管理各自分离的情况,使得计算资源能够根据应用需求自动管理、动态配置,因此,“软件定义”就成为一个自然选择。通过软件定义,底层基础设施架构在抽象层次上就能趋于一致。换言之,对于上层应用而言不再有异构的计算设备、存储设备、网络设备、安全设备导致的区别,应用开发者能根据需求更加方便、灵活地来配置和使用这些资源,从而可以为云计算、大数据、移动计算、边缘计算、泛在计算等信息应用按需“定义”出适用的基础资源架构。
需要指出的是,尽管“软件定义”是近期出现的热点概念,但其基于的资源虚拟化和管理可编程这两个核心原则,一直都是计算操作系统设计与实现的核心原则。计算机操作系统作为一种系统软件,向上为应用和用户和提供各种公共服务控制程序运行、改善人机界面,向下管理各类硬件资源。因此,从计算机系统用户的视角来看,操作系统就是一台软件定义的“计算机”;从软件研究者的视角,操作系统体现了“软件定义”之集大成[4]。就这个意义上而言,所有的SDX在本质上都没有脱离操作系统的三层架构的范畴,均符合“硬件资源虚拟化”与“管理任务可编程”的技术原理。
软件定义和软件化是两个不同的概念。“软件化”仅仅描述了根据业务需求来开发具有相应功能的软件应用系统的过程,关注的是行业知识、能力和流程等的软件实现;而“软件定义”则是一种方法学及其实现技术手段,其关注点在于将底层基础设施资源进行虚拟化并开放API,通过可编程的方式实现灵活可定制的资源管理,同时,凝练和承载行业领域的共性,以更好适应上层业务系统的需求和变化。无论是软件定义的网络、软件定义的存储、软件定义的数据中心还是其他“SDX”,就其技术本质而言,均意味着构造针对“X”的“操作系统”。
未来的面向人机物融合的软件平台,将是对海量异构基础设施资源进行按需、深度软件定义而形成的“泛在”操作系统(Ubiquitous Operating System)[5]。因此,软件定义是实现人机物融合环境下软件“基础设施化”的重要技术途径。
人机物融合环境下,万物皆可互联,一切均可编程,正在成为信息化的主要发展脉络。随着人机物融合环境下基础设施资源发生了巨大变化, 软件定义正在逐渐走出信息世界的范畴,内涵和外延上均产生了新的发展,面临着新的机遇。
软件定义不再仅限于计算、存储、网络等传统意义的基础硬件资源,还覆盖云网端的各类资源,包括电能、传感、平台、应用等软硬件与数据和服务资源等。软件定义概念正在“泛化”,将实现从单一资源的按需管控到全网资源的互连互通的跃变,支持纵向全栈式、横向一体化的多维资源按需可编程,最终形成面向人机物融合应用的基础设施架构。
另一方面,软件定义正在向物理世界延伸。在“工业互联网”、“工业4.0”和我国“制造强国战略”的发展蓝图中,软件定义将成为核心竞争力和支撑技术。例如,制造业需要实现“硬件”、知识和工艺流程的软件化,进而实现软件的平台化,为制造业赋予数字化、网络化、定制化、智能化的新属性。伴随着软件定义的泛化与延伸,软件将有望为任意物理实体定义新的功能、效能与边界。
在IT的泛在化并不断向物理世界延伸的基础上,软件定义将向人类社会延伸。通过“软件定义”的手段,可以为各领域的“虚拟组织”(如家庭、企业、政府等)打造更加高效、智能和便捷的基础设施。例如,“软件定义的城市”不仅将城市中各类信息/物理基础设施开放共享和互连互通,还需要为政务、交通、环境、卫生等社会公共服务部门构造出数据流通交换和业务功能组合的API,支持这些部门的智能联动,实现动态高效的精细化的城市治理。
要实现更加全面、灵活和深度的软件定义,软件研究者需要解决一系列的技术挑战。
·
体系结构设计决策问题。软件定义本质上需要对其管控的资源进行抽象,因此需要在体系结构角度来合理地划分和选择受管元素的“粒度”和“层次”。特别地,随着软件定义的泛化,如何界定软、硬件的功能划分并组装、配置相应元素,是值得探究的问题。
·
·
·
系统质量问题。软件定义在现有的基础设施资源之上加入了一个虚拟的“软件层”来实现对资源的灵活管控。这就需要合理平衡管理灵活性和“虚拟化”后带来的性能损耗(如与直接访问原系统相比)。同时,还需要考虑降低“软件层”的复杂性和故障率,并在故障发生时高效精确地定位故障并进行快速修复,以保障整个系统的可靠性。特别地,软件定义本质上实现了应用软件和底层资源在逻辑上的解耦,还需要保证在运行时刻这两部分可以分别进行独立的扩展和演化,并保持整个系统的稳定。
·
·
·
系统安全问题。软件定义使得资源管理可编程,在带来开放性、灵活性的同时,也可能会带来更多的安全隐患。特别是对于工业控制等安全攸关领域来说,这些安全隐患可能会带来难以难以估量的财产和生命损失。因此,如何保障软件定义后系统的安全性,是软件定义的方案设计、实现和部署实施中必须考虑的问题。
·
·
·
轻量的虚拟化技术。虚拟化实现了对硬件资源的软化,是软件定义的基础技术,但现有以虚拟机为单位的技术过于重载,应用于大量新型设备(如智能终端和物联网设备)后,难以满足性能和实时性要求,就需要发展轻量级虚拟化技术。已有的一些进展,例如以Docker为代表的容器技术,可以对现有主流的hypervisor虚拟化技术形成重要发展和补充,可简化对资源的管理和调度,大幅提高资源利用率和管理效率。
·
·
·
原有系统到软件定义系统平滑过渡。为了使得原有系统能平滑过渡到软件定义的系统,往往需要对已有的资源进行大幅度的改造,甚至需要安装新的硬件和需开发新的管理系统。这就面临着人力、时间、经济、风控等因素。因此,实现这个平滑过渡也需要合理的方案。
·
·
·
高度自适应的智能化软件平台。从软件技术角度看,未来人机物融合需要高度自适应的智能化软件平台。目前的平台大多是以硬件资源为中心的,如果基础设施层发生变化,软件平台就必须发生改变,平台上运行的应用往往也需要随之发生相应改变。一个理想方式是,未来的软件平台具有预测和管理未来硬件资源变化的能力,能适应底层资源的变化而不改变自身和其上运行的应用系统。学术界已经开始在这方面进行了尝试和探索,例如,2014年美国DARPA宣布支持“可运行一百年的软件系统”的研究项目,希望构造出能动态适应资源和运行环境变化的长期稳定运行的软件系统(Resource Adaptive Software System)[6]。
·
03
展望与寄语
如上所述,软件作为信息技术产业的核心与灵魂,发挥着巨大的使能作用和渗透辐射作用,在支撑人类社会运行和人类文明进步中将发挥重要的“基础设施”作用。“软件定义”则是实现软件“基础设施化”的重要方法学和关键技术途径,将成为推动信息技术和产业变革、并进而引领其他行业信息化变革的新标志与新特征,开启人机物融合应用的新世界图景。
电子工业出版社与工业和信息化部电子第五研究所联合推出的这套“软件定义”系列丛书, 基于对当前经济社会和信息技术发展趋势的认识和把握,针对“软件定义”这个热点,对其产生背景、技术内涵、价值意义、应用实践等进行阐述,剖析“软件定义”在 IT 行业、制造与服务行业、经济社会等诸多领域产生的作用和影响,是一件很有意义的工作。这套丛书从科普的角度叙述“软件定义”的发展历程,同时伴有丰富的相关领域典型案例,既可以作为信息技术从业人员和科研人员的参考书来加深对“软件定义”的理解和认识,也可以作为各地经信委等政府部门的工作人员、企业管理人员、创业者等的参考书,起到开阔眼界、辅助决策的作用。希望本套丛书的出版,能够为推动我国信息技术产业发展、建设制造强国与网络强国、建设数字中国、发展数字经济贡献一份积极力量。