面向Agent的软件工程方法学

时间:2022-10-24 08:13:00

面向Agent的软件工程方法学

摘要:面向agent的软件工程技术是软件工程和人工智能领域最重要的新技术之一,与现有的开发方法相比,Agent具有较强能力可以对复杂软件系统中的活动实体进行高层抽象。该文讨论了Agent及面向Agent的软件工程技术,说明了软件开发中面向Agent的分析与设计方法。同时给出了面向Agent软件工程分析方法的一个应用实例来进行说明。

关键词:Agent;软件工程;方法学

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)29-0456-02

The Method of Software Engineering Orient Agent

LAN Tian

(School of Computer Science and Technology, Soochow University,Suzhou 215006,China)

Abstract:Software engineering orient agent is the most important new technique in the field of software engineering and AI. In contrast to current develop methods. Agent can give high level abstract. This article talks about Agent and agent orient software engineering technique, describe the method of analysis and design. We also give out example to illustrate the method.

Key words: agent; software engineering; method

1 引言

软件工程是将理论和知识应用于实践的科学,它借鉴了传统工程的原则和方法,以求高效地开发高质量的软件,其中应用了计算机科学、数学和管理科学等知识。Agent技术最早出现在人工智能领域,其最大特点是具有一定的智能性及良好的灵活性和坚定性,特别适合对复杂、协同和难以预测的问题进行处理。

Agent是一个处于特定环境中,能感知并灵活、自主适应环境,可以设计者或使用者实现一定任务的具有较高自治能力的计算机实体;其根本目标是接受另外一个实体(可以是人、Agent、系统等)的委托或请求并为之提供帮助和服务,能够在该目标的驱动下主动采取包括社交、学习等手段在内的各种必要的行为,以感知、适应并对动态环境的变化进行适当反应。

面向Agent的软件工程方法就是将现实世界的问题用Agent的思想加以分解和抽象,把复杂的系统分解为更小的、更容易处理的相对独立的子系统,子系统再进一步分解直到可以抽象为单个具体的Agent所能解决的程度,这些父系统与子系统之间以层次形式组织起来,这就形成了多Agent系统模型。

2 面向Agent的分析与设计

2.1 面向Agent的特点

关于Agent的定义有很多争议,下面是得到较多认同的Wooldridge给出的Agent定义:An agent is an encapsulated computer system that is situated in some environment and that is capable of flexible, autonomous action in that environment in order to meet its design objectives。

由此可见,Agent是一个被密封了的计算机系统,被放置在某些环境中,并能在环境中变化和自主行为,以便达到设计时的目标。其主要特点如下:

1) 自主性(Autonomy)。Agent应该是具有自身计算功能的行为自动控制的实体,能够在非选定模式下和动态变化的环境中,不用外界的直接操纵,根据其内部状态和感知到的环境信息决定和控制自身的行为。

2) 社会性(SocialAbility)。Agent并非一个孤立的实体,通常处于一定的社会环境之中,可以与环境中的其它Agent进行交互。而社会性就是指Agent之间的这种协作能力。

3) 反应性(Reactivity)。Agent能感知周围的环境,并根据相关的知识对环境作出适时的反应。

4) 主动性(Pro-Activeness)。Agent能遵循承诺,采取主动行为,表现出面向目标的行为。

除了上述主要特性外,Agent还有移动性(Mobility)、理智性(Rationality)、顺从性(Benevolence)、诚实性(Veracity)等特点。

由此可见,Agent是一个完整的计算机系统实体,其内部包含了实现其目标所必须的各种不同子系统和子系统间的相互作用的接口;它能感知所处的环境及环境状态的变化,并根据感知采取不同的行动作用于环境;每个Agent都有自己的特定的实现目标;Agent是一个自治体,它既能控制其内部状态又能控制自己的行为;Agent能够采用灵活可变的方法解决问题,以便达到其目标;Agent之间符合一定的社会组织关系。

由于Agent的上述特征,使得由Agent组成的系统模型应包含有多个Agent,Agent之间的高级交互和灵活的组织结构三方面的内容。

2.2 面向Agent的分析

面向Agent的分析方法是将系统分解成为多个灵活运行并交互作用的Agent,用每一个Agent来描述一个子系统。由于Agent的自主性,意味着子系统有自己的控制流程,自己决定在什么时候,采取什么动作。而复杂的软件系统往往是分布式的或具有多重控制流程的,可以将多重控制流程分别分配给不同的Agent执行。这将大大降低系统控制的复杂度。另外,在复杂系统中,一般很难预先知道何时,因为什么原因及在哪些子系统间发生的交互作用,面向Agent的方法用Agent之间的交互来实现子系统间的协作,而这些Agent根据子系统局部情况决定自己的行为和状态,能及时对局部突发事件作出响应。这样,可以降低系统设计时软件各组件之间的耦合度,简化设计时对软件各组件的管理控制。

复杂系统的层次结构具有目的性,因此我们通常按目的的不同对系统进行建模,每个模块有一个或多个目标,这是面向Agent分析的基本原理。软件工程的发展趋势是提高分析的模块化程度和概括程度,这就要求单个模块有自己的控制进程,并且具有自主解决问题的能力;同时,自治模块或组件之间的交互具有不确定性,针对这些问题,Agent技术将系统分解为多个分散的模块,通过高级Agent通信语言来实现Agent之间的交互,所有Agent始终处于活动状态,模块间的同步或协作都以内部交互的形式自底向上地解决。

2.3 面向Agent的设计

从对现实世界的模型化的角度来说,Agent提供了比对象更高层的抽象,这种抽象可以对实体之间的协作和协商等行为提供更直接的支持。面向Agent的设计主要是为系统建立一个简单明了的模型,突出系统的本质特征,忽略其它特性,以便更透彻地了解问题的实质。这样,再次缩小和突出了设计者所要考虑的问题的空间范围,使系统模型简单、明了,易于把握。一个有力的抽象工具应该能最小化问题的概念空间和方法空间的结构之间的语义差别。而复杂软件系统的子系统的概念模型和Agent的组织结构能非常一致的对应。它们都包含了一些内部的组成模块,这些模块各自有相应的功能。运用Agent模型、Agent之间的交互模型和组织关系,可以更自然、准确地描述子系统、子系统之间的交互和组织关系。

3 面向Agent软件分析方法应用实例

应用实例:人机界面的设计

人机界面作为计算机系统的一个重要的组成部分,是计算机科学、心理学、认知科学和人素学(Human Factors)的交叉研究领域,也是计算机行业竞争的焦点从硬件转移到软件之后,又一个新的、重要的研究领域。

交互角色完成与用户的信息交互。

控制角色通过交互角色和通信角色感知角色感知到外部环境的变化,由控制角色根据这些任务、消息、请求,进行分析,理解,推理后执行相关的动作,由此可能引起进一步的活动。

通信角色接收来自通信服务器的信息,进行初步的通信语法检查后,排队到入通信队列,根据通信队列中的相应的通信内容,将该信息发往通信服务器。

建模角色进行数据获取,数据归整和数据挖掘。

推理角色通过感知外界环境的消息或知识库的动态变化,以此来判断推理过程启动的条件是否成立,执行推理的启动、停止、推理竞争的消解等。

4 结论

本文概括地说明了基于Agent的软件工程的基本方法和技术特性,并通过一个实例来说明了面向Agent的分析与设计。

总之,Agent思想改变了整个软件工程的过程方法,提出新的需求分析、系统分析和程序设计的方法,增强了软件的动态性、自适应性和自学习性等特点,为创建下一代具有更高智能的软件提供了有力的工具。

参考文献:

[1] Petrie C J. Agent-Based Software Engineering[R].Manchester UK:The Practical Application Company Ltd,2000.

[2] Jennings N R. Wooldridge,M.J.Agent-Oriented Software Engineering[J].Handbook of Agent Technology,2001,18.

[3] Giorgini P. Agent-Oriented Software Development:A Case Study[R].Buenos Aires-Argentina:Proceedings of theThirteenth International Conference of Software Engineering & Knowledge Engineering (DEKE01),2001.

[4] Wooldrideg M, Ciancarini P. Agent-Oriented Software Engineering[J].The St.te of the Ar.In Agent-Oriented Software Engineering,2001.

[5] 关旭,程明,刘豹.面向Agent的软件工程[J].计算机工程与应用,2001(11):30-32.

上一篇:浅析Java语言中的内部类和匿名类 下一篇:基于MOM的电子政务外网数据交换模型的设计