1
 软件工程
1.11.4.3 9.4.3 群体软件工程

9.4.3 群体软件工程

进入21世纪以来,以互联网和移动通信为必要生活条件的人数已达到数十亿。以超大规模、高质量流媒体、实时交互与协同为特征的超量协同环境,如高清晰视频会议、沉浸式科研协同环境及无线移动流媒体系统等,已经成为目前网民不可或缺的协同基础设施,其应用领域已包括科研协作、远程医疗、远程教育、电子政务及软件工程等方面。如何实现先进网络环境中的超大规模协同,协调海量用户的计算行为,实现不同地域、不同性质、不同模式的资源及时共享和过程优化,合作完成共同任务,已经成为协同领域的重大研究课题。

在网络的协同式开发方面,国内有学者提出了“群体软件工程”的概念:云计算和物联网的发展衍生了超量的信息系统。云计算是一种基于互联网的大众参与的计算模式,它的计算资源包括计算能力、存储能力、交互能力等,是动态、可伸缩、被虚拟化的,而且以服务的方式提供。云计算的实质是对用户屏蔽有关计算、存储、通信和控制的底层操作细节,其目的是为用户提供简单易用、安全可靠、需用即得的服务。云计算提出了一个以服务为纲的体系结构。第一个是软件即服务,终端用户无须关心使用了哪些特定应用软件和资源,直接得到所需的服务。第二个是平台即服务,下一层的应用软件无须关心操作系统及中间件的底层模块的具体操作和运行,直接获得所需的功能。所以云计算为物联网的实现,特别是软件系统的实现提供了解决方案。

自从云计算出现后,大量的软件将运行在集中的服务器上,这样就给软件工程带来了新的发展机遇。在云计算的模式下,可以获取软件运行状况的信息、用户的行为、开发人员的行为。但是,要获取到整个过程是十分复杂的。各种物联网和面向行业的超量信息,与我们过去所做的软件有些不同,主要体现在以下3个方面。

(1)所有的物联网,可供成千上万的人来使用,都是一些超大规模的系统。

(2)这些系统,不论是智能电网、智能交通,还是军事信息栅格等,都在不间断、持续演化和部署。

(3)任何物联网都涉及多部门、多领域、多产业、多地域。例如,美国的Cyber Infrastructure系统,是覆盖全美范围,包括很多学科领域,涉及几十所高校和研究院。

以上3个特点可以归纳为超、变、散。过去要做一个软件,必须经历预先规划需求、开发、测试这三个过程,整个活动是自闭的、不对外开放的。有时增加一些测试,但总体是不开放的。这是传统软件工程的流程,在面对超量的信息系统时就遇到了麻烦。既然物联网和在云计算的思想指导下实现的软件系统是超量的信息系统,我们就能够借鉴其思想,开发过程从封闭走向开放,开发人员从精英走向大众,从工厂走向社区,从机械工程走到社会工程。将社会工程更多的思想渗入到超量信息的研究,特别是在“云”时代构造的超量信息系统。群体性和大众化解决软件超量开发的问题,群体性竞争机制对软件资源的形成、组合、测试、维护和服务的生产具有基础性的作用。而计划性和精英化的整体规划和管理,精英化的管理机制对软件的构架、组织的法则、社会规范的形成具有宏观的决策作用。这就是开发体系的群体性和精英性。

群体软件工程的开发原则应该是:用户即设计者,用户即开发者,用户即维护者。因为要群体参加,又要保证安全,所以整个体系结构必须是多层的体系结构。

传统的软件系统(如Windows)实际上就是操作系统本身和用户两层,这两层之间是不开放的,因此用户是无法进到里面修改某部分。而Android和APP Store从软件结构看,它变成三层,最下面一层是操作系统,第二层是一个开发环境,第三层是用户。在应用程序方面把整个群体的积极性给调动了起来。用户在操作系统中间又增加了一层,整个开发环境对用户都是开放的,所以用户是一个设计者。从理论上说,这三层实际上是临层开放、隔层屏蔽的,操作系统不是对每个人都可以开放的。

图9-6描述了软件工程的发展历程,分为后工业社会、前信息社会和现代信息社会三个阶段,群体软件工程是现代信息社会的一个典型特征。

再进一步,如果想把群体软件、群体的开发深入到整个云计算的开发中去,那么就应该把整个超量信息的云计算的系统分成很多个层次,使得每一个层次都遵从临层开放、隔层封闭,这样安全性问题就解决了。云计算系统的每一层有三样东西:一是群件库、函数库、供上层应用;二是开发环境;三是数据库。每一层都有基本群件和组合群件,组合群件为了云计算里的组合服务,组合服务其实就是一个基本的程序。如何来组合这个层次里的服务呢?首先它的基本服务是由下一层提供的,如函数库。基本的组合是通过顺序语句组合,通过发收并存语句组合,如Android领域用的Java,但是这是真正的核心。每一个层次都是这样,只是不同的层次中的基本群体软件是由下一层提供的。

总之,物联网是为工业信息化和国防信息化服务的基础设施,云计算是实现物联网的一种软件解决方案,而群体软件工程是实现云计算服务的有效开发方法。

img179

图9-6 软件工程发展历程