基于Agent的软件体系分析与设计
 

摘要科学合理的软件体系结构是开发一个成功应用系统的必要条件,对于提高系统的开发效率和质量具有非常重要的意义。软件Agent技术的提出为复杂问题的求解找到了办法。本文综述了软件体系结构和软件Agent技术的主要概念、特性、作用及相应的软件开发方法,指出了各自的研究现状及发展趋势,最后给出了基于Agent的软件体系结构。

关键词Agent 软件体系结构 软件开发

中图分类号:TP1  文献标识码:A  文章编号:(200701-0053-03

 

 

基于Agent的软件体系分析与设计

 

 

 

0  前言

大量软件工程实践证明,一个成功的软件系统往往都有一个好的软件体系结构[1]随着软件规模和复杂程度的不断增大,软件开发的成败已不再完全取决于数据结构和软件算法的选择,而在很大程度上取决于软件系统体系结构的设计。如何针对复杂多变的环境下开发出令人满意的软件是一个棘手的问题。Agent 技术的提出为这类问题的求解找到了办法,它是人工智能与计算机科学新的结合,用于解决复杂分布的现实问题,开发处于动态的、不确定环境中的、健壮的、大规模的软件系统。Agent具有自治性(Autonomy),社会性(Social Ability),交互性(Interaction)、反应性(reactivity)和主动性(Pro-Activeness)等特征,这些特性适合处理软件开发中的一些复杂性问题,如应用组件的自治性反映了分布式系统中自身分散的特性, 这些组件可以被认为是系统模块和封装概念的自然扩展,Agent操作的灵活多样的方式适合处理软件操作中动态的和不可预测的场景,Agent的概念提供了和人工智能的结果和目标相一致的观点。因此agent技术以及面向agent的软件工程受到了越来越多的关注。

1 软件体系结构

1.1 软件体系结构的主要概念

软件体系结构是软件工程研究的一个新兴领域,至今对其定义尚未统一。下面给出几种典型的观点:(1)软件体系结构是由具有特定形式的体系结构元素或设计元素构成,包括处理元素、数据元素和连接元素;(2)是设计过程的一个层次,它处理那些超越算法和数据结构的设计,研究整体结构设计和描述方法;(3)包括系统构件的结构、构件的相互关系以及控制构件设计演化的原则和指导三个方面;软件体系包括部件、部件的外部可见性以及相互的关系。概括各种不同观点,可发现它们都支持这样的观点:软件体系结构包括系统总体组织、全局控制、通信技术、同步、数据存取、设计元素的功能、组织、规模、性能、设计方案的选择。从主要概念来说,有组件、连接件、角色、配置、软件体系结构风格等。组件即具有某种功能、独立存在的实体;连接件提供组件间的高层连接方式;角色是连接件与外界环境的接口;配置是将相应的角色与组件绑定的依据;软件体系结构风格是指在众多系统中所拥有的共同的组织结构框架和语义特性,指导如何将各个模块和子系统组织成一个完整的系统。

1.2 软件体系结构在软件生命周期中的作用

良好的软件体系结构对于软件系统的重要意义在软件生命周期中各个阶段都有体现。在系统分析阶段,软件体系结构发挥着巨大的作用。一方面,借助于软件体系结构进行描述,可以使问题得以进一步抽象,使整个系统更易于被系统分析设计人员把握,更清晰地认识系统,完善对系统的理解,还可为系统分析设计人员提供新的思路。另一方面,它能够帮助软件系统的各有关权益方形成统一认识,互相交流。在软件开发过程中对系统生命期的影响最大。软件体系结构是系统实现的基本约束,即系统的后继开发工作要遵循体系结构所描述的设计决策;决定开发和维护项目的组织结构;对于软件质量控制有重要意义,好的软件体系结构是成功的必要条件。体系结构技术的研究,使软件复用从代码复用发展到设计复用和过程复用,实现多层次的软件复用。

1.3 基于软件体系结构的软件开发

所有软件开发方法都要解决从需求到实现之间的转换问题。基于体系结构的软件开发包含以下几个主要阶段:(1)通过对特定领域应用软件进行分析,提炼出其中的稳定和易变需求,建立可复用的领域模型。依据领域模型和用户需求,产生应用系统的需求规格说明。(2)在领域模型的基础上,根据需求规格说明提炼出特定领域的软件体系结构。这是系统的高层设计,其目标是通过复用领域体系结构库中已有的高质量的体系结构,或生成最适合该用户需求的体系结构,并加以提炼入库,以备将来的复用,并在此体系结构的指导下,把系统逐步分解成相应的构件和连接件,直至构件和连接件可以被设计模式和面向对象方法处理为止。(3)这个阶段主要解决具体构件和连接件的设计问题。通过复用可复用组件库中模式、对象和其它可复用的设计件,或重新设计的构件,并提炼入库;然后通过具体的编程实现,就可得到可运行的程序。

目前软件体系结构的研究,主要集中在描述语言、案例范例、基础理论、质量评价、性能评价、求精方法、设计方法、开发方法等方面的研究。

2 软件Agent 技术

2.1 Agent概念

Agent可定义为“一个能够根据它对其环境的感知,主动采取决策和行为的软件实体”。Agent的关键属性主要有自主性、交互性、适应性、智能性、协同性、移动性等 ,自主性表示没有外部直接干涉能够根据自身经验进行行动;交互性表示与环境及其它Agent交流;适应性表示在某种程度上能够响应其它Agent或环境;智能性是由知识所形式化的状态与其它Agent使用符号语言交互;协同性是指Agent能在多Agent系统环境中协同工作,以执行和完成一些相互受益的复杂任务;移动性表示能够将自己从一个环境转移到另一个环境。事实上,很难看到一个Agent具有上述各种特性,一般认为,前三项是必需的。

Agent的一般结构如图1所示,它由通讯、事务处理、推理决策、学习等功能模块所组成,其中目标可以看作是Agent的一种追求,事件处理是Agent实现目标的一种手段。

1. agent的一般结构

Figure 1. General structure of agent

目标:Agent 不断运行所追求的具体目标,由目标确定Agent的责任和义务。

知识库:存储agent的知识(包括事实和规则),知识来源有两个,一个由用户增加,另一个是通过学习模块学习而获得。

精神状态:包括 Agent 的信念、承诺和处理事务的能力。

通讯模块:负责agent与外界(外界环境或别的agent)的通讯;即负责 Agent 的通讯、消息接受和发送,可以传递任务、运行结果和实现知识共享。

学习模块:从 Agent 的运行过程中总结经验,为知识库增加新的知识,提高适应环境变化的能力,Agent 一般通过信念转化、案例学习和集中学习三种方法获取知识。

人机界面:拥有友好的图形用户接口(GUI),人们利用它可以维护 Agent的属性和指导 Agent 的行为。

推理决策模块(推理机):根据 Agent 的目标、知识、精神状态和能力以及最新信息进行推理和决策,作用于消息处理、事务处理以及精神状态更新等,做出的决策必须有利于目标的实现。

事务处理模块:进行事务的处理,由事务处理方法构成,它是 Agent 实现目标的主体。

2.2 软件Agent 技术特点

软件Agent 技术可以看作是软件开发的又一重大突破,这是因为它不仅能够以一种自然、高效的方式解决传统软件业中存在的问题,而且还能为解决目前其他技术难以解决的问题提供了一个理想的途径。软件Agent 与其他软件技术相比,在解决传统软件业中存在的问题时具有如下优点:(1)系统的数据、控制、专家知识和资源可以分布存储处理。(2)Agent 组成的系统可以进行自然的描述,有利于各有关人员对软件系统的理解。(3)Agent 软件系统具有灵活性,有利于现有软件的集成。(4)具有开放性和复杂性。Internet/Intranet 的发展对软件的开发提出了新的问题,高度开放的计算机网络是一个松散耦合的软件环境,软件生产所面临的难题是系统具有高度的开放性和复杂性,而软件Agent 为解决这两个问题提供了独特的思路:①开放性:在以网络( Internet/Intranet) 为中心的计算环境中,用户预先无法得知与其交互的各种资源情况,Agent 软件系统具备这种高度的灵活性和坚固性。②复杂性:问题领域的广泛性、复杂性和不可预测性,使得通用应用系统的开发是不可行的,唯一的解决途径是开发一些能够解决特定应用领域的专用模块化构件。而Agent 的应激性和主动性使得它既能对环境变化做出反应,又能根据目标主动规划自己的行为。

2.3  基于Agent 的软件开发

基于Agent 技术的应用开发过程如表1所示,可以按照下述步骤进行 :(1)分析系统的特点,选择合适的实现技术。在进行应用开发时,首先应根据实际情况决定应采取何种技术实现。一般而言,当应用需要具有跨平台、跨网络、跨地域甚至跨行业的互操作性以及较高的个人化、智能化时可以考虑采用Agent 技术。这里并不排除以多种技术实现应用系统的可能性。在确定以Agent 技术实现应用系统后,应当具体分析应用所涉及的各个对象,决定哪些采用Agent 实现,哪些采用其他方法实现。(2)Agent的功能设计。确定系统采用Agent 技术实现部分的数据和功能。Agent间明确分工后,应当根据各自功能确定内部数据。此外还要考虑Agent 的种类:移动Agent 还是静态Agent。此外,移动Agent 的内部数据应尽可能的少,以减少移动带来的网络负担。(3)Agent接口的设计。Agent 接口的设计非常关键,它往往影响系统的性能,这既要考虑Agent 间的交互方式,又要考虑Agent与非Agent 部分的交互方式。(4)Agent的详细设计和实例化。首先要了解目前已有的Agent 平台能做什么,不能做什么,它们各有什么优缺点;然后根据系统的需要选择合适的代理平台;接着进行详细设计和具体的编码、调试工作,从而实现整个系统。(5)Agent的运行与维护。运行维护基于Agent 技术的应用系统,及时发现和解决实际运行过程中遇到的问题。总之,任何系统的设计都要综合应用多方面的因素,根据实际情况而定。

系统分析

Agent功能设计

Agent接口设计

Agent详细设计与实例化

Agent的运行与维护

1. 基于Agent的软件开发

Table 1.The development of software based-agent

3  基于Agent的软件体系框架分析与设计

从用户角度看,Agent是能够代表人们完成某种操作的一个程序,它允许用户向它委派任务。而从系统角度看,Agent是处在一定的执行环境中的软件对象。

本文中所述的Agent都包含以下3个部分:

(1)属性:属性标识一个Agent,包括Agent的规格说明、拥有者、生命周期和实现环境等。

(2)行为模型:行为模型说明了Agent如何运行、何时停止等。这里要设置安全性规则,Agent和用户之间的关系,Agent之间的关系等。这些规则决定了如何评价Agent的性能。Agent是自治和独立的,拥有可信赖的Agent是很重要的。因此,行为模型将保证只有具有良好和有用的行为的Agent才能继续运行。

(3)接口引擎:接口引擎在行为模型的基础上操作Agent

下面是基于Agent的体系结构如图所示:

 2 基于Agent的体系结构

Figure 2. Agent-based architecture

在图2中,用户接口用来隐藏系统操作的复杂性,它能让用户定义自己的一次性的查询和相对静止的需求。

用户视图代表用户长期的需求,用户兴趣和需求的信息影响领域Agent的行为。用户视图是随时间而变化的,根据用户的反馈信息进行修改。

任务域包括某个确定任务的详细的指南、规则和必需的信息。

应用数据库存放不同应用所开发的软件构件列表,以便处理测试、用户需求改变和新版本的集成。

构件Agent(Software Component Agent, SCA)代表可重用的构件,软构件可以在不同的系统平台下用不同的工具进行开发。一个SCA为其他SCA提供软构件的服务,同时也需要其他SCA提供的软构件服务。

软构件Agent协调者(Software Component Agent Mediator, SCAM)是一个专门协调软件构件的Agent,软构件Agent之间通过SCAM进行协调通讯。当然,如果方便,也允许各种软构件Agent之间进行直接对话。SCAM是必需的,否则,在不同系统平台下开发的软构件Agent之间的通讯就会出现问题。SCAM还可以评估单个软构件Agent的性能。如果一个SCAM所需要的服务在软构件Agent库中得不到满足,则SCAM可以与系统中其它的SCAM进行谈判。

领域Agent根据用户利益而工作,它反映用户视图中用户需求,并根据用户反馈的信息构建任务域。根据用户需求形成构件的规格说明,授权SCAM查找匹配的软构件。它根据所寻找软构件的满意程度来评估SCAM的性能,而且基于用户需求的改变模式,更新用户视图。最后,不管何时,它所需要的信息不在任务域中,它就通过领域。领域Agent协调者(Domain Agent Mediator, DAM)为领域Agent提供通讯服务,这些领域Agent可以在异构分布式环境中实现。一个DAM可以与其他DAM进行通讯,共同完成用户所要求的工作。

Agent测试使用应用数据库为应用的构件集成产生测试数据,且进行集成测试。Agent测试把问题反馈给领域Agent

4  结束语

    软件系统往往由许多组件组合而成,当软件系统逐渐扩大到一定程度,可能超过人的理解能力时,需要一种能够自动组织组件的方法,而组件技术、软件体系结构、软件Agent技术在重用方面有着很强的互补性,充分利用各自的优势,实现强有力的结合,为软件开发提供更好的方法是今后要研究的主要问题。

 

参考文献

[1] Shaw M,Galan D. Software Architecture :Perspectives on an Emerging Discipline[ Z] . Prentice Hall ,1996.

[2] Jennings N R. On Agent-based Software Engineering [J ]. Artificial Intelligence ,2000(2) .

[3] D.Tennenhouse. Embedding the Internet :proactive computing[J]. Commun. ACM, 2000(5).

[4] F.Zambonelli, N.Jennings, et al. Agent-oriented software engineering for intern applications[]. In Coordination of Internet Agents: Models, Technologies, and Applications, Springer- Verlag: Berlin(D), 2001a.

[5] S. Russel. P. Norvig. Artificial Intelligence: A Modern Approach, Prentice Hall/Pearson Education Internation:Englewood Cliffs(NJ),(2nd Edn),2003.

[6 ] Dewayne E ,Perry ,Alexander L. Foundations for the Study of Software Architecture [J ]1ACM Sigsoft Software Engineering Notes ,1992(4).

[7 ] Christine Hofmeister ,Robert Nord ,Dilip Soni. Applied Software Architecture[M] .北京:电子工业出版社,2003.

[8] 万建成,卢雷.软件体系结构的原理、组成与应用[M].北京:科学出版社,2002.

[9] 冯冲,江贺.软件体系结构理论与实践[M].北京:人民邮电出版社,2004.

[10] 赵会群,孙晶等.软件体系结构:一个新的领域研究[J].计算机科学,200211.

[11] 张风荔,杜小丹.软件体系结构在软件生存期的应用研究[J].微型机与应用,1999(10).

[12]韦群,熊璋.软件体系结构开发方法及其应用[J].计算机工程与设计,2003(3).

[13]陈越,王亚弟.软件Agent及其应用[J].微机发展,1997(5).

[14] 孙志勇.Agent系统体系结构及建模方法研究[D].合肥:合肥工业大学,2004.

[15 ] 王映辉,冯德民.大规模软件构架技术[M] .北京:科学出版社,2003.

[16 ] 李淑平. 软件Agent技术研究的现状及展望[J ].太原科技,2002 (6).

[17]樊玮,朱军. 软件Agent技术的研究[J].航空计算技术,1999 (4).

[18]冯冲,江贺,冯静芳. 软件体系结构理论与实践[M] .北京:人民邮电出版社,2004.

[19]刘大有,杨鲲. Agent 研究现状与发展趋势[J] .软件学报,2000(3).



  作者简介李莉,女,北京卓达经济管理研修学院教师。

paper   2007-08-10 16:45:40 评论:0   阅读:2004   引用:0

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

Copyright@2004-2010 powered by YuLog