1、基于Internet的软件agent技术,吕建 陶先平计算机软件研究所计算机科学与技术系,南京大学ICS: http:/83593694(O),2018/3/5,http:/,1,课程介绍和学习方法,以软件方法学为研究目标的课程抽象能力的培养以软件新技术为主要内容的课程关键技术的领悟和训练思维能力的提高学习方法听讲+阅读参考资料+讨论,2018/3/5,http:/,2,作业和练习,作业:email方式提交每周三晚8时前email至:,邮件标题:agent作业+作业编号+姓名练习:三个练习:两小、一中小练习:一周时间中练习:一个月时间,2018/3/5,http:/,3,第一篇 移动agent
2、技术,研究背景(Why)计算模式(What )系统支撑(How)典型系统,2018/3/5,http:/,4,研究背景-软件方法学的演化,Computer:,2018/3/5,http:/,5,Input,Output,?,研究背景-软件方法学的演化,从什么是软件谈起?形式上:软件程序文档内容上:软件数字化知识什么是程序? 数据结构算法 什么是算法?,2018/3/5,http:/,6,研究背景-软件方法学的演化,什么是算法?算法是一组有穷的规则,这些规则给出了求解特定类型问题的运算序列。它具有五个特征:输入、输出、确定性、能行性、有限性 一个大家所公认的计算装置? “图林机计算模型”,201
3、8/3/5,http:/,7,研究背景-软件方法学的演化,什么是软件?观点之一: “图林机计算模型”的程序文档主要意义: 软件的基本能力与基本雏形,2018/3/5,http:/,8,研究背景-软件方法学的演化,主要编程手段之一: Machine Languages主要编程手段之二: Assembly Languages主要编程手段之三: High-Level Languages,2018/3/5,http:/,9,研究背景-软件方法学的演化,什么是软件观点之二 “高级语言计算模型”程序文档主要意义: 解决模型之高效表达问题,2018/3/5,http:/,10,研究背景-软件方法学的演化,平
4、台的变化:能力增强应用的变化:非数值应用程序的变化:大程序并发面临的挑战:软件危机程序失控,管理失控,2018/3/5,http:/,11,研究背景-软件方法学的演化,失控原因程序员难以控制程序的复杂性管理者难以控制软件复杂性“软件方法学”变成计算机科学的核心问题。,2018/3/5,http:/,12,第一讲 研究背景-软件方法学的演化,程序设计方法学程序设计方法的研究内容:指导原则方法体系From ,2018/3/5,http:/,13,研究背景-软件方法学的演化,原因分析对主要编程手段即程序设计语言考察:解决开发过程中的软件结构与模型问题软件方法学问题对主要的开发方式与管理方法进行考察:
5、解决开发过程中的群体合作问题工程化问题,2018/3/5,http:/,14,研究背景-软件方法学的演化,结构化方法学奠基性工作: the thesis of E.W.Dijkstra“Go To Statement Considered Harmful” Communications of the ACM, Vol. 11, No. 3, March 1968, pp. 147-148,2018/3/5,http:/,15,研究背景-软件方法学的演化,结构化模型(1)结构化的核心: 适合人的思维过程,2018/3/5,http:/,16,研究背景-软件方法学的演化,结构化模型(2)结构化的两
6、个侧面: 计算过程的易理解性: 运行过程的和正文过程一致 开发过程的可控制性: Topdown, Stepwise,2018/3/5,http:/,17,研究背景-软件方法学的演化,结构化模型(3)程序设计 结构化分析+结构化设计,2018/3/5,http:/,18,研究背景-软件方法学的演化,什么是软件观点之三 “结构化计算模型”程序文档主要意义: 面向人之思维的复杂性控制,2018/3/5,http:/,19,研究背景-软件方法学的演化,基本原则 功能为中心自顶向下,逐步分解 结构化程序组织单入口方法(函数、功能)三种典型控制流 顺序(sequential), 测试(test)和循环(i
7、teration)From E.W.Dijkstra,2018/3/5,http:/,20,研究背景-软件方法学的演化,主要特点复杂度控制良好层次分解结构良好开发结构良好自顶向下,功能分解程序结构良好无 “goto”,运行过程和行文过程一致,2018/3/5,http:/,21,研究背景-软件方法学的演化,缺陷功能抽象困难功能易变分解随意性强= 缺乏可维护性和适应性原因以问题为中心 解决?以不变实体为中心,2018/3/5,http:/,22,如何“写”软件?,问题核心: 如何在控制复杂性的基础上适应问题多变性?,2018/3/5,http:/,23,面向对象方法学?,应对复杂性的有效手段分解
8、与抽象模块化信息隐蔽抽象数据类型,2018/3/5,http:/,24,面向对象方法学?,适应问题变化的手段问题模拟Simula语言,2018/3/5,http:/,25,面向对象方法学?,基本思路: 问题结构作为程序结构,2018/3/5,http:/,26,面向对象方法学?,现实世界抽象客观对象 = 基本成分相互联系 = 连接/协同概念描述 = 按类分层,2018/3/5,http:/,27,面向对象方法学?,计算世界抽象数据操作 = 属性行为 方法调用 = 通信联系 类与继承 procedure -object-?自主性不强:被动的对象缺乏对环境的适应性协作方式单一:Object ref
9、erences,2018/3/5,http:/,35,研究背景-软件方法学的演化,The future methodology?,2018/3/5,http:/,36,研究背景-软件方法学的演化,软件技术的三个基本要素问题技术进步的原始动力:平台和方法技术进步的最大受益者平台决定了软件生存形态和方法的可用性方法在特定的平台上架构问题和解的桥梁The logical picture of the facts is the thoughtWittgenstein的逻辑哲学论,2018/3/5,http:/,37,研究背景,2018/3/5,http:/,38,计算平台,软件及软件技术,计算机应用,
10、面向对象方法学?,2018/3/5,http:/,39,开放性,多变性,动态性,无统一控制的“真”分布性节点的高度自治性和不可预测性节点链接的开放性和动态性人、设备和软件的多重异构性使用方式的个性化和灵活性 网络连接环境的多样性,面向对象方法学?,2018/3/5,http:/,40,开放应用需求网络资源 集成共享面向协同 适应变化,面向对象方法学?,由于面向对象模型诞生于封闭可控的环境,因此在面临开放平台+开放应用时必然会出现问题。,2018/3/5,http:/,41,研究背景-分布计算模式,Internet平台的基本特征资源链接的开放性和动态性使用方式的个性化和灵活性网络连接环境的不可预
11、测性新一代网络计算模式?,2018/3/5,http:/,42,研究背景-分布计算模式,现有分布式程序设计方法分布对象技术成为主流Client/Server模式成为通用模式例:CORBA,COM/DCOM新一代网络计算模式:Client/Server模式?,2018/3/5,http:/,43,研究背景-RPC计算模式,Client/Server计算模式:,2018/3/5,http:/,44,研究背景-RPC计算模式,2018/3/5,http:/,45,RPC的本质,y:=o.m(1,2,3),Int m(int a,int b,int c) return a+b+c;,O:,pc:,研究
12、背景-RPC计算模式,Client/Server模式的不足静态结构缺乏网络适应性功能固化缺乏使用个性化功能固定、数据移动而网络高负载RPC不具有网络协同的适应性问题的症结:Client/Server模式:一种分布对象的静态配置方案,2018/3/5,http:/,46,研究背景-分布计算模式,思考:“Silly Object” 静态分布软件结构静态 VS 网络适应性分布对象服务器功能固化 VS 使用个性化被动对象功能固定、数据移动而网络高负载RPC不具有网络协同的适应性“Silly Object” “Smart Object”?Mobile Agent:a kind of smart soft
13、ware entity,2018/3/5,http:/,47,研究背景-分布计算模式,移动agent计算模式,2018/3/5,http:/,48,研究背景-软件方法学的演化,Mobile Agent一个运行于开放、动态网络环境中的封装良好的计算实体,它代表用户自主地在网络上移动,完成指定的任务,2018/3/5,http:/,49,研究背景-分布计算模式,例1:,2018/3/5,http:/,50,Server,Text documents,numerical data, etc.,Client/Proxy,研究背景-分布计算模式,2018/3/5,http:/,51,Dataset,Da
14、taset,Dataset,Dynamically selected proxy site,研究背景-分布计算模式,现象功能移动而数据不动结论有效节省带宽,降低对网络的可用性要求课代表:鞠振飞,,2018/3/5,http:/,52,研究背景-分布计算模式,例2:,2018/3/5,http:/,53,研究背景-分布计算模式,结论:通过“派送”agent(个性化服务),实现服务器的功能动态剪裁强于Client/Server结构的功能僵化和裁剪的受限。,2018/3/5,http:/,54,研究背景-分布计算模式,例3:,2018/3/5,http:/,55,Chat server(a “ref
15、lector”),研究背景-分布计算模式,结论:根据网络状况和具体的应用特性,可以选择比C/S结构更好的程序分布和运行方式具有更好的网络适应性,2018/3/5,http:/,56,研究背景-分布计算模式,例4:,2018/3/5,http:/,57,研究背景-分布计算模式,续例4,2018/3/5,http:/,58,研究背景-分布计算模式,结论:Agent具有封装私有特征的能力,具有灵活的协调能力“协同可编程”,2018/3/5,http:/,59,研究背景-软件方法学的演化,Agent Oriented Programming?Mobile agent:一个运行于开放、动态网络环境中的封
16、装良好的计算实体,它代表用户自主地在网络上移动,完成指定的任务AOP:the future?,2018/3/5,http:/,60,研究背景-软件方法学的演化,新型方法学面对的应用、平台和技术特征复杂巨系统要求高抽象层次和成熟软件组件Internet平台要求具有强适应性和自主性技术多样性要求协同的灵活性,2018/3/5,http:/,61,第二讲 计算模式,分析计算模式的作用分析计算的基本组成成份从软件研究的角度分析计算模式的技术特点分析计算模式的应用特性分析计算模式支撑的技术需求http:/ agent is a process that acts autonomously on beha
17、lf of a person or organization. A mobile agent is an agent that is not bound to the system where it begins execution. It has the unique ability to transport itself from one system in a network to another. From:General Magic Inc.,2018/3/5,http:/,63,计算模式移动agent,从系统角度,agent是一个软件对象,生存于一个执行环境中并拥有以下基本特性,(
18、1)反应能力:对环境变化的感知能力和应变能力;(2)自主性:执行动作的自我控制;(3)目标驱动:行为预知;(4)连续性:运行动作的持续性;此外,可能拥有以下性质,(1)通信能力:可与其它agent进行通信;(2)移动能力:在主机站点之间转移;(3)学习能力:根据经验改进自身;(4)可靠性:对最终用户而言是可信任的。From IBM公司Aglets,2018/3/5,http:/,64,计算模式移动agent,An agent is an encapsulated computer system that is situated in some environment and that is c
19、apable of flexible, autonomous action in that environment in order to meet its design objectives From Nicholas R. Jennings,2018/3/5,http:/,65,计算模式移动agent,2018/3/5,http:/,66,计算模式移动agent,移动agent是一个运行于开放、动态网络环境中的封装良好之计算实体,它代表用户自主地在网络上移动,完成指定的任务移动agent由数据、操作和行为规则封装而成具有自主性、移动性、协作性和安全性等特性,2018/3/5,http:/,
20、67,计算模式移动agent,自主性:agent拥有对自身状态和操作的控制能力,具有对环境的应变和决策能力,无需用户干预按照自己的意愿完成特定的任务移动性:agent可以在任意站点上暂时中断执行,在异构网络(如Internet)上移动,并在需要的站点上停留下来再恢复执行,2018/3/5,http:/,68,计算模式移动agent,协作性:体现为若干移动agent可在网络中相互通信并合作完成某一任务安全性:体现为移动agent及agent运行环境抵御恶意攻击和无意破坏的能力,2018/3/5,http:/,69,问题:,Agent和对象之间的关系?Specialization?Agent是一种
21、特殊的对象?Generalization?对象是一种特殊的agent?,2018/3/5,http:/,70,对象与agent,对象封装之计算实体 对象(接口,数据,操作)环境主要特性自主性有计算能力状态改变不直接受外界干预外界只能发送消息,对之影响,2018/3/5,http:/,71,对象及agent,封装性对象与其环境间之边界弱,环境中任何实体均可对它发送消息,调用方法,即,边界对环境全开放。被动性对象之存在与状态转换均由来自外界之刺激而引发。 存在性对象的生存期一般较短。 交往性对象具有和其他对象交往之能力,一般较为被动。,2018/3/5,http:/,72,对象及agent,age
22、nt 封装之计算实体 agent(接口,数据,操作,行为)环境 主要特性自主性内自主:控制内态外自主:控制行为对外界请求,可执行,可不执行,可有条件地执行。换言之,agent因自身之需要而工作。 封装性agent与其环境间之边界强,只对环境中部分实体开放。,2018/3/5,http:/,73,对象及agent,适应性主动而有选择地观察环境,及时采取动作,适应环境之变化。(本原)主动性具有表现目标制导行为的能力,必要时采取主动。 存在性不断观察环境,更新内态,选择并执行动作,生命期较长。 交往性具有和其他agent交往之能力,一般较为主动。# 以上仅就弱义agent立论,强义agent涉及知识
23、、置信、意图、承诺等智力概念,今不赘。,2018/3/5,http:/,74,对象及agent,比较自主性对象:接收外界发送之消息后,即采取相应动作。agent:对外界请求,执行与否,有决定权。换言之,对象无偿工作,agent因自身需要工作。 agent之自主性更强。封装性对象:边界对环境全开放。agent:边界对环境部分开放。 agent之封装性更强。,2018/3/5,http:/,75,对象及agent,响应性对象:被动响应agent:主动观察环境,响应环境变化,主动被动。(本原)主动性对象:无agent:有活跃期对象:短暂agent:持久,2018/3/5,http:/,76,对象及a
24、gent,结语综上所述,agent乃对象之扩张与发展,非对象之特化,AOP与OOP之关系亦然。,2018/3/5,http:/,77,计算模式移动agent系统,2018/3/5,http:/,78,Dispatch(agents),Receive(agents),User,资源,资源,资源,Agent,Agent,Agent,移动agent系统,网络平台,计算模式移动agent系统,移动agent系统:由Internet平台上合作完成某个计算任务的多个移动agent以及网络环境里涉及到该计算任务的所有其它软硬件资源共同构成潜台词:构成逻辑上统一的Internet平台移动agent管理其它资源
25、管理,2018/3/5,http:/,79,计算模式移动agent环境,移动agent环境,2018/3/5,http:/,80,计算模式移动agent通信,2018/3/5,http:/,81,Host1,Host2,Agent,Agent,资源,Agent,计算模式移动agent迁移,2018/3/5,http:/,82,Agent出发点,计算模式移动agent迁移,2018/3/5,http:/,83,计算模式移动agent计算,主要成份agent的通信协作agent的迁移Agent安全管理计算过程处理逻辑和迁移逻辑的封装Agent的派遣Agent的漫游、协作和运行Agent的回收,20
26、18/3/5,http:/,84,计算模式移动agent生命周期,2018/3/5,http:/,85,执行,创建,冻结,迁移,消亡,中止,派发,恢复,激活,撤销,计算模式移动agent生命周期,创建状态给定移动agent名及身份确定功能语义和迁移语义需求移动agent环境提供一个良好的用户使用环境一套丰富的移动agent应用程序编程接口,2018/3/5,http:/,86,计算模式移动agent生命周期,执行状态agent在执行期间代替用户消耗各类资源,开展协作,最终完成主要的功能需求利用解释型语言,解决跨平台问题。因此,需要获得该种语言解释器的运行支撑获得底层运行支撑环境提供的迁移、通信
27、、安全、资源访问等支援,2018/3/5,http:/,87,计算模式移动agent生命周期,冻结状态:移动的agent是一个计算状态和计算上下文的移动,因此,agent移动前必须暂时中止agent的计算,进行运行状态和运行上下文的封装,此时,移动agent的状态将转换为冻结状态。需求:完成agent执行的冻结应对所有处于冻结状态的agent进行协作信息的暂存和缓冲,2018/3/5,http:/,88,计算模式移动agent生命周期,迁移状态是一个移动agent按照迁移信息进行物理转移的过程中所处的状态需求:借助网络和操作系统的数据传输能力协作信息进行暂存和缓冲和转发要求环境进行必要的容错处
28、理agent对象类的代码迁移,2018/3/5,http:/,89,计算模式移动agent生命周期,消亡状态两种方式按照agent的功能语义和迁移语义,由系统主动撤销用户在线发布撤销指令,由运行环境强行完成agent的撤销,2018/3/5,http:/,90,计算模式技术特点,示意图,2018/3/5,http:/,91,Locality of References,Mobility of Function & Computation,计算模式技术特点,Locality Of ReferencesMobility of Function (code)Mobility of Computati
29、onAbility of representationSensibility of network environment,2018/3/5,http:/,92,计算模式技术和应用优势,性能优势:网络负载下降交互的局部性潜在应用:“Long leg” applicationsMassive data pre-process分析:该优势并非绝对:移动带来网络开销运行支撑带来节点开销合理选择应用场景,2018/3/5,http:/,93,计算模式技术和应用优势,程序结构的灵活性&网络环境的适应性根据网络和应用状态,改变程序分布和协同方式潜在应用支持移动设备和嵌入式设备间断操作能力服务器定制服务个性
30、化遗产软件利用封装能力网络资源协同环境感知能力分析:综合考虑技术的成熟性和网络的安全保障,2018/3/5,http:/,94,计算模式技术和应用优势,“战术”优势 VS “战略”优势?性能优势程序结构的灵活性网络环境的适应性战术优势:性能优势战略优势:灵活性&适应性,2018/3/5,http:/,95,研究背景-分布计算模式,移动agent计算模式的定位未来基于Internet的一种主流分布计算模式利于发挥Internet潜力,2018/3/5,http:/,96,计算模式其它和移动代码有关的分布计算模式,Code on Demand模式,2018/3/5,http:/,97,计算模式其它
31、和移动代码有关的分布计算模式,需解决的问题:异构、安全基本方式:Pull,Push优点:实现代码可移动缺陷:限于Java语言只能是移动代码,不能实现计算的移动无论applet还是servlet,能力都较弱,访问限制都很严格,2018/3/5,http:/,98,计算模式其它和移动代码有关的分布计算模式,Remote Evaluation模式,2018/3/5,http:/,99,客户机A,服务器B,应用,SubP.,客户机程序向服务器移动,携带结果返回,Sub-program,服务,计算模式其它和移动代码有关的分布计算模式,RE不是MA:只能实现“单级跳”不能自主和其它资源交互不能“创建”其它
32、的计算实体,2018/3/5,http:/,100,计算模式其它和移动代码有关的分布计算模式,进程迁移,2018/3/5,http:/,101,State transfer,CommunicationProcess,计算模式其它和移动代码有关的分布计算模式,目标负载均衡、容错、本地化数据访问、系统管理原理进程状态捕获、迁移、恢复难点复杂度、开销、异构、OS和agent迁移比较被动/主动、目的、策略,2018/3/5,http:/,102,计算模式其它和移动代码有关的分布计算模式,MP(massage passing)能力强涉及底层细节太多,不易使用,降低程序的理解和维护性,2018/3/5,h
33、ttp:/,103,A,B,Send massageto A,Send massage to B,计算模式其它和移动代码有关的分布计算模式,RPC使用“模式”概念进行MP的“封装”,简化了原MP的使用不够灵活、坚定性不强Transaction,2018/3/5,http:/,104,计算模式其它和移动代码有关的分布计算模式,RPC的本质,2018/3/5,http:/,105,y:=o.m(1,2,3),Int m(int a,int b,int c) return a+b+c;,O:,pc:,计算模式小结,MA模式是一种新型分布计算模式MA是代码移动相关模式的最新发展MA和经典代码移动相比,
34、具更强的能力和更灵活的弹性,2018/3/5,http:/,106,作业,阐述对象和agent之间的关系分析移动agent生命周期,列举agent支撑环境必须提供的基础服务Agent迁移和进程迁移有何本质区别?利用Java的序列化/反序列化机制,进行一次java对象的网络迁移试验。给出试验报告,2018/3/5,http:/,107,系统支撑,前提假设总体设计迁移机制通信机制安全机制,2018/3/5,http:/,108,系统支撑总体设计,研究内容不涉及智能agent 研究内容中的通信协议不涉及IP层以下内容 默认软件配置操作系统、TCP/IP协议和Java JVM,2018/3/5,htt
35、p:/,109,系统支撑总体设计,不限定网络可用性允许网络环境发生随机的关于可用性的变化,如网络物理线路故障、网络结点崩溃等不限定网络是安全的允许产生各种安全隐患,允许发生所有类型的不安全事件,如窃听、伪装、重放等事件 不限定网络通信是可靠的不限定网络数据传输和网络通信是无延时、无丢失、保序的,2018/3/5,http:/,110,系统支撑总体设计,系统框架,2018/3/5,http:/,111,Mobile Agent Place,Mobile Agent Place,Mobile Agent Server,Mobile Agent Space,Mobile Agent,系统支撑总体设计
36、,SPACE:Internet计算平台的抽象,可覆盖Internet空间由分布在Internet上的“PLACE”组成PLACE:Agent计算在某个节点上所依赖的环境抽象,覆盖Internet上的某个计算节点负责管理该节点上的“agent”AGENT:用户计算任务的抽象必须依赖某个PLACE开展计算,可以在SPACE中漫游,2018/3/5,http:/,112,系统支撑总体设计,2018/3/5,http:/,113,迁移,通信,安全,agent运行环境,agent管理,用户环境,容错,系统支撑agent设计,名身份功能语义信息迁移语义信息规则,2018/3/5,http:/,114,系统
37、支撑agent设计,名设计需求:命名唯一性 Internet范围内保证唯一性的两种方式:静态唯一性、动态唯一性支持寻址透明性 随机的移动带来突出的寻址问题通常:中间机构、名解析支持用户使用友善性 支持用户名使用,2018/3/5,http:/,115,系统支撑agent设计,agent身份用于安全机制中通常由一个用户标识符以及相关资质验证属性如密码组成 功能语义(信息):数据和操作的封装,2018/3/5,http:/,116,系统支撑agent设计,迁移语义(信息):Agent具有自主迁移的能力移动agent必须携带有反映或指导这些迁移的具体算法与信息(迁移语义信息)通常:迁移语义和功能语义混杂类似 goto语句迁移语义和功能语义分离规则:暂未研究,2018/3/5,http:/,117,系统支撑迁移机制,需求:对迁移请求的解析运行状态的封装agent派发满足容错需求接受外来agent恢复运行,2018/3/5,http:/,118,表达解析确定,状态捕捉状态封装,agent传输相关资源的传输,传输预判传输容错,解包恢复现场,屏蔽异构,系统支撑迁移机制,迁移的表达语句级 public void start() ; a:=3; migrateTo(new LocationName(location4.mole.de); print (a); . 如何支撑其移动?进程级强迁移,