云计算与软件开发变革
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
云计算与软件开发变革
发布时间: 2013年03月19日浏览量: 419
摘要:中科院院士李未从深入剖析物联网和云计算的本质,从软件工程的角度提出了群体软件工程的理念,并对比了传统软件工程和群体软件工程的方方面面,最终提出了群体软件工程的开发原则。
【CSDN 现场报道】第四届中国云计算大会于2012年5月23-25日在北京国家会议中心隆重举行。
本次大会由中国电子学会主办,北京市经济和信息化委员会协办,中国云计算技术与产业联盟、中国电子学会云计算专家委员会承办,CSDN与《程序员》杂志协办。
在2012国内公共云全面开花、云计算实践元年之际,本次大会云集云计算核心专家,就国内外云计算核心技术以及行业应用创新实践进行了深入探讨。
中科院院士李未从深入剖析物联网和云计算的本质,从软件工程的角度提出了群体软件工程的理念,并对比了传统软件工程和群体软件工程的方方面面,最终提出了群体软件工程的开发原则。
中科院院士李未
以下为文字实录:
我今天要谈的题目是云计算和群体软件工程。
最近这几年大家都非常关心云计算和物联网,我也想谈谈我的一孔之见,和大家一起讨论。
什么是物联网呢?因为谈了很多,我简单讲一讲。
99年MIT的教授在使用电子标签的时候首先提出的。
物联网是一个什么东西大家都知道,是面向特定领域和行业的,拥有超量数据的复杂信息应用系统。
我不详细讲了。
物联网在各个方面,比如智能交通,智能电网,现代物流,医疗健康,信息删除方面,这都是今后要使用的。
所以物联网是未来信息社会的基础设施,我们的目标是搞工业信息化,工业信息化的标志性成果是在这些振兴行业里头都实现物联网,也是我们战略性新兴产业的切入点。
所以逃跑关键技术,拥有自主知识产权是今后信息领域的主要任务。
物联网怎么实现呢?我认为云计算提出一个实现方法。
李德毅院士上午大会讲了,什么是云计算?云计算是一种基于互联网的大众参与的计算模式,它的计算资源包括计算能力、存储能力、交互能力等等,是动态、可伸缩、被虚拟化的,而且以服务的方式提供的。
我认为云计算的实质在哪里呢?实质是对用户屏蔽有关计算、存储、通信和控制的底层操作细节。
目的是为用户提供简单易用、安全可靠、需用即得的服务。
用户变得很方便了,为什么用户变得很方便了呢?因为所有实现过程全部对用户屏蔽了,想要什么取就可以了,这是云计算的基本思想。
比如说大家都了解的事,云计算提出了一个以服务为纲的体系结构。
第一个是软件即服务,终端用户无需关心使用了哪些特定应用软件和资源,直接得到所需的服务。
平台即服务,下一层的应用软件无需关心操作系统以及中间件的底层模块的具体操作和运行,直接获得所需要的功能。
什么是基础设施即服务呢?平台无需关心硬件设备的细节,直接得到所要求的计算和处理的资源,这是最著名的三个S——SaaS、PaaS、IaaS。
所以云计算为物联网的实现,特别是软件系统的实现提供了解决方案,所以它的作用我认为是一种解决方案,理念是服务用户,怎么样实现它最核心的是要屏蔽最下层的那些东西。
下面我重点谈一谈所谓群体软件工程。
云计算使得用户变得很简单了,想要什么直接获取就行了,但是获取的整个过程是十分复杂的,那么这个部分怎么样才能完成呢?这是咱们在软件界所有的人们都要付出巨大的劳动来满足这些用户们、使用者们的需求,特别是对于基于云计算的这些社会服务系统。
比如各种物联网和面向行业的超量信息,它和我们过去所做的软件有些不同,主要在三个方面:具有超、变、散的特点。
首先是超,所有的物联网和由云计算这个方法实现的这套物联网,成千上万上亿的人来使
用,所以都是一些超大规模的系统。
比如说大量感知受控的设备,这些感知设备要十的七次方,千万级。
同时在网上进行海量信息和通讯进程大约要10的12次方,兆级每秒,这么多的进程在进行。
第三个是超量的非结构化动态数据,10的18次方。
第一是超大规模。
第二是这些系统,不论是智能电网、智能交通,甚至军事信息栅格这些东西,都在不间断、持续演化和部署。
所以有什么改进都是在运行当中的改进,和过去一个软件版本可以用很长时间不同。
这是变。
第三是散,任何物联网都涉及到多部门、多领域、多产业、多地域。
比如美国的Cyber Infrastructure系统,是覆盖全美范围,包括很多学科领域,涉及几十所高校和研究院。
这种要求和这种量对软件工程,对系统的,过去传统的软件工程提出了一个挑战,咱们大家想想,传统的软件工程到现在为止我们有什么特点呢?我认为至少有三点:一是精英化,不论是各种软件公司,在里面工作的人都毕业于优秀的大学,至少硕士毕业的优等生。
我说的精英不是天才,是经过系统有效训练的人,高等教育的人,精英化。
二是计划性,要做一个软件预先规划需求,而且需求能够提得很清楚,然后把需求不断的展开,做到细节。
开发的时候是自底向下的开发,自底向下的测试,整个活动是自闭的,不对外开放的。
有的时候我们增加一些什么Alpha测试、Beta测试,但是总体是不开放的,这是咱们传统软件工程的来法。
面对超量的信息系统这就遇到麻烦。
传统软件工程与超量的信息系统的对比
举一个例子。
世界上最好的软件公司是Microsoft。
Windows Vista的功能模块约6万个,代码6000万行,9千熟练的专业人士,微软的这些骨干们,耗时五年完成的Vista,这个量应该说在传统的软件工程的框架之下的杰作,这个量级。
但是咱们现在讨论的,各位专家今天上午或者以前会议上讨论的云计算,社会服务系统,它的规模远远超过Windows
的代码量。
举一个例子,比如说Facebook每个月都有60亿张照片上传,这是他们自己说的。
如果把每张照片都要和个人的信息等情况关联起来,我们国家重点实验室提出一个四面体全信息的标注和处理方法。
经过这三年的试验,要把一张照片四方面的信息标注连接起来,一张照片大概需要12分钟。
如果按照一万人开发来做这个事的话,需要41年才完成,但是咱用了吗?没有。
Facebook是怎么解决的信息如此超量的问题呢?采用的群体模式。
Facebook 有8.5亿个用户,这些用户都对自己上传的照片加以标注,或者至少一半以上加以标注,假设8.5亿个人,每个人负责自己的照片,或者一个朋友的照片,一个半小时就可以完成。
这就是面对着超量信息以后新的解决办法,从软件工程角度这是一个重要的东西。
以前我说是精英化的团体,一万个精英开发Windows,或者Vista这样的系统,现在在处理大量的、超量的,18次方信息的情况下,8亿人同时上就可以解决这个超量的问
题,这是第一个例子。
第二个例子,咱们天天都在得意的APP Store和Android Market,08年7月开始,大家都有手机,都使用这些应用程序,前后有多少人参加?70万人,Windows Vista有1万人,现在70万人,至少是70万人次,在四年之内完成了60万个应用,这是咱们过去从来没有过的现象。
过去为什么软件贵?就是因为这个,现在都是精英经过专门研究出来,现在我们达到至少是应用软件这个行业,应用程序我们已经达到了极大的丰富,70万。
另外一个是45万。
这个例子说明什么呢?用群体开发模式解决超大规模建设人力不足问题的另外一个很有说服力的例子。
但是目前APP Store的技术只是群体开发的一个初级阶段,而且只支持互相独立的应用开发程序。
这是第二个例子。
第三个例子,TopCoder,采用竞争性群体软件开发模式,25万名开发人员加入。
美国在线委托TopCoder开发通信后端系统,他任命了两名职员做设计师和项目经理,他们组织了少数人员把这个系统分成52个部分,按照传统软件工程的来法要一年完成,但是TopCoder仅仅用了五个月就完成了,而且质量还很高,最终产品完全达到客户要求,并且程序中每一千行代码平均只有0.98个漏洞,低于业内要求他们每千行六个漏洞标准。
所以做的很好,很成功。
既然物联网和在云计算的思想指导下实现的软件系统是超量的信息系统,咱们能不能够借鉴在Facebook,在APP Store,在TopCoder这些东西,从Facebook的应用数据处理,APP Store的应用程序到TopCoder简单服务系统,这种软件开发能不能进入在云计算模式下的超量的复杂系统,全面开花,使用群体方式来开发一个复杂系统。
这就是我这次想跟大家讨论的问题。
因为群体一进入之后大家马上就会想到,解决超量的问题是不假,但是产生了新问题,什么问题?安全问题,安全问题成了大问题。
所以我认为群体软件工程这么样一种新的软件工程,面对超量的信息系统,采用群体的研发,群体竞争的研发方式,产生安全可靠软件的这样一种新的工程,这就是群体软件工程。
这是它的目标。
群体软件工程的核心理论是什么?就是刚才我们所克服的传统软件工程的几点。
开发过程从封闭走向开放,就像TopCoder这些,都是从封闭走向开放。
开发人员从精英走向大众,像APP Store调查的一样,80%以上的开发人员都是13岁-28岁的青年,精英是指受过严格的高等教育,他们28岁-13岁怎么可能受到这种高等教育。
所以从精英走到大众,另外从工厂走向社区。
三是从机械工程走到社会工程。
看我们现在开发一个系统,跟我们研制一个大型客机一样,从自顶向下的设计,专业人士研究制造,训练有素,现在开发面向群社会服务的这样一些系统,就像建设城市一样,我们所有的城市建设都是在过去的基础上逐渐的堆垒起来的。
把所有整个区域都消灭掉,然后重新建设,这也不可能。
所以社会工程更多的思想将渗入到超量信息的研究,特别是在云的思想指导下的超量信息系统的构
造的东西。
开发体系是两个都要,既要群体性,也要精英,两面都需要的。
群体性和大众化解决软件超量开发的问题,群体性竞争机制对软件资源的形成、组合、测试、维护和服务的生产具有基础性的作用。
精英做什么呢?计划性和精英化的整体规划和管理,精英化的管理机制对软件的构架、组织的法则、社会规范的形成具有宏观的决策作用,这是咱们中国特色的两点。
市场是起着基础作用,政府起着宏观调控作用,一方面是大众,另一方面是精英,这两个优势都可以发挥出来,这是需要的体制。
群体软件工程的开发原则
开发原则我认为应该是使用者即设计者,使用者即开发者,使用者即维护者。
这个在APP Store应用程序做到了,所有开发设计这些应用的,同时自己也是使用者。
所以他的原则是这样。
他的基本内容我认为至少要包括下面几个方面:
因为要群体参加,又要保证安全,所以整个的体系结构必须是多层的体系结构。
屏蔽原理,群件组合服务原理,用户身份的多重性原理,开发者的竞争选择原理,竞争性测试和对抗性安全。
我觉得至少应该包括这几个方面。
第一个方面,为什么变成了多层结构?咱们传统的软件系统,比如说以前Windows,我不是说Windows不好,我天天都在用,我是指对他们在过去这一阶段,实际上就是两层:一层是操作系统本身,另外一层是用户,用户我拿了操作系统之后,我拿了Windows之后,按照Windows的各种规定咱们来操作。
说我今天觉得这个不好,我想修改修改,进到里面修改某部分,这是不可以的。
所以一共就两层,这两层之间是不开放的。
到了Android 和APP Store为什么能够把群体这个事整进来呢?这是我个人的看法。
第一步是在应用程序这方面把整个群体的积极性给调动起来。
从软件结构看,它变成三层了,最下面这一层是操作系统,第二层是一个开发环境,第三层上是用户。
那么用户怎么样呢?用户在操作系统中间增加了一层,整个开发环境是对用户都开放的。
所以用户是个设计者是指我可以设计我的应用软件,但是我在开发环境里头进行设计。
再深一步,从理论上说,这三层实际上的作用是什么呢?就是临层开放,隔层屏蔽,操作系统不是每个人都可以开放的,这样的话至少他在应用程序这一层面动员了千千万万的应用程序的爱好者,调动起群众的铜墙铁壁。
但是同时操作系统这块他还能够保证安全,这是第一个基本的思想。
所以我们把这个想法再推广一下,如果我们想把群体软件、群体的开发深入到整个云计算的开发里面去,那么我们就应该把整个超量信息的云计算的系统分成很多个层次,使得每一个层次里面都遵从临层开放、隔层封闭,这样的话安全性问题就解决了,这是多层次。
每一层怎么样?每一层就三样东西:一是群件库,函数库,给上层应用的。
二是我的开发环境。
三是数据库,在我这一层次里,这个已经都对我的上层、临层开放了,对我的上上
层封闭。
所以屏蔽原理我也讲了,临层开放,隔层屏蔽的原理。
群件怎么样呢?每一层有基本群件和组合群件,组合群件为了云计算里的组合服务,但是我们仔细有一想Android 之后会发现,组合服务其实就是一个基本的程序。
怎么来组合这个层次里的服务呢?首先它基本的服务是从下一层提供的,比如说函数库。
基本的组合是通过顺序语句组合,通过发收并存语句组合,这是核心的,比如Android领域用的Java,但是真正核心的就是这些东西。
每一个层次都是这样,只是不同的层次里的基本群件是由下一层提供的。
这是组合群件。
所以每一个层次既然都是这样,都类似JAY信息机一样,所以它是多态的层次。
什么是多态?比如说我们在运用函数的时候,整形的除和实数的除法类型是一样的,但是态不同,一个是实数,一个是自然数,是整数,这个就是多态。
我不详细讲了。
另外,什么叫群件基本达标呢?每层开发者的数量和该层群件的直接数量遵从二八律,遵从二八律我们才认为他达到了群体参与开发的要求。
比如说咱们讲TopCoder,它实际上是25万人,但实际开发者只有48850人,占注册用户的19.6%,来自204个国家,中国的选手为11541个人。
我在杭州讲的时候,浙江大学院长告诉我了,他们学院大概有几十个学生都从中国直接参与TopCoder的开发,而且很多同学就是因为TopCoder的开发解决了自己的学费、住宿所有的问题。
说明这个群体软件适合我们中国。
怎么组织?要有执委会和协委会,像社会工程一样,有政府和人大的性质。
另外很重要的一点,为什么TopCoder的开发质量还比原来的专业队伍还好,原因在哪里呢?就是把竞争性测试“引进来”,实战胜于沙盘。
总结一下,物联网是什么呢?物联网是为工业信息化和国防信息化服务的基础设施。
云计算是什么呢?云计算是实现物联网的一种软件解决方案。
群体软件工程是什么呢?是实现云计算服务的有效开发方法。
我就讲到这里,谢谢大家。
本文来源:/article/a/2012-05-24/2805927。