(系统分析与集成专业论文)ns2代码自动生成的交互设计.pdf_第1页
(系统分析与集成专业论文)ns2代码自动生成的交互设计.pdf_第2页
(系统分析与集成专业论文)ns2代码自动生成的交互设计.pdf_第3页
(系统分析与集成专业论文)ns2代码自动生成的交互设计.pdf_第4页
(系统分析与集成专业论文)ns2代码自动生成的交互设计.pdf_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南京信息工程大学硕士论文n s 2 代码自动生成的交互设计 摘要 随着应用程序开发环境的日益复杂,如j a v a2e n t e r p r i s ee d i t i o n ( j 2 e e ) 以及微软的软件平台如m i c r o s o f tf o u n d a t i o nc l a s s e s ( m f c ) 和d o tn e t 等, 代码生成技术在专业应用程序开发过程中的地位越来越重要了。使用代码生成 技术,无论是购买第二方的代码生成器,还是自行开发的代码辅助生成软件, 都可以极大地加快应用软件的编程速度,降低错误发生率,从而提高应用软件 的生产效率。同时,任何代码生成技术也是由人机交互界面和底层功能实现组 成,二者缺一不可。界面设计是构造系统得重要步骤。好的界面设计使用户更 方便容易的使用整个系统,提高了使用效率,同时也对底层功能产生影响。 n s 是一款随着网络的发展而发展壮大的多协议的以c h 和模拟脚本o t c l 语 言开发使用的软件,由于它是免费的,且模拟功能强大,在教学研究中作用日 益显著。因为不断有人对其原有构件的补充,n s 模拟脚本代码越发的复杂起来, 开发n s 模拟脚本代码的代码生成系统有助加快n s 模拟的编程速度,降低错误 有很大的作用。 本文的主要内容:l 、简单介绍n s 2 软件。2 、分析了n s 2 的模拟脚本的语义 语法,并归纳出其基本组成。3 、提出符合要求的代码生成系统和界面设计模型。 4 、根据相应模型交互设计了n s 2 代码模拟生成系统。5 、测试和评估该系统。 关键词:瞒2 软件,代码自动生成,界面设计,交互设计,o l c l 模拟脚本 南京信息工程大学硕士论文n s 2 代码自动生成的交互设计 a b s t r a o t t of a c et h em o 饽a n dm o r ec o m p l e xo fs o f t w a r ee n v i m n m e a t , a sj a v a2e n t e r p r i s ee d i t i o n ( j 2 e e ) a n dm i c r o s e rf o u n d a t i o nc l a s s e s ( m f c ) a n dd o tn e te t c ,t h ec o d ea u t o m a t i o n g e n e r a t i o np l a y sm o r gi m p o r t a n tr o l ei nt h ep r o f e s s i o n a ls o f t w a r ed e v e l o p m e n to fp r o c e s s w i t i l c o d eg e n e r a t i o nt e c h n o l o g y , n om a t t e rw h a tb u yt h eo t h e rs o r w a r e ,o rd e s i g ni tb yu s ,c o d e g e n e r a t i o nc a np r o m o t et h ep r o g r e s sd e v e l o p m e n tg r e a t l y , d e c r e a s et h ee r r o rr a t e ,a n di m p r o v e t h ee f f e c to f d e p l o y m a n t h o w e v e r a l lt h ec o d eg e n e r a t i o ni sc o n s i s tb yt h ei n t e r f a c ed e s i g na n d f u n c t i o nd e s i g n , b o t hc a nn o tb ea b s o n t e d t h ei n t e r f a c ed e s i g ni st h ei m p o r t a n ts t e p t h e e x c e l l e n ti n t e r f a c ec a nh e l pu s e ro p e r a t i o ne a s i l y ,i m p r o v et h ee f f i c i e n c yo fu s i n g ,r e d u c e st h e e r r o r n e t w o r ks i m u l a t i o ni s m u l t i - p r o t o c o l s i m u l a t i o ns o f t w a r ew h i c hi s f o l l o w i n gt h e d e v e l o p m e n to f n e t w o r ka n dc o n s i s t so f c + + l a n g u a g ea n do t c ls c r i p t i ti sm o r ei m p o r t a n ti nt h e r e s e a r c ht h a tn si sf r e es o f t w a r ea n df u n c t i o ni sc o m p l e t e d b ya d d i n gt h ec o m p o n e n t , n s 2 s i m u l a t i n gs c r i p tb e c a m em o r ea n dm o r ec o m p l e x , d e v e l o p c o d eg e n e r a t i o no f n s 2 s c r i p tc a n h e l pr i s e rp r o m o t ed e s i g na n dr e d u c em i s t a k e s t h i sp a p e rm a i n l yi n c l u d e st h ef o l l o w i n gs e c t i o n : l 、i n t r o d u c en s 2s o f t w a r e 2 、a n a l o g yt h eg r a m m a ra n dm e a n i n go f n s 2s c r i p t , a n ds mu p 舾b a s i cc o n s t r u c t i o n 3 、d e s c r i b et h ei n t e r f a c ea n dc o d eg e n e r a t i o nm o d e lt h a tm e e tt h er e q u e s t s 4 、d e s i g nt h en s 2 c o d eg e n e r a t i o ns y s t e mb yt h em o d e l 5 、t e s ta n de s t i m a t et h es y s t e m k e y w o r d s :n s 2 ,c o d ea u t o m a t i cg e n e r a t i o n ,i n t e r f a c ed e s i g n ,i n t e r a c t i o n d e s i g n ,o t e ls c r i p t 学位论文独创性声明 本人郑重声明: 1 、坚持以。求实、创新”的科学精神从事研究工作 2 、本论文是我个人在导师指导下进行的研究工作和取得的 研究成果 3 、本论文中除引文外,所有实验、数据和有关材料均是真 实的 4 、本论文中除引文和致谢的内容外,不包含其他人或其它 机构已经发表或撰写过的研究成果 5 、其他同志对本研究所做的贡献均已在论文中作了声明并 表示了谢意。 作者签名:篮垫 日期: 学位论文使用授权声明 本人完全了解南京信息工程大学有关保留、使用学位论文的规 定,学校有权保留学位论文并向国家主管部门或其指定机构送交论 文的电子版和纸质版;有权将学位论文用于非赢利目的的少量复制 并允许论文进入学校图书馆被查阅;有权将学位论文的内容编入有 关数据库进行检索;有权将学位论文的标题和摘要汇编出版保密 的学位论文在解密后适用本规定 作者签名: 碴塑 日 期:塑2 :幺型 关于学位论文使用授权的说明 本人完全了解南京信息工程大学有关保留、使用学位论文的规定,即:学 校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的 全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 作者签名:鲻2 日期:副:! 刁 导师签名:签丝 -才 日 期:垫z :挈 南京信息工程大学硕士论文n s 2 代码自动生成的交互设计 1 1 前言 第1 章绪论 在科学技术发展的今天,计算机和计算机网络正在逐步改变着人们的工作和生活方式。 近年来,经济的高速的发展,人们对信息的要求越来越多,随着企业i n t e r , n e t i n t r e r n e t 的建立和网络规模的日益扩大。越来越多的人们可以接触到网络,或者从互联网上了解到 自己所需要的信息。网络搜索,电子邮件,电子商务,p 2 p 下载等网络软件或格式的出现, 极大的丰富了网络的形式,3 层交换机,无线交换机,多用路由器,光纤等网络组成硬件 的发明,进一步提升了网路的性能与使用范围,越来越多的人们被吸引到这一事物的周围, 因此,越来越多的学者与研究人员从事到研究和网络相关的领域上来。 网络的研究主要集中在下面一些方面:网络协议与数据处理的相关算法,网络拓扑结 构与平台建设,功能与通用框架模型,安全,端到端服务质量,网络相关资源建设等方面, 也就是对网络硬件环境和软件环境的研究。同时,网络的存在形式也有很大的进步,从有 线网络到无线网络,从单一的数据网到多网合一( 数据网、电话网和有线电视网的融合) 。 无论是有线网络还是无线网络,单网还是多网合一,对于用户来说,他们并不关心网络的 存在模式。他们关心的是网络性能与安全。因此,怎么样才能在现有网络基础上更好的发 挥网络吞吐量与网络速率,或是用其他什么样的新模式,为网络发展做出前瞻性的研究, 是当今国际和国内通信领域研究的焦点之一。无论是提高现有网络水平,还是发展新的模 式都要对新的网络方案进行验证和分析,即在大量的网络研究中,不仅需要理论创新,还 需要实践证明。一般需要对已定的模型修改或是新颖模型进行模拟仿真试验,才能证明出 这些理论改进或是创新是否满足实际应用中的需求。目前最广泛使用的验证分析方法就是 通过虚拟环境进行模拟仿真。网络仿真技术就是一种通过建立网络设备和网络链路的统计 模型,并模拟网络流量的传输,从而获得网络设计或是优化需要的网路性能数据的仿真技 术。网络模拟方法可以根据需要设计所需的网络模型,用相对很少的时间和费用了解网络 在不同条件下的各种特性,从而获取模拟仿真有效的数据。网络模拟无疑提供了方便,高 效的验证和分析方法,因此网络模拟技术在现代通讯网络设计和研究中扮演越来越重要的 角色。在众多的网络模拟器中,多协议网络模拟器可谓低成本的实验提供了一个良好的环 境,用于不同的研究领域的一个通用模拟环境。 南京信息工程大学硕士论文n s 2 代码自动生成的交互设计 1 2 论文研究背景 近年来,搜索引擎,电子商务在互联网上火了一把,3 g 时代的来i 临也把通信网络行业 搞的热火朝天。随着人们对移动性的要求越来越高,n g n ( 下一代互联网) 成为当今研究 的重点。这个集固定网、互联网、移动网、核心网、城域网、接入网、用户驻地网、家 庭网络等许多内容超级网络,越来越值得期待和关注。我国对网络的研究也是很注重的, 在国家自然科学基金重大计划中我们可以很容易发现有关网络的研究,各高等学校也有从 事网络方向的研究生培养计划。 网络模拟软件也随着通信网络业的红火迅速发展起来,其中多协议的模拟软件由于集 成环境多,越来越受到瞩目。目前在有很多的模拟仿真软件用于研究中,像m a t l a b , o p e n e t 等。其中,有一款软件n s ( n e t w o r ks i m u l a t i o n ) 在研究工作中发挥着重大的作 用。n s 2 采用o t c l 和c + + 两种语言。其中c + + 用来处理与数据包、网络协议算法相关的事 情,这样保证处理速度;o t c l 脚本语言处理网络s c e n a r i o 、协议配置和程序控制等经常需 要改动方面的事情。这样程序修改容易,而且可以保证处理性能。n s 是在网上发布的,并 且被研究人员广泛使用,它是多协议网络模拟器,并提供二次开发的接口,这更方便了研 究人员的工作。n s 2 本身是一款多协议的网络模拟软件,不仅可以模拟有线网络,还对无 线通信网络特别是a d h o c 网络系统良好的支持,再加上可以2 次开发,故在很多重大研究 和课题上,都可以看到他的身影。目前。n s 系列也在加大开发过程,最新的版本2 2 9 已 经得到广泛使用,相信2 3 0 版本也快面世了,加上其他研究学者,也在不断的丰富n s 的 组成模块,n s 系列软件有了长足飞速的发展。n s 2 由于是免费软件,研究和使用它的人比 较多,一开始主要是欧美为主,渐渐的,台湾也有不少高校有专门的研究部门,国内高校 和研究所这几年也开始使用研究。 代码自动生成是最近出现的新型编码方式,并随着应用程序复杂化,源代码也越来越 庞大和复杂,代码自动生成软件成为极有价值的应用软件开发工具,代码生成技术在专业 应用程序开发过程中的地位越来越重要了。无论是选择商品软件还是自行开发代码生成工 具,正确地应用和维护可以极大地提高开发应用软件的效率,以及所开发的应用软件的质 量。同时,研究人员也在从事着大量的模拟仿真试验,而其中很多是在原有的试验基础上 改变一些设置,故对原有的软件代码修改,需要大量的时间去验证和查找,代码的自动生 成出现。把研究人员从复杂庞大的代码检测中解放出来,加快了研发效率。 n s 模拟是一款多协议的模拟软件,并且支持嵌入开发,因此其模拟脚本也因不同的协 议和网络t o p o 结构变得复杂。同时对n s 研究虽多,但主要是使用其在协议开发和新的网 2 南京信息工程大学硕士论文 n s 2 代码自动生成的交互设计 络应用的模拟上,而对其复杂脚本代码的自动化研究却很少。同时,代码的自动生成的研 究范围也迅速扩大,从简单的w e b 脚本到现在很多模拟的复杂的脚本研究。同时,越来越 多的公司也投入到n s 研究工作中,但它们多是利用n s 研究对某种情况下的网络性能。 1 3 本文的所做的工作 n s 2 通过t c i t k 系统对0 t c l 语言支持,把系统程序语言模块化,然后用0 t c l 来配置 模拟模型,这样的构架适用这种计算机程序发展趋势。面对的研究人员对n s 2 软件越来越 多的使用,很多研究人员都会面临很多问题:在刚开始对c + + 是比较熟悉的,但对o t c l 脚 本就比较不熟悉;或者是在使用一段时间后感到对一个复杂的网络模型用o t c l 脚本的书写 比较麻烦;或是由于o t c l 中需要调用n s 2 中的现有对象太多,对少有使用的格式不清楚; 或是研究大型的网络t o p o 结构的性能时,使用手写出错太多。那有没有一个更简单的更容 易操作的模式对其应用呢? 本文就是针对这些情况,在l i n u x 操作系统下开发了一个仿真的 代码交互生成系统,只要把相应的条件输入,就可以获得一个完整的运行脚本,并运用生 成的o t c l 脚本在n s 2 软件中完成相应的试验。把模块的化的o t c l 语言用其他的形式表达 出来,对想要从事n s 2 研究的人员或学者,提供方便,把繁琐的脚本撰写工作交给后台脚 本运行。 由于o t c l 是可嵌入式的,所以我开发的脚本生成器是也应该有供用户使用的2 次接口, 即如果用户自定义了一个模型,本文程序也提供了使用该模块的接口。所以综上所述,作 者主要工作是: ( 1 ) 研究了n s 2 所有模拟所需要的o t c l 代码,包括了无线模拟和有线模拟时,不同模 块的脚本使用情况。 ( 2 ) 分析了在原有模块和加入新模拟模块后,n s 2 中关于c 与o t c l 脚本交互的情况, 并在基础上给出了使用各种模块所需要步骤。 ( 3 ) 研究交互式界面设计,介绍了几种主要的界面设计模型和交互方式,并分析其优 缺点并选择开发模型,一种基于不同方式的数值形式化脚本的自动生成模型。 ( 4 ) 具体编写了生成n s 2 模拟的代码生成的程序,包括一般使用n s 2 所要的模拟模型, 和加入新模块的接口,同时维护配置模板,可以通过对其修改完成n s 2 代码生成 ( 5 ) 对新编写的程序评估。 南京信息工程大学硕士论文 n s 2 代码自动生成的交互设计 第2 章n s 2 的基本知识 好的网络仿真软件是可以屏蔽对操作系统的实际的访问,而且可以近乎真实的模拟网 络环境,让我们在各个层次上模拟网络运行。n s 2 正是符合以上条件的网络模拟软件,它 源代码公开,可扩展性强。速度和效率兼备,但也存在这界面不够友好,可视化比较差, 建模层次不清楚等一些问题。 2 1n s 2 的介绍 n s 2 是伯克利分校开发的一个仿真软件,主要用在与网络相关的仿真,无论是固定网 络还是无线网络,它都有很好的支持,尤其在新的网络协议研究方面。具有重大意义。n s 2 是m i t 的一个作品,它是一个面向对象的网络仿真工具使用n s 2 可以完整地仿真整个网 络环境,n s 2 使用一整套c h 类库实现了大多数常见的网络协议以及链路层的模型,使用这 些类的实例我们就可以搭建起整个网络的模型,而且包括了各个细节。正是这样一种工具, 我们可以在单机环境中模拟网络的各个元素,加深对网络的了解和认识;同时,加快我们 开发新协议的速度。n s 2 类似的软件有o p n e t , 这是一个商用的网络仿真软件,它能够针 对各款交换机和路由器来搭建网络,与之相比,n s 2 是一个免费的软件,它可以在 w i n d o w s u n i x 上运行。可以看到n s 2 的所有源代码。因此学术界更多的是采用n s 2 来做仿 真试验。 n s 起源早在1 9 8 9 年r e a l 网络仿真器,r e a l 仿真器使用的是c + + 语言编写的一种仿真 器。它提供源代码给用户,以便感性趣的用户可以根据他们自己的目的修改仿真器。后来 在r e a l 网络仿真器基础上l a w r e n c eb e r k e l e yn a t i o n a ll a b o r a t o r y 的网络仿真研究组开 发了n s 的第一个版本。它继承了r e a l 仿真器的工作,包括几种风格的t c p ( 包括s a c k , t a h o e 和r e n o ) 和路由器调度算法等,并形成了一个可扩展配置的事件驱动器引擎。n s i 所使用的仿真描述语言是工具命令语言t e l 的扩展。一个仿真有一个t c l 程序来描述。通 过n s 的命令,可以定义网络的拓扑、配置业务源和会聚点、收集和统计信息,并调用仿真 执行命令。通过建立这样一个通用的语言,n s 具有很强大的仿真配置描述能力。在n s 一1 改进的基础上,u cb e r k e l e y 发布了n s 版本2 。n s 一2 相对n s i 来说有了重大的改变。比 如n s - 2 重新定义了对象结构。使用m i t 的面向对象的t c l ( 0 t e l ) 代替了t e l 作为仿真配 置的接口,o t e l 解释器的接口代码和主仿真器分离等。 4 南京信息工程大学硕士论文 n s 2 代码自动生成的交互设计 当然n s 2 像u n i x 内核一样有自己的版本号,本文采用的是u n i x 环境下n s 一2 2 9 。目前 n s 的开发有d a r p a 的s a m a n 项目和n s f 的c o n s e r 项目的支持。n s 具有开放性的结构和良 好的可扩充性。n s 已经从其他研究者那里吸收了丰富的模块,包括u c bd a e d e l u s 和伽 m o n a r c h 计划以及s u n 微系统公司获得的无线代码。它由于它是c 为主的开发环境,u n i x 对网络有很好的支持并且u n i x 也是开源的,所以在u n i x 上它应用比较方便,而在w i n d o w 上有相应的运行程序,也可以使用虚拟系统。n s 针对网络仿真,已经做了大量的模型化工 作,对网络系统中一些通用的网络实体已经进行了建摸。相对于一般的离散型的仿真器来 说,n s 的优势就在于它有非常丰富的构件库,而且这些对象易于组合,易于扩展。用户可 以利用这些已有的对象,进行少量的扩展,组合出所要研究的网络系统模型,然后进行仿 真。 n s 2 从一开始就被设计成为一个离散型事件的仿真器。离散事件仿真器简单的说,就是 仿真器不停地处理一个个离散事件,直到所有的事件都被处理完或镇某一特定的事件发生 为止。一般地,事件规定了系统状态的改变,状态的修改在发生时进行。在一个网络仿真 器中,典型的事件包括了系统的改变,状态的修改在事件发生时进行。像事件到达,时钟 超时等为典型事件。每一个n s 仿真中,都有一个仿真时钟推进有时间发生量,但仿真处理 过程的速率不直接对应这实际时间,也就是处理过程与到达时间不同步,一个事件处理中 可能又会产生后续的事件,n s 仿真器就是不停地处理一个个事件,当所有的事件都被处理 完或某特定的事件发生,才停止工作。 2 2n s 2 的组成 n s 2 是由c 开发完成的,其构架也是由c h 为底层构建的,再由o t c l 对其配置,透过 二种程序语言来实现整个的环境。为什么选择用两种不同的语言开放模拟,是由于: 1 变动率不高,要求比较高效率,使用c + + 语言来模拟所以n s 2 的对象。 2 变动率很高,不要求比较高效率,使用o t c l 语言来模拟所需的环境。 使用c + + 代码一般是面对底层协议,包括数据包的封装,数据包的分类,触发离散事件发 生时的运行活动等,同时也可以编写网络组成器件供n s 2 使用。t c l ( o t c l ) 本身是用c 开发 的,用于编写模拟环境相关的脚本,与低层有良好的融合,这更加促和了n s 2 的兼容性。 所以就n s 2 原有的模块的组成,可以划分成图2 一l 所示: 5 南京信息工程大学硕士论文n s 2 代码自动生成的交互设计 e v e n ts c h e d u l e ru i nz t c i c l o o o t c l 董 萋 暑 1 l c + + 图争1 瞒2 构架 其中,e v e n ts c h e d u l e r 是离散的具体事件,u i 是交互界面,t c l c l 是关联c + + 与o t c l 的 机制,t c l 为基本的开发脚本,0 t c l 加入了面向对象的概念。n e t w o r kc o m p o n e n t 为用c + + 编译好的网络基本协议或是处理算法等。 当n s 2 在计算机上安装完成后,就有在安装文件中分为不同的文件夹存放不同的文件 或是程序,并且不同的文件夹对应了不同的运行模拟模块,故晦就模拟模块来说也可以分 为下面主要几个部分, n s ,主要存放是n s 2 的安装运行文件,模型构建库等。 t c l t k ,在u n i x l i n u x 环境下的两个包,它们一起构成了一套开发系统应用程序和图 形用户界面接口( g u i ) 应用程序的环境。 n a m ,模拟开发工具之一,把模拟过程和数据用动态图像的形式展示。 x g r a p h ,把模拟输出的数据用坐标统计图展示。 n e wn o d e 。包括0 t c i 脚本,和新的c 什编译好的对象成员,c + t 编译好的对象成员一 般以o 形式存放于n s 中,0 t c l 脚本,以女t c l 存在。 c w e b ,与网页相关工具,其中有c t a n g l e 和c w e a v e 二个工具分别是将 w 文件置换成 $ c 或 r e x 文件,并第三方文件 r 转变为t e x 数学文档或c c + 十代码文档。 l i b ,连接文件库,包括了c + + 编译好的底层文件所要的连接文件,也包括0 t c l 与c + + 交互所需的连接文件。 z l i b ,通用数据压缩库。 s g b g 卜i t m ,可选组件,分别是斯坦福大学图形基层包和乔治亚工学院i n t e r n e t 模 拟技术。 c y e b ,z l i b ,s g b g t - i t m 属于可选组件,n a m 。x g r a p h 也属于可选组件但使用比较 6 南京信息工程大学硕士论文 n s 2 代码自动生成的交互设计 频繁。由于n s 2 是由c c + + 开发完成的,但它构建环境由t c i o t c l 语言开发的,且两者都 是面向对象的高级语言,各有不同的类库实现不同的模块。主要有4 个大类:t c l , t c l o b j e c t ,t c l c l a s s ,t c l c o m m a n d 。调用t c l 类主要是为了获得t c l 翻译器的引用,来调 用翻译器功能。n s 调用刨建和删除各个模拟对象,都是调用t c l o b j e c t 类下的各个子类。 t c l c l a s s 类是一个纯虚基类,只能生成派生类后才能使用,这个类的作用是实现从c + + 类 的对象到o t c l 类的对象之间的桥梁。而构造一个新的t c l 解释器执行的普通命令调用 t c l c o m m a n d 类,再在相对应的o t c l 脚本中添加该类创建的类对象的调用方法,就可在o t c l 脚本中调用此对象了。下面具体介绍n s 2 的t c l o b j e c t 类的构成: 图2 _ 2骼2 中t c l o b j e c t 类结构 t c l o b j e c t 类是各类功能类的父类,它下面一般由n s o b j e c t 和o t h e r o b j e c t 两类构成, o t h e r o b j e c t 可以调用t c l c o m m a n d 生成。而n s o b j e c t ,是n s o b j e c t 主要构成类,由 c o n n e c t o r 和c l a s s i f i e r 构成。c o n n e c t o r ,构造器,主要是构建单个模拟对象所耍的属 性,其主要由路由队列管理属性,网络时延,网络协议和跟踪对象等构成。c l a s s i f i e r , 分类器,主要为连接不同对象属性负责,由单一连接,多重连接等类构成。 2 3 n s 2 仿真过程 n s 2 的安装文件可在自己的官方网站上下载,最新的版本为2 2 9 。在l i n u x 下安装主 要下载其l i n u x 版本,后缀为t a r ,或是t a r g z ,这两者都是压缩文件,其里面内容为n s 源 文件。当把压缩文件解压后,进入其文件夹,先配置l i n u x 环境变量,( 建议使用r o o t 用 户,这样所有用户都可以在其安装完后使用) 即把编译源文件所需要的库文件和环境参数 告诉操作系统,用e x p o r t 命令即可,然后m a k e ,m a k ei n s t a l l 其具体步骤可在相关网 7 南京信息工程大学硕士论文n s 2 代码自动生成的交互设计 站上查到。由于本文研究l i n u x 下的n s 2 ,在w i n d o w s 下的安装就不介绍了。 完成好n s 2 的安装后,就可以运行n s 2 了。由于n s 针对网络仿真已经做了大量的模型 化工作,对网络系统中一些通用的网络实体可直接进行建摸,也可以利用这些已有的对象, 进行少量的扩展,组合出所要研究的网络系统模型,然后进行仿真。 用户可以n s 仿真可以分为构件的扩展阶段( 假如n s 库的构件已经可以满足,就可以 省略这步) ,仿真阶段,对仿真结果分析阶段。一般可分为以下几个步骤: 编写所需要特殊的构件。一般包括自己所需要的特定的服务、代理、链路、路由等。 测试编译这些构件。 开始编写o t c l 脚本。首先配置仿真网络拓扑结构,此时可以确定链路的基本特性。 建立协议代理,包括端设备的协议绑定和通信业务量分布。 设置t r a c e 对象。t r a c e 对象能够把仿真过程发生的特定类型的事件记录在t r a c e 文件中。 编写其他辅助过程,设定仿真时间,用n s 解释执行脚本文件。 对t r a c e 文件进行分析,得出有用的数据,也可以用n r m ,t h r e s h o l d ,x g r a p h 等工 具观看网络仿真运行的过程。 重新改变配置拓扑结构和业务模型,重新进行仿真过程。 但如果要加入自己编译好的全新c + + 模拟构建文件并o t c l 实现对其调用,第二步具体 为下面几个步骤:首先把c + + 源文件 c 编译为连接文件 o ,其中c + + 源文件中要包括:l 、 新模块构建的名称和基本类2 、建立c + + 舆t c l 同的接口模组3 、构建基本类中的函数。 然后让n s 2 认识你新加的模块,首先要c o m m o n 文件夹下面的p a c k e t h 文件中枚举类型 p a c k e t t 中添加新模块的封包名称,若有新的包格式还要在d a t a _ p a c k e t ( p a c k e t tt y p e ) 函数和宏d a t a _ p a c k e t ( t y p e ) 中添加该包类型,同时也在p a c k e t h 文件中的pi n f o ) 类中 添加新模块的协议名称。若要对该数据包作特殊处理则让c m b t r a c e 识别新模块。然后在 c m u t r a c e 中新增记录此封包,在做实验时,o i u t r a c e 类可捕获并记录该模块内容。接着, 于n s l i b t c l 中新增接获模块数据包的节点选择项和可供t c l 呼叫的建构函数式。最后, 把编译好的连接文件地址加入m a k e f i l e 中的o b j - c c ,对n s 2 进行重新编译。流程图如下: 图2 - 3n s 2 运行流程图 8 南京信息工程大学硕士论文 n s 2 代码自动生成的交互设计 2 4 本章小结 n s 2 是一款使用十分广泛的网络模拟软件,如果要运行n s 2 仿真代码生成系统,首先要 了解n s 2 的基本原理和知识,所以本章主要是从n s 2 的基本原理与构成着手,着重介绍n s 2 工作流程和组成原理,深入浅出的阐述了n s 软件的构件与其相互关系。此外,还对n s 2 运 行过程做了简单的介绍。 文章的着重点是在仿真代码生成方面,下面应该介绍和分析n s 2 仿真代码o t c l 与c + + 的各个方面。 9 南京信息工程大学硕士论文 n s 2 代码自动生成的交互设计 第3 章0 t c l 语言 在过去的十五年里,人们编写计算机程序的方法发生了根本的转变。这种转变是从c 或c + + 等系统程序设计语言到p e r l 或t c l 等脚本语言的过渡。虽然很多人参与了转变,却 很少有人意识到它的发生,更不用说知道为什么会发生。与系统程序设计语言相比,不同的 脚本语言为不同的工作而设计,这导致了语言问的根本不同。系统程序设计语言起源于像 内存字等最初期的计算机元素,它为建立数据结构和算法而创建。相反的,脚本语言为胶着 而设计:他们假设已经存在一套强大的组件,而它主要是把组件连在一起。系统程序设计 语言使用强类型定义来帮助处理复杂事务,而脚本语言使用无类型定义来简化组件阅的联 系,并提供快速应用开发。脚本语言和系统程序设计语言互为补充,并且二十世纪六十年代 以来的大多数主要的计算机平台都同时提供这两种类型的语言。这些语言在组件框架中有 着典型的应用:组件由系统程序设计语言创建,并由脚本语言组合在一起。然而,速度更 快的机器,更好的脚本语言,图形用户界面和组件构造重要性的不断提高,因特网的发展 等发展趋势大大提高了脚本语言的应用。在今后的十年中,这种趋势将继续,而且越来越 多的完全使用脚本语言和系统程序设计语言书写的应用程序将主要用来创建组件。 3 1 0 t c l 简单介绍 在描述o t c l 前,应首先介绍其前身t c l 语言,因为o t c l 的很多功能都是从其前身继承 下来的。 t c l 是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是 t o o lc o m m a n dl a n g u a g e 的缩写,发音为“t i c k l e ”, 实际上包含了两个部分:一个语言 和一个库。首先,t c ! 是一种简单的脚本语言主要使用于发布命令给一些互交程序如文本 编辑器、调试器和s h e t l 。它有一个简单的语法和很强可扩充性,t c l 可以创建新的过程 以增强其内建命令的能力。其次,t e l 是一个库包,可以被嵌入应用程序,t c l 的库包含了 一个分析器、用于执行内建命令的例程和可以使你扩充( 定义新的过程) 的库函数。应用 程序可以产生t c l 命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读 取( 按钮或菜单等) 。但当t e l 库收到命令后将它分解并执行内建的命令,经常会产生递 归的调用。 t c l 是一种灵活的、交互式脚本语言,它的实现依赖于t c l 内部的c 函数库。添加新的 1 0 南京信息工程大学硕士论文 n s 2 代码自动生成的交互设计 c 函数就可以扩充t e l 的命令和功能,是扩展性非常强的脚本程序设计语言。t e l 解释器把 用户输入的命令和程序语句进行初步分析,然后调用c 函数库里的相应函数来执行,输出 结果。 t e l 语言的吸引人之处在于它简单同时支持嵌入式应用类似于u n i x 中的s h e l l , w m d o w 中的v b s c r i p t 一样,但具体语法与前两者有所不同。它的基本特点有: 任何东西都是一条命令,包括语法结构( f o r ,i f 等) 。 $ 任何事物都可以重新定义和重载。 所有的数据类型都可以看作字符串。 语法规则简单 $ 提供事件驱动给s o c k e t 和文件,基于时间或者用户定义的事件也可以。 动态的域定义。 很容易用c ,c h ,或者j a v a 扩展。 解释语言,代码能够动态的改变。 完全的u n i c o d e 支持。 $ 平台无关,w i n 3 2 ,u n i x , m a c 上都可以跑。 代码紧凑,易于维护。 o t c l 是一款用相对透明的语法来描述高级程序的脚本语言,像很多l a n g u a g e :u n i x s h e l l ( s h ,c s h ,) ,p e r l ,v b ,a n dj a v a s c r i p t 等脚本语言一样有完整的语法和特定的 运行环境。0 t c l 为麻省理工( m i t ) 开发提出的亟向对象的t c l 脚本语言( o b j e c tt c l ) ,可 跨平台运行,支持面向对象,也可以这么表示:0 t c l = t e l + 0 0 ,o o 为o b j e c to r i e n t e d 。 0 t c l 在t e l 中加入类、实例、继承等面向对象的概念。n s 的构件通常作为一个c + + 类来实 现,同时有一个o t c l 类与之对应。构件的主要功能在c + + 中实现,o t c l 中的类则主要提供 c 抖对象面向用户的接口。用户通过编写o t c l 脚本来对这些对象进行配置、组合,模拟过 程,最后调用完成模拟。 0 t c l 是t c l 语言的扩充,它的绝大部分优点继承了t c l 语言的特点,此外,还有抽象, 封装性。共享性,重用等面向对象的优点,面向对象机制的加入使得原始的t e l 变得更加 强大,更加方便使用。 3 2o t c l 的基本语法 由于o t c l 是t c l 语言的扩充,t c l 的语法规则就是0 t c l 绝大部分的语法规则。t c l 语 南京信息工程大学硕士论文n s 2 代码自动生成的交互设计 法跟大多数脚本语言一样,灵活多变,功能丰富,o t c l 也是继承了t c l 语法规则,若添加 了面向对象的概念。 3 2 1t c l 的语法规则 1 ) 解释器 在t c l 的数据结构中的核心是t c l i n t e r p ( 解释器) 。一个解释器包含了一套命令,一 组变量和一些用于描述状态的东西。每一个t c l 命令是在特定的t c l i n t e r p 中运行的,基 于t c l 的应用程序可以同时拥有几个t c l i n t e r p 。t c l i n t e r p 是一个轻量级的结构,可以 快速的新建和删除。 2 ) 数据类型 t c l 只支持一种数据结构:字符串( s t r i n g ) 。所有的命令,命令的所有的参数,命令 的结果,所有的变量都是字符串。请牢记这点,所有的东西都是字符串。它比较有特点 的方面字符串有三种形式:命令( c o m m a n d ) ,表达式( e x p r e s s i o n ) 和表( 1 i s t ) 。 3 ) 基本语法 t c l 有类似于s h e l l 和l i s p 的语法,当然也有许多的不同,一个命令就是一个字符串 ( s t r i n g ) ,命令基本构成是:命令名+ 参数+ 参数+ 。一条t c l 的命令串包含了一条或 多条命令用换行符或分号来隔开,而每一条命令包含了一个域( f i e l d ) 的集合,域使用空白 分开的,第一个域是一个命令的名字,其它的是作为参数来传给它。例如:“s e t v a l ( c h a n ) c h a n n e l w i r e l e s s c h a n n e l ”,相当于c 语言中的c h a r * t h a n = ” c h a n n e l w i r e l e s s c h a n n e l ”。c h a n 是一个变量,这条命令分为三个域:l 、s e t ,2 、v a l ( e h a n ) ,3 、c h a n n e l 胛i r e l e s s c h a n n e l 。s e t 使用于设置变量的值的命令,v a l ( c h a n ) 、 c h a n n e l w i r e l e s s c h a n n e l 作为参数来传给它,e h a n 使它要操作的变量名, c h a n n e l w i r e l e s s c h a n n e l 是要付给的c h a n 值:t c l 的命令名可以是内置的命令也可以是 用户建的新命令,如果是用户用户建的新命令应用程序中用函数t e l _ c r e a t e c o m m a n d 来创 建。所有的参数作为字符串来传递,命令自己会按其所需来解释的参数的。命令的名字必 须被打全,但t c l 解释器找不到一同名的命令时会用u n k n o w n 命令来代替。在很多场合下, u n k n o w n 会在库目录中搜寻,找到一个的话,会自动生成一个t c l 命令并调用它。u n k n o w n 经常完成缩略的命令名的执行。 4 ) 注释 第一个字母是圹的t c l 字符串是注释。 1 2 南京信息工程大学硕士论文n s 2 代码自动生成的交互设计 5 ) 其他细节规则 a ) 用双引号来集群参数,目的在于使用有空白的参数。如一个参数用一双引号来开 始,该参数会一直到下一个双引号才结束,但引号中可以有换行符和分号。 b ) 命令子替换( 用方括号) 。比如,“s e tn s 【n e ws i m u l a t i o n 】”,相对于执行n w s i m u l a t i o n 命令来替换原命令s e tn s ,最终,r l t - 为n e ws i m u l a t i o n 的返回值。 c ) $ 用美元符进行变量替换。即引用该变量。 d ) 转移符替换。与c 语言一样,特定的符号有特定的意义,应用转移符替代。 e ) 用花扩括号来集群参数。用花扩括号来集群参数与用双引号来集群参数的区别在 于:用花扩括号来集群参数其中的三种上述的子替换不被执行。而且可以嵌套。 f ) 命令是用换行符或分号来分隔的。 g ) 域通常是有空白( t a b 横向制表健s p a c e 空格) 来分开的。 h ) 系统只进行一层子替换,机制替换的结果不会再去做子替换。而且子替换可以在任 何一个域进行, 6 ) 命令名 由于0 t c l 可嵌入开放,其命令可以根据需求用户设计,但还是有常用的保留命令,像 p u t s ,e x e c ,s e t ,n e w ,e x p r ,c l o s e ,i f ,s w i t c h ,w h i l e ,f o r 。f o r e a c h ,b r e a k ,c o n t i n u e 等,与s h e l l 语言命令基本雷同。 3 2 20 t c l 语法介绍 o t c l 语言设计采用了称为”o b j e c tc o m m a n d ”的方法每个命令可能被解释成对象,而 子命令被解释成传递给对象的消息。在o t c l 中,类( c l a s s ) 和对象( o b j e c 协) 是区分开来的。类 表示一种类型,对象是类的实例。在o t c l 中,类可以看成是一种特殊的对象。类标志对 象的类名,类中可以放置所有对象共享的变量,类似于c + + 中的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论