中科院院士李未:云计算为物联网提供解决方案
在第四届中国云计算大会上,中国科学院院士李未分享了对云计算和物联网的看法,他表示:“云计算为物联网提供解决方案。”
“我认为云计算实质在哪里?实质对用户屏蔽有关计算、存储、通信和控制的底层操作细节,目的为用户提供简单易用,安全可靠的服务。用户变得很方便,为什么用户变得方便了?因为对用户所有的实现过程,前部对用户屏蔽,想要什么取什么,这是云计算的一个基本思想。比如说我们大家都了解的事,云计算提出一个以服务为纲的体系结构,第一个就是软件即服务,终端用户无需关心使用哪些特定应用软件和资源直接得到所需服务。平台即服务就是应用软件无需关心操作系统以及中间件的底层模块具体操作和运行,直接获得所需要的功能。什么是基础设施及服务,平台无需关心硬件设备的细节,直接得到所要求的计算和处理资源,这是最著名的三个S。”
“云计算为各种物联网实现,特别是软件系统实现提供解决方案,作用是一种解决方案,理念是服务用户,技术是怎么样实现最核心的东西要屏蔽那些下层的东西。”
以下是李未演讲实录:
李未:大家下午好!我今天要谈的题目叫做云计算和群体软件工程。最近几年大家关心云计算物联网,我想和大家一起讨论。
什么是物联网,1999年MIT教授在使用电子标签时候首先提出了,物联网是一个什么东西大家都知道,是面向特定领域和行业的,拥有超量数据的复杂信息应用系统。物联网在各个方面,比如在智能交通,智能电网,现代物流,医疗健康等等方面,这些都是今后要使用物联网技术完成。物联网实际上是未来信息社会的一个基础设施,我们现在目标搞工业信息化,工业信息化标志性成果,在战略行业里都实现物联网。也是我们战略新兴产业建设的切入点。突破关键技术,拥有自主知识产权今后信息领域主要任务。
物联网怎么样实现?云计算提出一个实现方法,云计算是一种基于互联网的大众参与的计算模式,计算资源包括计算能力存储能力,交互能力等等,是动态可伸缩,被虚拟化以服务方式提供。这是李院士的定义,什么是云计算。
我认为云计算实质在哪里?实质对用户屏蔽有关计算、存储、通信和控制的底层操作细节,目的为用户提供简单易用,安全可靠的服务。用户变得很方便,为什么用户变得方便了?因为对用户所有的实现过程,前部对用户屏蔽,想要什么取什么,这是云计算的一个基本思想。比如说我们大家都了解的事,云计算提出一个以服务为纲的体系结构,第一个就是软件即服务,终端用户无需关心使用哪些特定应用软件和资源直接得到所需服务。平台即服务就是应用软件无需关心操作系统以及中间件的底层模块具体操作和运行,直接获得所需要的功能。什么是基础设施及服务,平台无需关心硬件设备的细节,直接得到所要求的计算和处理资源,这是最著名的三个S。
云计算为各种物联网、特别是软件系统的实现提供解决方案,作用是一种解决方案,理念是服务用户,技术是怎么样实现最核心的东西要屏蔽那些下层的东西。
下面重点谈一下所谓群体软件工程。云计算使用户变得很简单,需要什么直接获取就行,但是获取整个过程是十分复杂的。这部分怎么样才能够完成,这是咱们在软件界所有人要付出巨大劳动满足这些用户使用者的需求,但是特别是对于基于云计算的社会服务系统,比如刚才讲各种互联网,还有面向行业超量信息,我认为他们和过去我们做的这些软件有一些不同,不同的主要三方面,具有超变散的特点。
首先是“超”,所有的物联网由云计算方法实现的物联网成千上万,上亿人使用,所以都是超大规模的系统,比如大量感知受控设备,同时在网上进行海量信息和通信进程大约10的12次方,兆级的每秒这么多进程来进行。第三是超量非结构化动态数据。
这些系统不论智能电网,智能交通这些东西都在不断的不间断持续演化和部署,不能换版本不可以,信息不断增加,有什么改进都是硬性中进行改进。这是和过去相比,一个版本可以用很长时间,这个不同,叫做变。
第三是“散”,即使物联网涉及各种各样的部门、领域,多产业和多地域。比如美国的CYBER系统,覆盖很多学科领域,服务于数十万科研和教育人员高度分布的环境。这种要求和这种量对软件工程,对系统的,过去传统的软件工程提出一个挑战。大家想想传统软件工程到现在为止有什么特点?我认为至少三点,第一是精英化,各种著名软件公司在里面工作的人都毕业于优秀大学,至少硕士毕业优等生,我说的精英不是天才,是经过系统有效训练的人,高等教育的人。
第二是计划性,要做一个软件预先规划需求,需求可以提的很清楚,把需求不断展开,做到细节,整个开发过程封闭,有的时候我们增加一些测试,总体上的开发不开放。这是传统软件。传统软件工程面对超量信息系统遇到麻烦。世界最好软件公司是Windows,WindowsVista功能模块6千万个,代码是6千万行,多少人开发?用9千熟练的专业人士,微软骨干耗时5年完成的Vista,这个量应该说在传统软件工程框架之下,这是杰作。
咱们现在讨论的,各位专家今天上午或者以前会议上讨论的云计算社会服务系统规模远超过Windows9千万行代码量。我举例子,比如说Facebook,每个月60亿张照片上传,如果把每张照片和个人信息情况关联起来,我们提出四面体全信息标注和处理方法,经过三年实验,把一张照片,这张照片用快门,技术角度,还有文字描述,和这张照片谁的信息,谁照的,什么时候,四方面信息都标注连接起来,一张照片需要12分钟。如果按照一万人开发做这个事的话,需要41年才完成,但是咱用了吗?没有。FACEBOOK如何解决这个问题,采用群体模式,FACEBOOK8.5亿用户,这些用户至少一半对照片标注,8.5亿人每人负责自己照片或者朋友照片一个半小时可以完成,这是面对超量信息新解决办法,从软件工程角度是重要的东西。以前是精英化团体,一万人精英开发一个Windows或者VISTA这样的系统,现在在处理大量的超量10的18次方信息,8亿人同时上就可以解决超量问题。
第二个例子,天天得益的APPStort和安卓Market,这些应用程序多少人参加?APPStort70万人,Windows是1万人,现在70万人,4年内完成60万应用,这是过去从来没有过的现象。过去为什么软件贵?现在都是精英经过专门研究,现在达到至少应用软件行业,应用程序达到极大非常。这个例子说明什么,群体开发模式解决,也是一个用群体开发模式解决超大规模建设人力不足问题另外一个很有说服力的例子。但是目前APPStore技术是群体开发初级阶段。
第三个例子TOPcoder,25万名开发人员加入到其开发社区。美国在线委托Topcoder开发通信后端系统。把系统分52部分,按照传统软件工程要一年完成,他们用这个群体参加方式,有效组织后,5个月就完成,而且质量很高。最终产品完全达到客户要求,并且程序中每一千行代码只有0.98漏洞,低于业内的要求。
物联网和在云计算的思想指导下实现的软件系统是超量信息系统,咱们能不能借鉴在FACEBOOK,在APPSTORE这些东西,这种软件开发能不能进入云计算模式下超量复杂系统全面开发使用群体这种方式来开发一个复杂系统。这是我这次想和大家讨论的问题。
群体进入之后大家马上想到,解决超量问题是不假,但是产生新问题,安全问题,安全问题成了大问题。我认为群体软件工程是这样一种新软件工程,面对超量信息系统采用群体竞争的研发方式产生安全可靠软件的这样的一种新的工程,这就是群体软件工程。
群体软件工程核心理论是什么?刚才我们克服的传统软件工程几点。开发过程从封闭走向开放,开发人员从精英走向大众。另外就是开发组织从工厂走向社区。开发方法从机械工程转向社会。
现在看开发软件系统和我们设计研制一个大型客机一样,从自顶向下设计,分模块组装,专业人士制造,训练有素。现在开发面向群社会服务这样的系统,像建设城市一样,我们所有城市建设在过去基础上逐渐堆垒起来的,随便挖天安门主路不可能,整个区消灭重新建设也不可能。所以社会工程更多思想将渗入超量信息研究,特别是云思想指导下超量信息系统构造的东西。
开发体制怎么样,两个都要,有群体性要精英,群体性和大众化解决软件超量开发问题,这是群体性竞争机制对软件资源形成,组合、测试、维护生产有基础性作用。精英是计划性和精英化整体规划和管理,精英化的管理机制对软件的构架、组织法则有宏观的决策作用。就是中国特色的两点,市场是基础作用,政府起宏观调控作用。一方面是大众,另一方面是精英,两个优势都可以发挥出来。
开发原则是什么?应该是使用者是设计者、开发者、维护者,在APP STORE应用层面做到,所有开发这些应用的同时自己是使用者。原则是这样的。
基本内容至少包括下面几方面。一个是因为要群体参加,又要保证安全,所以整个的体系结构必须是多层体系结构。屏蔽原理,群件组合服务原理,用户身份多重性原理,开发者竞争选择原理,竞争性测试原理,对抗性安全原理。为什么是多层结构?咱们传统软件系统,比如我们以前请Windows,我不是说Windows不好,我天天用,我指过去阶段实际就两层,一层是操作系统本身,另外一层是用户,用户拿了操作系统之后,拿Windows之后,按照Windows的各种规定来操作,今天说这个不好想修改,进里面修改某部分不可能的。一共就两层,两层之间不开放。APPSTORE为什么把群体整进来,第一步在应用层面把群体积极性调动起来,实际从软件结构看变成三层,最下面操作系统,第二层是一个开发环境,第三层是用户,用户怎么样?用户和操作系统中间增加一层,整个开发环境是对用户开放的,所以用户是个设计者是指可以设计我的应用软件,但是可以在开发环境里进行设计。从理论上说三程实际作用是什么?临层开放隔层屏蔽,临层用户直接面对安卓开发环境,但是隔层操作系统不是每个人可以开放。这样至少应用程序层面动员了千千万万应用程序爱好者,调动起群众积极性,同时操作系统这块还能够保证安全。这就是第一个基本思想。
我们把这个想法再推广一下,如果我们想把群体软件群体开发深入整个云计算开发里面,我们就应该把整个超量信息的云计算系统分成很多层次,使每一个层次里面都遵从临层开放,隔层封闭,这样安全性问题就解决了,这是多层次。每一层怎么样,每层三样东西,第一个函数库,第二个开发环境,第三方面是数据库,都对上层临层开放。对上上层封闭。
群件怎么样?每层有基本群件和组合群件,组合群件是为了云计算里组合服务,如果我们仔细想想安卓之后发现,组合服务其实就是一些基本程序,怎么组合这个层次里服务?首先基本的服务是从下一层提供的,比如函数库。基本组合通过顺序语句组合,通过循环语句组合,通过发行接收并行语句通信。最核心是这些东西,不详细讲。每一个层次都是这样的,只是不同的层次里基本群件由下一层提供的。
每一个层次既然都是这样,所以是多态层次。什么是多态?比如说我们在运用函数的时候,整形除和实数除法类似,但是态不同,一个实数一个整数,这是多态。什么叫群件基本达标,每层开发者数量和该层群件数量遵从2、8率,我们才认为达到了群体参与开发的要求。比如说讲TOPCODER,实际25万人,实际开发者只有4万8千人,占注册用户19.6%,来自204国家。中国选手11541人,我在杭州讲的时候,当时浙江大学院长告诉我,他们学院大概有几十个学生从中国参与TOPCODER开发,很多同学因为这个开发解决自己整个学费、住宿所有问题,说明这个适合咱们。
另外重要一点,为什么TOPCODER质量比原来专业队伍还好?原因在哪里?竞争性测试引进来,实战胜于沙盘。
总结一下,物联网是什么?是为工业信息化和国防信息化服务的基础设施,云计算是什么?云计算是实现物联网一种软件解决方案。群体软件工程是实现云计算服务有效开发方法。谢谢大家!