HITSY 版 (精华区)

发信人: seofearth (地球上的软工), 信区: HITSY
标  题: 面向“智体”的软件工程方法agent-oriented (转载)
发信站: 哈工大紫丁香 (2001年03月22日16:15:24 星期四), 站内信件

【 以下文字转载自 SoftEng 讨论区 】
【 原文由 Sun 所发表 】
面向“智体”的软件工程方法agent-oriented 

涂序彦、杜军平等 

  引言:面向“智体”(agent-oriented)的软件工程方法是面向“对象”
(object-oriented)的软件工程方法的发展。

  本文论述“智体”(agent)的概念,面向智体(agent-oriented)的程序设计方法。



  一、“智体”的概念


  “agent”一词已大量出现在国内外文献中,至今尚无统一概念和标准定义。
agent的中文译名也有多种,如:智能体、智能代理、主体、代理等。

  我们曾将agent译为“智能体”,基于以下二方面考虑:

  1.agent具有拟人的智能特性

  虽然不同的学者关于agent的概念和定义有所不同,但是也有共识,一般都认为
agent具有拟人的智能特性,如:

  *自主性(autonomy)

  agent具有根据其意图、愿望、信念或习性,在没有外加控制的情况下,自行决策
,采取自主行为的性能,称为“自主性”。

  *主动性(activity)

  agent具有根据内部状态和外部环境,产生面向预定目标的主动行为的性能,称为
“主动性”或“预见性”。

  *反应性(reactivity)

  agent具有接受外部输入刺激,感知周围环境变化,作为代理、接受委托、遵循承
诺,产生输出反应动作和行为的性能,称为“反应性”。

  *可动性(mobility)

  agent可在其所处环境中随意流动或移动,去访问各种有关场合的服务设备,获取
信息、查询数据、传递消息、提取知识、执行命令、采取行动,具有“可动性”或“机
动性”。

  *社会性(sociality)

  agent之间可以相互通信、分工合作、协同解题,组成多agent的社会或群体,具有
“社会性”或“群体性”。

  2.agent是客观世界中的实体

  在各种关于agent的概念或定义的论述中,都认为agent是客观世界中的实体,是驻
留及活动于真实的或虚拟的复杂动态环境中的实体。如:

  *软件agent(software agent)

  软件agent是驻留及活动于软件系统中的软件实体,例如task agent(任务智体)、
resource agent(资源智体)、interface agent(界面智体)、information agent(信息
智体)、collaborative agent(合作智体)、data mining agent(数据采掘智体)等。

  *硬件agent(hardware agent)

  硬件agent是驻留及活动于硬件系统的硬件实体,例如,在机器人足球比赛场上活
动着的各种机器人。

  *动画agent(animation agent)

  动画agent是驻留于、活动于动画屏幕上的虚拟世界中的动画角色实体,例如,在
人工鱼社会的虚拟海洋中栖息、活动着各种人工鱼。

  *网络agent(web agent)

  网络agent是活动于、驻留于网络世界中的实体,例如:mobile agent(流动智体)
、search agent(搜索智体)、communication agent(通信智体)、intrusion detection
 agent(入侵监测智体)等。

  由于agent是具有拟人智能特性的、驻留与活动于客观世界中的实体,所以,我们
将agent译为“智能体”。

  在本文中,我们进一步将agent译为“智体”,原因如下;

  1.“智体”是有智能的实体

  因为agent是有智能的实体或智能化的实体,可直接译为“智体”,且更为简洁、
雅致。

  2.“智体”是“智能体”的简称

  就中文语义而言,“智体”是“智能体”的简称,虽然略去了中间的“能”字,但
是“智体”与"智能体”的语义内涵是相同的。

  3.“智体”的汉语拼音为(zhi ti)和agent 的英语拼音略有谐音。

  “智体”(agent)可以视为“对象”(object)的升华与发展。一方面,“智体”与
“对象”有相同的共性,如:

  *“智体”和“对象”都是客观世界中的某种实体。

  *“智体”和“对象”都具有结构和属性

  *“智体”和“对象”都可以相互通信。 

  因此,从共性的观点,“智体”也可以视为一类“对象”(object)。

  另一方面,“智体”与“对象”又有不同的个性,如:

  *“智体”具有智能性,“对象”通常没有智能特性。

  *“智体”具有主动性,“对象”往往是被动的。

  *“智体”具有自主性,“对象”一般不是自主的

  因此,“智体”可视为具有自主性、主动性的智能化“对象”。

  如上所述,“智体”、“对象”、“实体”(entity)的关系可用图1表示。


  二、面向“智体”(agent-oriented)的程序设计方法


  面向“智体”的程序设计方法,可视为面向“对象”(object-oriented)的程序设
计方法的发展。

  软件工程的程序设计方法的发展可分为四代,如图2所示。

  

  第一代:面向“过程”的程序设计方法(p-o)

  面向软件系统的信息流程图,采用面向过程的程序设计语言(process-oriented 
language)或面向进程的程序设计语言(procedure-oriented language),如:fortran、
algol、cobol等编程,实现软件设计流程图所描述的信息处理过程的功能,称为面向“
过程”(process-oriented programming)的程序设计方法或面向“进程”的程序设计方
法(procedure-oriented programming)。

  这种(p-o)方法适用于设计小规模的专用软件包,软件的通用性、重用性、扩展性
差。

  

  第二代:面向“模块”的程序设计方法(m-o)

  结构上将软件系统划分为若干功能“模块”(module)或实体,分别采用模块化程序
设计语言如:pascal编程实现;再由各模块联结、组合成相应结构的软件系统。称为面
向模块(module-oriented programming)的程序设计方法或模块化程序设计方法(module
 programming)。也称为面向“实体”的程序设计方法(entity-oriented 
programming)。

  这种(m-o)方法适用于设计模块化、结构化程序,可提高软件系统的模块化、结构
化水平,设计和组装较大规模的软件系统,有助于提高软件的通用性、重用性、扩展性


  

  第三代:面向“对象”的程序设计方法(o-o)

  所谓“对象”是指具有一定结构、属性和功能的“实体”,采用“对象”和“对象
类”,以及对象之间的相互通信的“消息”,描述客观世界中的各种事物及其相互关系
,建立面向“对象”和“消息”的具有层次结构的“世界模型”。

  面向对象的程序设计方法(object-oriented programming)基于上述面向对象世界
模型。采用面向对象的程序设计语言(object-oriented language),如c++、
smalltalk、等编程实现。

  这种(o-o)方法,具有通用性,适用于广泛应用领域的大规模软件系统设计。有助
于提高软件的重用性、扩展性、移植性,提高编程效率和程序自动化水平。

  

  第四代:面向“智体”的程序设计方法(a-o)

  新一代的程序设计方法:面向“智体”的程序设计方法(agent-oriented 
programming)是面向“对象”的程序设计方法的发展。由于“智体”是“对象”的升华
,是具有自主性、主动性的智能化、拟人化的“对象”,是具有拟人智能特性的“实体
”。因而,面向“智体”的(a-o)方法不仅继承了面向“对象”(o-o)和面向“模块”
(m-o)方法的优点,具有:通用性、模块性、重用性、扩展性、移植性,而且,进一步
发展了面向“对象”和面向“模块”的方法,提高了软件系统智能性、互操作性、灵活
性、编程效率和程序自动化水平、智能化水平。

  新一代的程序设计语言,如:java,适用于面向“智体”的程序设计,具有优良特
性,如:

  *面向智体

  java是面向“智体”的程序设计语言(agent-oriented programming language),
便于描述和表达“智体”的多种拟人的智能特性:自主性、主动性、可动性、反应性、
社会性,支持“智体”的感知、识别,推理、决策,动作和行为能力的实现。

  *平台独立

  java是面向网络和分布式系统的语言,提供独立于平台的二进制代码,对于任何具
有java解释程序的系统,java程序语言都是可移植的。因而,便于支持在不同平台上异
构的网络,各种分布式软、硬件环境中驻留与活动的各种“智体”,特别是“动智体”
(mobile agent)。

  *网络性能

  java提供扩展类库、远程调用,便于处理tcp/ip等网络通信协议,支持在异构、异
地网络中的信息传递,可实现异步交互式通信。因而,对“多智体”(multi-agent)系
统,“动智体”(mobile agent)的相互通信、协同解题、分工合作,提供了有力支持。


  *安全功能

  java具有基于密钥技术的反病毒、反入侵的安全防护功能。这对于各种基于“智体
”的系统具有重要的意义。有助于提高“动智体”系统的安全性。

  *并发性能

  java对“多线性”的并发快速处理提供有力的支持。因而,特别适用于开发面向多
任务、多用户的基于“智体”的软件系统,不仅有助于提高程序运行的速度,而且便于
实现软件的互操作性。




--
    如果程序员懂得了软件工程,
    那么他就不再是牛,
    更不是妓女了。

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: sunner.hit.edu.cn]
--
※ 转载:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: ani.hlnet.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.972毫秒