面向Agent的软件工程

点赞:22619 浏览:105556 近期更新时间:2024-04-17 作者:网友分享原创网站原创

【摘 要 】Agent技术和应用是目前软件研发行业的研究焦点之一,作为一种新颖的软件开发范型,Agent技术常用来解决复杂的大型工程化开发问题.尽管在过去二十年里面向Agent软件工程领域的研究取得了长足进步,但其仍有很大的挖掘潜力.本文介绍了Agent的研究背景和发展现状,总结了Agent技术的定义和特点,详述了面向Agent软件工程的分析和设计步骤,总结了当前Agent应用开发使用的环境语言.

【关 键 词 】软件工程,分析,设计,Agent

Abstract:Agent technology and applications is one of the current focus of the software industry,as a novel software development paradigm,Agent technology used to solve plex large-scale engineering development problems.Despite the past two decades inside the Agent software engineering research has made considerable progress,but it still has a lot of tap potential.This paper describes the background and development status Agent,summarizes the definition and characteristics of Agent technology,Agent-oriented software engineering detailed analysis and design steps,summed up the problems and challenges facing the current Agent field of study.

面向Agent的软件工程参考属性评定
有关论文范文主题研究: 关于软件工程的论文范文素材 大学生适用: 硕士论文、学位论文
相关参考文献下载数量: 53 写作解决问题: 如何写
毕业论文开题报告: 论文任务书、论文目录 职称论文适用: 期刊发表、初级职称
所属大学生专业类别: 如何写 论文题目推荐度: 经典题目

Key words:Software Engineering,Analysis,Design,Agent

1.概论

随着软件行业的飞速发展,软件产品的标准化生产已经成为研究领域内的共识.人们已经不能满足于将线下业务原封不动转移到网上,取而代之的是人们迫切的需要人--机协同,具备智能化,个性化的软件产品.在市场强烈需求的促使下,面向Agent的开发方法成为软件行业发展的必然产物之一.Agent最初来自于AI领域[1],Agent概念一经提出就受到相关人员的广泛热议,并受到分布计算、人机交互和计算机辅助协同办公等领域的关注,在多学科相互融合的过程中逐步形成独特的Agent理论和技术.Agent技术常用于概念化、分析、描述和实现复杂、庞大的系统[2],在与心理学(Psychology)、工程学(Engineering)、协同科学(Collaborative Science)、认知学(Cognitive Science)、自主计算(Autonomic Computing)等学科融合的过程中,逐步形成一种新的软件开发模式―面向Agent的软件工程(Agent-Oriented Software Engineering,即AOSE).目前AOSE学科内研究焦点主要集中在Agent的分析、设计和运用方面.面向Agent的软件工程研究是软件开发领域的一种创新思维,在软件开发的过程中常被用于意愿、信念和意图等具有主观思维逻辑方面的模型设计[3].目前已经成功应用于电子商务、信息检索、自动化控制等领域的系统开发,较为成熟的产品包括:美国微软公司的Microsoft Agent,Cerulean Studios公司的ADK,IBM公司的Aglets和日本富士通的APRIL,这些国际化公司的加入,尤其是国际标准化组织(如OMG和FIPA)开始致力于 Agent技术的标准化工作为Agent领域的研究注入了活力.


2.Agent系统的发展现状和特点

早在1996年,M.J.Pont和E.Moreale[4]提出的软件开发方法只局限于单Agent模式的开发,但这种模式仍然具有里程碑的意义.由于软件系统的自身特点,单Agent模式的系统开发很难满足复杂多样的业务需求,因此多Agent模式的研究和应用更为活跃.N.R.Jennings和M.Wooldridge[5]提出的多Agent系统通过对复杂系统建模来认识世界,我们可以把Agent看做是面向对象的一种延伸,是在更高层次上的一种抽象.当前研究人员希望在研究过程中抽离出更具有普适意义的原理和模型.目前行业内对Agent的定义比较广泛,从众多定义中我们可以看出,Agent是一个处于特定环境中,能够感知并灵活自主适应环境,可以写作技巧设计者或使用者实现一定任务的具有较高自治能力的计算机实体,其根本目标是接受另外一个实体(可以是人、情感、意愿、Agent系统等)的委托或请求并为之提供帮助和怎么写作,能够在该目标的驱动下主动采取包括社交、互动、学习等手段在内的各种必要的行为,以感知、适应并对动态环境的变化进行适当反应[6].从Agent的定义上我们可以看出,Agent是一个被高度封装的计算机系统,将其放置在任何环境下都能主动适应环境并产生自主行为.主动性、自主性、灵活性、社会性是Agent所具备的显著特征.

主动性(Pro-Activeness):Agent是具备计算能力行为的自控实体,能够在约定的行为规范内遵守承诺,对未知目标采取主动行为,不受外界的直接操控.

自主性(Autonomy):Agent运行时能根据其内部状态和外部环境决定自身状态,不接受外界控制的条件下决定自身行为.

灵活性(Flexibility):Agent能与其它Agent或人实施复杂的交互和协同,解决自身问题或帮助其他Agent完成活动. 社会性(Social Ability):Agent并不是孤立存在的,它能与其他的Agent 或者人进行交互,在特定环境下根据相关知识实现对外部的理解.除了上述主要特性,Agent还同时具备移动性(Mobility)、理智性(Rationality)、顺从性(Benevolence)、诚实性(Veracity)等特点[7].

3.面向Agent的分析和设计

面向Agent的分析过程离不开面向对象的开发方法,在分析复杂的大型系统时,将具有主动行为的实体抽象为Agent,不具备这种行为能力的实体抽象为Object.在面向Agent的分析和设计过程中,需要考虑Agent、事务和资源三个基本要素,Agent代表目标系统的实体组元或任务,事务表示实现系统目标应采取的活动,资源则是活动进行的重要基础信息,包括:人,其他Agent,时间等多重复杂条件.在分析和设计过程中只要牢牢把握住三要素和它们之间的关联关系,就可以实现一个基于Agent方法智能性系统.

采用Agent的软件工程方法在解决具体问题时可由下述4个活动组成.

分解:将复杂系统分解成为多个灵活运行并交互作用的 Agent 子系统,按照其功能和它们之间的关系进行划分,并尽力作到每一个子系统尽可能的在功能和目标上相互独立,保持只处理一种问题,并实现自成一完整的系统.这将有助于对子系统的设计、开发,并在组合上减少复杂的对应关系.

提取:对分解后的每个子系统进行分析.定义要实现的功能,找出适合的解决该问题的模型.定义相应的内外接口(In/Out Interface).

软件实现:针对每一个子问题进行编码,应做到内部算法自我完善性,即周围环境的变化只影响输入输出的结果,而不影响其内部的算法.

组合:组合的过程就是根据复杂系统问题解决的要求,将各种子问题的解决方法通过关联关系将它们组织起来.由各种最基本问题的解决部件组合成更高级复杂问题的解决系统,并且每个子系统根据需求可重复地被使用[8].

4.Agent开发语言

由于Agent内部结构独特的复杂性,在模型设计和研发的过程中很难研发出一种具有普适意义的编程语言,因此当前Agent开发环境多数基于Ja语言,例如:ZEUE,JACK等利用Ja语言的解释执行.Ja语言同时支持分布式计算、可移植和平台无关等特点,更值得提起的是采用Ja语言开发的系统工具还满足复杂软件的系统开放、分布、异构的要求.Ja环境是支持多线程的,这一显著特征能够很好的支持Agent的多线程运行.

5.总结

面向Agent的软件工程是计算机科学和人工智能领域的结合,是一种正在兴起的软件工程方法.Agent是软件工程研究领域深化发展的产物,它反映了人类对客观世界的深刻认识.从早期结构化的开发方法,到当前主流的面向对象开发方法,面向Agent的软件工程是软件开发领域下阶段的重要发展方向之一.随着实际开发过程中解决复杂问题能力的提高,面向Agent的软件开发方法必将成为下一代智能化的软件开发方法.