站内检索

面向互联网的软件发展
——访中国科学院院士梅宏
作者:王玲 摄影/张琨 发表时间:2014年09月17日

  进入新世纪,互联网的快速发展和延伸引发了信息技术和信息产业的新一轮变革,把软件和互联网紧密结合在一起,互联网环境下软件即服务的理念已经开始改变软件研发乃至整个产业的格局,云计算、移动互联网、物联网、大数据等新型计算和应用模式的兴起更是给软件技术带来了一系列新的挑战。

  对中国来说,如何应对新的挑战和机遇,在软件技术核心领域实现真正自主创新,成为业内人士深入思考的问题。就此,《高科技与产业化》专访了中国科学院院士、北京大学信息科学技术学院院长梅宏教授。

  历史回望

  本刊记者:请您简要介绍一下软件技术和产业发展的历史。

  梅宏:计算机软件是计算机系统执行某项任务所需的程序、数据及文档的集合,是计算机系统的“灵魂”。从本质来讲,软件是客观事物的一种虚拟反映,是知识的凝炼和体现,是知识在计算系统中的固化。

  如果用还原论的观点看,信息技术及其产业的基础可以分成微电子和软件两部分,分别代表了系统的硬件和软件构成的基本要素,在此基础上我们可以构造计算系统、通信系统、各类网络和应用系统等。现在,软件已经无处不在,成为人们生活、工作不可或缺的组成。

  其实在计算机刚刚发明的时候,并没有“软件”这个术语,最初计算机的运行是通过输入指令序列操作硬件,那时叫计算机程序。直到1950年代末,“软件”作为与“硬件”对应的词才被人们创造出来,在1960年代才开始广为流行。

  早期软件是作为计算机的配套附属品捆绑出售的,移植性和灵活性很差。以IBM/360计算机为代表,软件开始与硬件分离,成为相对独立的成分,不再是硬件的附属品,兼容性就成为必须具备的特性,也就是说,新的硬件系统出来以后,原先的软件系统还能在其上运行,从而最大限度地保留软件开发的投入。

  软件从计算机中分立出来,使得计算机系统的灵活性和领域适用性得到了很大的提升,极大地促进了计算机系统的应用。然而,在软件重要性日益凸显的同时,软件也变得越来越复杂。图灵奖得主、IBM的研究者Brooks曾经写了一本名为《人月神话》的书,内容源于他在IBM公司任System/360计算机及其庞大的软件系统OS/360项目经理时的实践经验与教训,其中有两个著名的论点:一是向一个已经延期的项目中投入更多的人力资源只会让它更延后(此即“人月神话”的主要出处);二是没有一种策略、技术或者技巧可以极大地提高程序员的生产力(此即著名的软件开发“没有银弹”的论点)。这实际上是阐述了控制软件复杂性及提升其开发效率的难度。

  说到真正的软件产业,还是以美国微软的崛起为代表。在这之前做软件虽然能卖钱,但并没有真正形成大的产业。微软把软件变成了一种产业,从此软件成为信息产业中非常重要的一部分,软件产业也成为信息产业中的支柱性产业。到了现在,随着互联网的全面渗透、各种终端、特别是移动终端的高速普及等等,软件已成为一种普遍存在,产业发展非常迅猛。

  本刊记者:这样来看,软件实际上是硬件功能的拓展,是软件使得硬件功能得到最大程度的发挥,使得计算机系统的功能更加强大。

  梅宏:一般来说,硬件的复杂度相对软件而言要低。实际上,硬件作为一个平台,提供了共性的、基础性的计算能力,然后通过软件更高效地发挥底层各种硬件资源所提供的计算能力,解决复杂问题。从这个意义上说,操作系统可视为构架在硬件资源上的软件虚拟机,但这个软件虚拟机提供了比硬件裸机更大的使用灵活性。经过长期的发展,软件已成为一门独立的学科分支。软件技术研究主要涉及两个方面,一个是怎样高效率地开发出高质量的软件,即软件工程的研究;第二个就是怎样把一台硬件机器变成一台软件机器,即软件系统技术的研究,基本途径是逐层的虚拟化技术和系统优化技术。

  本刊记者:在这个过程中,软件的实现形式发生了什么样的变化?

  梅宏:软件的发展大体分成这么几个阶段,早期称为机器语言或汇编语言时代,人们使用低级的机器指令和汇编语句编写程序,这种程序代码可以直接在硬件机上执行。后来出现了高级语言,人们可以在较高的抽象层次上用高级语句编程,再通过编译系统将高级语言程序自动变成机器能执行的代码。高级语言大大提高了程序编写的效率,也提高了编程质量。1960年代末,由于软件开发人员极度短缺、开发效率和软件质量不能满足用户的需求,对软件的需求增长超过了供应能力,出现了软件危机,软件工程概念应运而生。软件工程试图用工程的观点,将软件作为一种产品来对待,研究软件的模型和结构、软件开发方法学、软件开发过程,以及软件开发工具等,支持高效率和高质量的软件开发。

  在软件技术的发展历程中,软件范型的发展变迁是一条很重要的主线,而所谓的软件范型是从软件工程师(或者程序员)视角看到的软件模型及其构造原理,是软件技术体系的核心。在过去的40多年,软件范型经历了无结构、结构化、面向对象、面向构件/面向服务等的变迁,每次软件范型的变迁,都会导致软件技术的一次螺旋上升。软件范型的演变,反映了推动计算机软件技术发展的几个基本动因——追求更具表达能力、更符合人类思维模式、易构造、易演化的软件模型,支持高效率和高质量的软件开发,支持高效能、高可靠和易管理的软件运行等。

  软件新范型

  本刊记者:在互联网时代,软件范型有什么特征?

  梅宏:概括来说,目前的软件范型在编程层面仍然是面向对象的编程,在系统构造层面是基于构件的软件开发,而从网络分布视角看是面向服务的体系结构,这也体现了在互联网时代软件发展的一个趋势。

  本刊记者:您的研究团队也提出了网构软件(Internetware)的概念,这是一种新的软件范型吗?

  梅宏:准确地说,这是北京大学和南京大学的同行在2000年讨论973项目建议的时候共同提出的一个概念。我们当时认为,互联网对软件技术发展带来了一系列挑战和机遇,使得软件正在呈现一种新的形态,蕴涵了一种新的软件范型,我们将其称为网构软件。

  从上个世纪90年代末期开始,互联网的蓬勃发展使整个信息产业的基础设施发生了变化,互联网早期仅仅是作为ISP(信息服务提供者),人们可以通过网络沟通、交流、传递信息。然而随着进一步的发展,人们并不满足于此,进而希望互联网成为计算能力的提供者。在某种意义上,这意味着将互联网视为一种全球泛在的计算基础设施,形成一个互联网计算平台。

  在单机时代,计算机需要软件来管理。如果把互联网也当作一台计算机(Internet as a computer)来看的话,同样需要有软件把它管理起来。当时我们就在想,如果把互联网平台作为一台计算机来看,其软件应该“长成什么样”?我们需要研究这种新型软件与传统软件相比有哪些不同的特点,当时我们凝练了网构软件的5个性质:自主性、协同性、情景性、涌现性和演化性。同时也指出,可信性保障是网构软件不可或缺的质量需求。

  从技术上来讲,这样的软件是网状结构的,运行在网络上,各个软件实体相互间通过协同机制进行跨网络的互连、互通、协作和联盟,从而形成一种与WWW类似的软件Web(software Web)。当时找不出一个英文单词能很好地描述它,因此我们自己还生造了一个英文词:Internetware,作为网构软件的英文翻译。

  当时还有一个出发点,就是希望在互联网时代,我们中国应该有自己的声音。应该说,互联网催生了“创新”时代,互联网产业发展迅速,概念、热点频出。互联网正在演化为一台全球泛在计算机,从技术和应用角度都出现很多新的概念和术语。例如,网格计算(Grid Computing)试图将互联网连接的计算和存储资源整合并统一管理,云计算(Cloud Computing)则将范围缩小到了数据中心;服务计算(Service Computing)为互联网上的应用/程序制定了规范化的交互协议,支持“不求拥有,但求使用”的新型计算模式;智慧地球(Smarter Planet)希望将互联网与物联网互联互通,成为地球的“大脑”;如此等等,还有很多新术语。而往往是西方出现了什么术语和概念,我们的中文术语翻译就紧随其后出现。当时我们就想为什么一定要跟随别人?都是面向互联网,我们能否有自己的想法,走出一条我们自己的路?我们也关注到,当时国际上并没有一个概念是从软件技术的角度来看待互联网,而网构软件正是从软件的视角来观察互联网计算。虽然现在回过头来看,我们的道路也并非完全革命性的东西,和其他的概念/术语在内涵和外延方面也均存在一定交叠和相似的地方,都是传统技术面向新的基础设施和应用需求的发展,也都可归为互联网计算,但至少在当时,从软件的视角去看互联网,我们是第一个。我们希望从这个视角做出有国际影响的东西,最低目标,我们希望网构软件的研究能够成为国际互联网计算中的一个“中国流派”。

  本刊记者:具体来讲,网构软件是怎样构成的?

  梅宏:具体而言,网构软件应该符合我前面提到的5个基本性质。概括些说,网构软件包括一组分布于Internet环境下各个节点的、具有主体化特征的软件实体,以及一组用于支撑这些软件实体以各种交互方式进行协同的连接子。这些实体能够感知外部环境的变化,通过体系结构演化的方法(主要包括软件实体与连接子的增加、减少与演化、以及系统拓扑结构的变化等)来适应外部环境的变化,展示上下文适应的行为,从而使系统能够以足够满意度来满足用户的多样性目标。

  网构软件这种不同于传统软件的形态,在微观上表现为实体之间按需协同的行为模式,在宏观上表现为实体自发形成应用领域的组织模式。相应地,网构软件的开发活动呈现为通过将原本“无序”的基础软件资源组合为“有序”的基本系统,随着时间推移和新应用需求的增加,这些系统和资源在功能、质量、数量上的变化,导致它们再次呈现出“无序”的状态,需要新的一轮组合。这种由“无序”到“有序”的过程往复循环,以一种自底向上、由内向外的螺旋方式实现系统的演化。

  本刊记者:听起来像是有智慧和思考能力的软件,能够根据环境自主适应。

  梅宏:有点这样的意思,这是软件技术发展的目标,当然现在还远不能达到,离真正智能的软件还有漫长的路要走。目前的状态只能是称为软件具有较好的自适应能力。还有一个问题需要提到,网构软件具有高度的复杂性,一方面,由于软件是客观世界的虚拟反映,要把复杂的世界映射到软件空间来运行,而客观世界的复杂性也导致了软件的复杂性,这是与生俱来的;另一方面,软件技术本身也在不断演化中,技术的演化也带来了系统实现的复杂性。软件工程想做的事情就是要能够有效地控制软件系统的复杂性,但至少现在而言,完全解决复杂性问题可能还做不到,软件技术研究的目标是希望软件开发既快又好,多快好省。

  本刊记者:现在网构软件概念是否已经被认同?

  梅宏:我们是2000年提出网构软件这个概念,2002年正式获得国家973项目的支持开展相关研究工作,2009年得到第二期973项目支持,到现在已经十几年了。经过十余年的努力,我们在网构软件的研究与实践方面已取得了一些进展,形成了一套以软件体系结构为中心的技术体系。网构软件研究在国内外均形成了较好影响,国内有很多机构开展了网构软件的研究,国家863计划和国家自然科学基金都支持了不少关于网构软件的研究课题。我们也通过多种方式和途径宣传和推广网构软件理念,受到国际同行关注,如:多次在国际会议上受邀作关于网构软件的特邀报告;和IBM研究院建立了以网构软件研究为主题的联合实验室,开展了合作研究;连续举办了5届网构软件国际研讨会,数十位海外学者参会;Internetware这个生造的英文词也已经被人接受,在国际会议或者期刊上正式出现,最近我们还在IEEE Computer发表了一篇系统介绍Internetware的文章。不过,我还是想强调一下,不管怎么叫,网构软件本质上还是软件,仍然符合软件技术长期以来包容式发展的规律,既有传承,也有演进和创新,我们只是用这个新的术语来命名互联网时代的新的软件范型。

  创新软件生态系统

  本刊记者:提到软件工程,其实北京大学一直是国内软件工程研究的先行者,从软件工程环境青鸟系统到后来的构件化软件开发平台和中间件系统,北京大学的工作一直定位在难度很大的基础软件领域。

  梅宏:我想这是科研机构尤其是北京大学这样的学校应该做的事情。早期我国信息产业走的是一条“空心化”的发展路线,核心的CPU、操作系统、数据库和软件工具等基础软硬件都依赖国外,这对国家的信息安全是一个威胁,也使得我们的产业发展长期处于价值链的低端。但进入新世纪以来,国家开始发力支持这些核心关键技术的研发,在863计划和973计划中均部署了一系列关于CPU和基础软件的研究课题,特别是启动了科技重大专项“核高基”,以期在基础软硬件等核心技术领域有所突破,建立自主技术体系。

  北京大学很早也一直在基础软件领域开展研究工作。在我国软件领域的开拓者之一——杨芙清院士带领下,上世纪60年代末至70年代初,研制了我国第一台百万次集成电路计算机操作系统,1970年代中期,又推出了中国第一个全部用高级语言编写的操作系统,1980年代,进入软件工程领域的研究,1990年代研制了“大型软件开发环境青鸟系统”系列。在新世纪,北京大学软件团队引领了我国软件构件技术的研究工作,倡导和推行基于构件/构架的软件工业化生产技术和模式,研制了“基于构件复用的软件生产线系统”系列,构件化应用服务器PKUAS,基于Internet、以构件库为核心的软件开发平台等,发展了以体系结构为中心的软件构件技术体系,开拓了软件构件技术的中国实践之路,网构软件的研究也是在此基础上的升华。

  总体而言,我们的工作更关注软件领域的基础性和“使能(enabling)”技术,探讨新的理论和技术、方法,为软件企业提供合适的运行平台和开发工具,应该算“源头”上创新。

  当前,随着互联网时代开源软件、全球化开发、群体开发等新型软件开发模式的兴起,整个软件产业的生态系统正在发生改变,人们合作的模式也发生了深刻变化,同时,也极大地改变了我们的研究方式,使得创新以开放协同的方式发生。对网构软件的研究,也是符合这种发展趋势的一个自然选择。

  本刊记者:您认为中国应该如何应对互联网带来的挑战,建立自己的软件生态系统?

  梅宏:我认为在发展思路上,应遵循软件技术“包容式发展”的基本规律,以“开放、兼容、分阶段”的技术路线,在清楚认识我们所处的技术阶段的基础上,从关键且可行的技术和产业切入点入手,“从外到内”、“从易到难”,逐步实现互联网时代基础软件等核心技术的自主可控。特别是应充分利用我们拥有的“应用门槛”及用户和应用规模特色,创建应用模式(或规模)驱动的生态系统,并通过核心技术的适时替换和演化来健全和健壮整个生态系统。

  在发展重点上,应根据国家和产业需求,以及现有技术基础、人才储备和用户规模,选择尚未形成技术定型和市场垄断、或技术竞争门槛相对不高的热点领域入手,如新型网络计算操作系统和相关工具、移动终端操作系统、软件可信性保障技术和工具等,并结合我国以智慧城市建设等为代表的新一轮信息化工程,实现技术和应用的互动,建立开放、自主、可控的“产学研用”生态系统。

  本刊记者:这样的软件生态系统,具体应该通过怎样的路径去实现?

  梅宏:在当前,由互联网及其延伸所带来的技术和产业热点很多,如云计算、大数据、物联网、移动互联网等,抛开其中的“炒作”因素不说,这些新的应用模式或应用需求也确实给计算技术带来了一系列挑战,就软件技术而言,也面临新的机遇和挑战,出现了许多新的值得探究的技术方向。比如说,在云计算方面,基于虚拟化的云资源管理技术和平台,基于软件服务的云—云/云—端协同技术,面向领域或用户需求的云定制与扩展技术,面向云—端融合新型应用模式的云操作系统,云应用的安全和隐私保护等。在移动互联网方面,移动终端操作系统的深度定制与优化技术,HTML5性能优化技术,移动端软件自适应技术,APP开发与管理技术等;在物联网方面,宽带无线传感器网络核心技术,大规模数据获取和传输技术,多源异质数据融合、存储与处理技术,情境感知与推理技术等;在大数据方面,面向大数据的统一建模与管理技术,新型通用数据管理系统,数据清洗等数据质量保障技术,数据挖掘算法与工具等。这里只是一些简单罗列,并不具系统性,也难免挂一漏万。

  本刊记者:如何针对这样的挑战和需求来培养软件技术人才?

  梅宏:应该说,在网络时代无处不在的软件应用对软件工程人才的培养带来了新的需求,我们需要大量的软件人才,我们更需要按照不同的行业领域需求定制软件人才;我们需要掌握核心技术的高端人才,我们也需要大量从事一般性编程工作的“软件蓝领”。这需要跨行业领域的学科交叉和知识融合,也需要在夯实理论技术基础后的实践环节加强。实际上,我国已经开始了这方面的实践探索,10年前教育部就启动了示范性软件学院建设,对培养软件人才和促进软件产业发展起到了积极而重要的作用。此外,随着云计算、移动计算等新型应用模式的兴起和推广,随着大数据时代的到来,对从事云平台管理和云服务开发、移动应用创新和开发的软件工程师,以及从事数据获取、管理、处理和应用的数据工程师的需求日益增大,这也需要我们相应的人才培养能够跟上。

首页投稿广告关于我们联系我们

版权:《高科技与产业化》编辑部版权所有 京ICP备12041800号

地址:北京市海淀区中关村北四环西路33号 邮编:100080

联系电话:(010)82626611-6618 传真:(010)82627674 联系邮箱:hitech@mail.las.ac.cn