网络环境下的新型软件开发方法——网构软件
随着internet的快速发展论文联盟http://与普及,软件agent、web services、分布式计算、云计算等先进技术和方法成为当前研究的热点,传统的软件开发方法也面临新的挑战。计算机软件开发在经历了面向结构、面向对象、面向构件的开发方法之后,又迎来新的生机。从以往的软件开发方法历史看,其粒度越来越大,封装的功能逐渐增多,接口的描述越来越重要。
1 新型软件支撑技术
1.1 internet的发展
internet是新型软件的理想运行环境,它作为不同于传统计算机的硬件平台,具有如下基本特征:无统一控制的真分布性;节点的高度自治性;节点连接的开放性和动态性;人、设备和软件的多重异构性;实体行为的不可预测性;运行环境的潜在不安全性;使用方式的个性化和灵活性;网络连接环境的多样性[1]。以上特征为新型的软件技术创造了条件,但同时又提出了挑战,如何在internet环境下拥有动态协同、在线演化、环境感知和自主适应能力,成为新的课题。
1.2 软件构件技术的成熟
软件构件技术的概念诞生于20世纪60年代后期,omg组织、carnegie mellon大学软件工程研究所(sei)的bachman[2]、以及著名构件学者szypersk[3]等均对构件给出了定义。其中szyperski的定义:软件构件是一种用于组装的单元,它具有规范的接口规约和显示的上下文依赖,软件构件可以被独立部署并由第三方组装。wwW.133229.cOm
传统的软件构件技术是面向对象技术发展到高度集成阶段后发展起来的,在面向构件中,构件的主要形式是对相关类的封装,并能完成一个或多个的服务功能,同时为外界提供接口,方便组装。构件本身隐藏了实现的细节,只通过接口提供服务,因此,构件之间可以组合成粒度更大的新的构件。构件之间通过连接子进行连接,通过接口传递信息,构件内部是透明的,并可以通过网络连接运行在不同的机器上,不同的构件可以用不同的语言实现,只要服从相应的构件规范。
1.3 web service技术的提出
web service 是一种分布式的计算体系结构,是跨平台的通信服务技术,是一种网络上数据与信息集成的有效机制。w3c组织、ibm研究者、uddi协会等都给出相应的定义。其中,ibm研究者定义为:一个web service是定义了一组操作的一个接口,这组操作可通过网络用xml消息访问。web service由标准的xml语言进行描述,该描述覆盖了消息格式、传输协议和物理位置等传输服务所需的细节。web service具有非常强大的分布式计算能力[4-5]:
1)能够解决中间件跨防火墙通信时出现的问题,使分布在网络中的构件具有广泛的通用性,真正实现跨internet服务。
2)通过对服务的有效构件化、发布、查找和连接绑定机制将提供者所生产的服务通过uddi注册并发布,供用户选择重用。服务可对不同粒度的应用程序进行封装,实现了系统级的较大粒度重用,提高了软件开发效率。
3)使用soap中间件让所有的构件、语言、操作系统能够轻易的进行跨平台互操作,web service能较好的体现新型软件的本质特征。
1.4 软件agent技术的兴起
软件agent是近年兴起的一种技术,包括智能agent和移动agent等多个方面。对于智能agent的认识,wooldridge认为:“agent是这样的一个计算机系统,其位于某个环境中,且能在该环境中采取一定的自治动作以满足其设计目标” [6]。智能agent的主要特性包括:反应性,目标驱动性,社会性。所谓移动agent是运行于开放网络环境中的封装良好的计算实体,它可代表用户完成特定的任务,具有自主性、移动性、协作性、安全性和智能性等特性[7-8]。移动agent被认为是解决分布式系统的有效模式。
利用agent技术,可以解决对驻留环境进行感知、表示和分析的问题。我们将构件实体抽象和物化为具有ebdi[9] (electronic business document exchange)结构的软件agent,这主要是因为软件agent及其技术能够有效满足构件主体化和环境显式化的要求。这样,构件就能够感知环境并且自主地实施规划以完成目标,从而可以自然地描述复杂系统的分布控制。
2 新型软件—网构软件
2.1 网构软件的定义
由于新技术的发展与应用,新型软件开发方法学应运而生。新型的软件开发系统是运行在internet环境中的,以软件构件为基本实体,运用web service技术实现跨平台通信,以软件agent技术和演化技术等完成动态组装及演化功能的系统。
基于上述技术的成熟与发展,在系统分析以面向对象方法与技术为代表的经典软件方法与技术体系不足的基础上,从软件方法学及其技术支撑的角度,通过对软件技术发展趋势与挑战的思考与分析,北京大学杨芙清院士提出了网构软件这一概念:从技术的角度看,在面向对象、软件构件等技术支持下的软件实体以主体化的软件服务形式存在于internet的各个节点之上,各个软件实体相互间通过协同机制进行跨网络的互连、互通、协作和联盟,从而形成一种与www相类似的软件web(software web)。我们将这样一种internet环境下的新的软件形态称为网构软件(internetware)。
网构软件具有自主性、协同性、反应性、演化性和多态性等特征[10]。
2.2 网构软件的运行机制
从构成来看,网构软件由三部分组成,他们分别是分布在internet环境下的各个节点,具有主体化特征的软件实体和一些用于支持软件实体交换的连接子。网构软件在感知外部环境改变的情况下,通过增加、减少软件实体与连接子个数,改变系统拓扑结构,进行系统演变等一系列体系结构演化方法来适应外部环境的改变,从而使得系统上下文相关联,满足用户多样性需求的目标。简言之,网构软件就是在当今开放、动态、难控的网络大环境下,对分布式软件体系的一中抽象,其概念框架如图1所示。
在可信保障机制下,探测器(可以由移动agent在网络上动态搜索完成)搜索网络环境中软件构件,探测器完成搜索后得到若干构件实体,这些构件实体按照其实现的功能或性能进行排序得到兴趣事件列表,完成对环境的感知;根据用户的需求,对本体构件重构,应用软件系统演化技术,从而达到演化的目的;演化部分结束后论文联盟http://得到目标系统,通过连接子可以反作用环境部分。经过一系列的演化和一定时间的运行,使internet环境下的网构软件开发系统不断优化,最终得到比较高效的软件。