2012年6月29日,第七届开源中国开源世界高峰论坛在北京唯实国际文化交流中心召开,开启为期两天的日程。这是一次全球盛大的、最高水平的开源学术研讨会控制工程网版权所有,反映中国开源技术和产业的崛起。这次会议研讨的主题是移动互联终端设备(智能手机、平板电脑、互联电视、车载信息系统等)的发展、应用和产业化以及市场问题,移动互联网与云计算、物联网(重点研讨有关开放、互联和节能的技术发展方向)的发展及应用问题。
在今天下午的会议上,中国科学院院士李未先生发表主题演讲《云计算、物联网与群体软件工程》,介绍了云计算是一种基于互联网的大众参与的计算模式,其计算资源( 包括计算能力、存储能力、交互能力等) 是动态、可伸缩被虚拟化而且以服务方式提供。物联网提出来以后,一个非常重要的事就是造成了每一个物联网将来都会成为超大规模的系统,所谓超大规模是什么意思呢?大量的感知和受控设备,最高可以达到千万量级传感器、各种各样摄像头,在执行过程中可以达到含量的计算和通讯进程,达到10个12次方的任务同时进行,而且使用了超量的非结构化的动态数据,比如照片、声音、录像等等。
他表示,开发体制怎样呢?我觉得有两点:群体性、大众化的软件研发和计划性、精英化的软件整体规划和管理相结合,群体竞争机制做什么事呢?对软件资源的形成、组合、测试、维护和服务起着基本的开发、研制的作用。开发原则是什么呢?APP所带来的这些东西,原来使用者和开发者是分离的,现在使用者就是开发者,使用者就是设计者,使用者也是维护者,而且这个观念要一直深入下去,不仅仅只是应用程序,包括下层的开发。
中国科学院院士李未先生
据悉,国际开源社区(Linux、Apache、Android、TA、Ubuntu、Fedora、Gnome、KDE、Mozilla、OpenOffice以及W3C等)的领袖与大师及IT跨国公司(IBM、英特尔、谷歌、惠普、Red Hat、Canonical、微软、EMC、ARM、VMware、LPI、ARM、黑鸭子、LPI等)的高层主管与资深专家参加会议并讲演,国内新兴开源企业的精英也将登台讲演;大会还邀请国内政府、企业、科研院所、高校、开源社区、主要客户等有关领导、专家光临指导,与会人员约300多人。本届峰会除召开开源大会外,还设置圆桌会议。可与国际、国内著名专家面对面地、自由地提出并讨论大家关切的,国内、国际新一代互联网和新兴互联终端,以及开源软件的发展与应用问题。
以下为现场实录:
主持人:非常感谢两位幽雅女士的精彩分享!其实这两位也是今天高峰论坛迄今为止唯一的两位做主题演讲的嘉宾,包括早上邱主席发布的曲部长包括张部长包括今天在座的来宾,我发现女性很少,接下来晚一些时候会有一个互动专场,就是关于社区和人才培养,我建议届时嘉宾一定要讨论一下开源社区女性人在的培养,中国老祖宗说男女搭配干活不累,说不定对中国开源软件产业的发展大有裨益。接下来有请中国科学院院士李未先生为大家带来主题演讲,题为“云计算、物联网与群体软件工程”,大家掌声有请!
李未:很高兴今天下午能和大家一起共同讨论软件开发的问题,但是因为我没有认真读通知,今天主要议题其实是开源软件,我准备的材料和大会主题有一些距离,跟大家一起讨论吧。我今天演讲的题目是“云计算和群体软件工程”。
5年前开始在软件界就酝酿讨论物联网的问题,三、四年前云计算非常的热,我今天又提出群体软件工程这个事。我们可以先谈谈什么是物联网?物联网的概念最初是在1999年MIT教授针对使用RFID电子标签的物流网首先提出来的。经过几年发展,实际上物联网是指面向一个特定领域或者行业的、拥有超量数据的一个复杂信息系统,比如智能交通,尤其大城市,像北京、上海都采用智能交通系统,甚至可以预报路况www.cechina.cn,智能电网,现代物流,医疗健康,信息栅格,像美国全球信息栅格,这些东西都是物联网的典型应用。
物联网为什么重要呢?因为它是未来信息社会的基础设施,怎么衡量我们国家工业做到了信息化呢?物联网是标志性的成果,无论是在电网里面,还是交通里面,要实现这个我们认为达到了工业信息化,而且是战略新兴产业建设的切入点,所以国家把突破关键技术、拥有自主知识产权当做信息领域最核心任务之一,这也是物联网四年来一直会继续下去的道理。
云计算是什么呢?云计算是一种基于互联网的大众参与的计算模式,其计算资源( 包括计算能力、存储能力、交互能力等) 是动态、可伸缩被虚拟化而且以服务方式提供。目的是什么呢?为用户提供简单易用、安全可靠、需用即得的服务,实质是什么呢?通过什么做到这点呢?我认为是对用户屏蔽有关计算、存储、同心合控制的底层操作细节,所有物联网用户用不着关心下面怎么实现的,直接需要这个服务就行了,云计算在我看来是实现物联网的一种途径,比如说云计算提出软件即服务,什么意思呢?终端用户无需关心使用了哪些特定的应用软件和资源,直接得到所需的服务,平台即服务是什么呢?指这些应用软件无需关心操作系统以及中间件底层模块实际调用和运行,直接获得所需要的功能;再往下一层,基础设施即服务,平台无需关心硬件设备的细节,直接得到计算和处理资源。云计算为物联网的实现特别为物联网软件系统的实现提供了一种解决方案,它的理念是服务用户,它的核心技术就是屏蔽底层思路。
物联网提出来以后,一个非常重要的事就是造成了每一个物联网将来都会成为超大规模的系统,所谓超大规模是什么意思呢?大量的感知和受控设备,最高可以达到千万量级传感器、各种各样摄像头,在执行过程中可以达到含量的计算和通讯进程,达到10个12次方的任务同时进行,而且使用了超量的非结构化的动态数据,比如照片、声音、录像等等,达到什么程度呢?最高达到10的18次方,超量导致什么呢?导致对传统软件工程提出了挑战,传统软件工程是什么样呢?比如咱们现在所有的大的软件公司,首先精英化,在座各位都是优秀的大学毕业生,整个软件的设计是计划性,预先规划所有的需求,然后向下开发,这是计划性,另外整个开发过程是封闭的,按照这种方法,最典型的东西就是咱们经常使用的Windows,按照50年来发展软件工程方法开发的典型产品,功能模块大约6万个,代码6千万行,使用9千名专业人才,历时5年完成,任何一个在网上的物联网甚至不是物联网的信息系统的规模都要比6千万行代码来得大,比如FACEBOOK,按照我们查的结果,每个月要上传60亿张照片,要对60亿张照片进行标注,照片谁写的是基础信息,照片用的摄像技术,照片本身,另外对照片文字解释,要把四方面内容进行全面的标注和处理,核高基项目搞了四面体模型,实验了三年,加工一张照片需要12分钟,如果按照传统的方法,Vista的规模,一万人,需要40年才能完成,按照工作量算是41年,实际上并没有用41年,怎么完成的呢?实际上靠超过量的用户CONTROL ENGINEERING China版权所有,解决办法是群体模式,FACEBOOK一共有8.5亿用户,如果每个用户都对自己上传的照片自己加以标注的话,一个半小时就把这些事完成了,现在没有做到这点,1亿的用户一天也可以完成,这是一个例子,现在网上对付的办法就是发动群体做这件事,因此人们就想我们的软件开发能不能也可以发动群体来干这件事呢?这就是苹果APP Store和谷歌Android Market,Apple2008年7月开始,把手机上用户程序开放,允许70万人参加,谷歌Android Market估计达到45个手机的应用程序,60万人参加。
软件应用系统的开发可不可以采用群体方式呢?比如美国TopCoder公司,采用竞争性的群体软件开发模式,25万名开发人员加入到开发社区,他们承担了美国在线委托的通讯后端系统的开发,TopCoder采用这个办法把系统分成52个部分,然后由社区招标,传统软件工程需要1年完成的事他们5个月就完成了,而且因为是招标,有群体竞争过程,虽然完成的快,质量比规定的还好,行业要求是每千行不超过6个错误,做完以后经过测试发现没千行只有0.98错误。面对超量软件,群体软件开发能不能从FACEBOOK应用程序到APP Store应用数据到App Store的应用程序和简单的TopCoder服务程序进入云计算模式下物联网软件开发呢?我认为主要解决这么一个问题,第一,超量信息的挑战,系统超大规模的信息系统,像物联网整的这些东西,群体的开发模式是有希望解决超量信息的模式,群体介入以后也会带来安全的问题,所以需要有一个群体的润色工程,这个软件工程做什么事呢?面对超量信息系统使用群体竞争的模式设计和开发安全可靠的物联网,这是群体软件工程的目标,对着超量信息系统来,最终目的是通过群体方式达到安全可靠的软件。理念是什么呢?开发过程从封闭到开放,开发人员从精英走向大众,开发组织从工厂走向社区,在理念上和开源有共同之处,作为软件工程,开发方法从机器工程到社会工程,就像城市建设一样,不能够全部拆毁然后重新再建,都是在原来的基础上不断进化,这也是超大规模系统的特征之一。
开发体制怎样呢?我觉得有两点:群体性、大众化的软件研发和计划性、精英化的软件整体规划和管理相结合,群体竞争机制做什么事呢?对软件资源的形成、组合、测试、维护和服务起着基本的开发、研制的作用。开发原则是什么呢?APP所带来的这些东西,原来使用者和开发者是分离的,现在使用者就是开发者,使用者就是设计者,使用者也是维护者,而且这个观念要一直深入下去,不仅仅只是应用程序,包括下层的开发。软件工程的基本内容:群件的多层体系结构,云计算核心是屏蔽原理,群件组合服务原理,用户身份的多重性原理,开发者竞争选择原理,竞争性测试原理,对抗性的安全原理。我解释一下多重性,为什么以前变成分离的呢?比如Windows7上面就是用户,实际上之间只有两层,变成APP Store以后通过三层解决,把开发环境开放了,任何一个用户都可以使用开发环境自己开发自己需要的应用程序,至少要三层,怎么保证安全呢?既然用户一定要使用开发层,所以邻层是开放的,隔层怎么样?用户不能直接到操作系统里,隔层是屏蔽的,多层结构出来以后屏蔽原理能够保证层层都有群体来开发,多层结构允许邻层开放、隔层封闭,原则上就能够保证安全性。每一层都由三部分组成:一部分是开发环境,一部分是服务的形成,叫组合服务机制,另外一部分是数据库。
组合原理,首先有基本服务,就是函数,基本函数可以调用,然后由基本函数通过顺序、通过分支、通过循环和并发、通信、同步机制就可以组成所有的服务组合,因为等价于可计算性,凡是程序能够做到的七个机制就都可以做到,而且群件多层是多态层次结构,比如一个函数,实数加法和自然数的加法类型都是一样的www.cechina.cn,但是定义域不同,这块也一样,多层结构以后,服务组合的方式都是一样的,但是基础服务不一样CONTROL ENGINEERING China版权所有,因为每一层提供的基础服务不一样,而且基础服务部能够打开往下走的。开发者竞争选择原理,既然是群体,我对开源不太懂,核心是每层开发者数量和直接用户数量应该遵从二八定律,20%以上开发者作为群体软件开发必要条件,这样才能形成竞争环境。
TopCoder25万人,活跃的开发者4.8万人,相当于注册人数的20%,来自204个国家,其中中国的选手占了23.6%,一万多人,很多人通过TopCoder参加美国群体软件开发,前途很光明。
谢谢大家!