




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本本 科科 毕毕 业业 设设 计计 院院 系系 计计算机科学与技算机科学与技术术系系 专专 业业 计计算机科学与技算机科学与技术术 题题 目目 元搜索引擎的元搜索引擎的设计设计与与实现实现 年年 级级 2007 级级 学学 号号 学生姓名学生姓名 刘宣刘宣 指指导导老老师师 职职 称称 教授教授 论论文提交日期文提交日期 2011.6.14 南京大学本科生南京大学本科生毕业论毕业论文(文(设计设计)中文摘要)中文摘要 毕业论文题目: 元搜索引擎的设计与实现 计算机科学与技术 院系 计算机科学与技术 专业 2007 级本科生姓名: 指导教师(姓名、职称): 摘要: 自从华顿大学的学生开发的 metacrawler 问世以来,元搜索引擎这个概念被提出。 搜索引擎顾名思义是指根据一定的策略、运用特定的计算机程序搜集互联网上的信息, 在对信息进行组织和处理后,为用户提供检索服务的系统。较传统搜索引擎而言,它弥 补传统搜索引擎的不足。具有搜索效率高、反馈信息更加全面、反馈界面更加个性化、 便于浏览等许多优势。但是经过初步调查,元搜索引擎的使用却并未普及。我认为,这 是由元搜索引擎的性质所致的。人们会更加津津乐道于自己以往使用的习惯,微软的成 功就见证了这一点。将元搜索引擎的技术运用于实用软件中,这一问题就会迎刃而解。 另一方面,如何使软件更加便于操作和使用一直是软件设计中的一项重要要求。本文首 先介绍了元搜索引擎的历史背景及运用技术,然后对本文实现的软件的设计框架进行具 体阐述。 关键词:mfc、搜索引擎、元搜索引擎、信息检索、activex 组件 南京大学本科生南京大学本科生毕业论毕业论文(文(设计设计)英文摘要)英文摘要 thesis: meta search engine design and implementation department: computer science and technology specialization: computer science and technology undergraduate: liu xuan mentor: yuan chunfeng abstract: since the students at the university wharton metacrawler developed since the advent of the concept of meta search engine is presented. search engine the name suggests is based on certain strategies, the use of specific computer programs to collect information on the internet, in the organization and information processing, retrieval services to provide users with the system. than traditional search engines, which make up the deficiencies of traditional search engines. with a search for efficiency, feedback is more comprehensive, more personalized feedback interface, easy to navigate, and many other advantages. however, after preliminary investigation, the use of meta search engines are not popular. i think this is the nature of meta- search engine caused. people will be more talked about in his previous habit of using microsofts success to witness this. meta search engine technology used in utility software, this problem will be solved. on the other hand, how to make the software more user-friendly operation and use of software design has been an important requirement. this paper introduces the historical background of meta search engines and the use of technology, then we realize the design of the software framework specifically addressed. key words: mfc, search engines, meta search engine, information retrieval, activex 目录目录 第一章:搜索引擎概述1 1.1 搜索引擎的发展历史1 1.2 元搜索引擎与传统搜索引擎的对比2 1.3 元搜索引擎的系统架构及其工作原理2 第二章:元搜索引擎的设计与实现4 2.1 开发平台和运行环境 .4 2.2 软件设计框架 .4 2.3 模块具体实现 .7 2.3.1 软件界面模块 7 2.3.2 功能模块 9 2.3.3 网页嵌入模块 9 2.3.4 元搜索引擎 .16 2.4 软件评估.18 第三章:有待实现的功能21 3.1 虚拟机防毒功能.21 3.2 放大镜功能.22 第四章:总结24 4.1 总结.24 参考文献.25 致谢.26 1 第一章:搜索引擎概述 1.1 搜索引擎的发展历史 在互联网发展的最初阶段,网站的数量相对较小,人们对信息的查找比较方便;随 着 web 2.0 的普及,网络信息的膨胀速度呈指数型增长。人们越来越难以找到自己需求 的信息。这时,搜索引擎出现了,一些为了满足大众信息检索信息需求的专业搜索引擎 网站也应运而生。搜索引擎的历史主要经历了以下几个阶段: 所有搜索引擎的祖先,是 1990 年由蒙特利尔大学学生 alan emtage 发明的 archie。虽然当时 world wide web 还未出现,但网络中文件传输还是相当频繁的,而 且由于大量的文件散布在各个分散的 ftp 主机中,查询起来非常不便,因此 alan emtage 想到了开发一个可以以文件名查找文件的系统,于是便有了 archie。 archie 工作原理与现在的搜索引擎已经很接近,它依靠脚本程序自动搜索网上的文 件,然后对有关信息进行索引,供使用者以一定的表达式查询。由于 archie 深受用户 欢迎,受其启发,美国内华达 system computing services 大学于 1993 年开发了另一 个与之非常相似的搜索工具,不过此时的搜索工具除了索引文件外,已能检索网页。 当时, “机器人”一词在编程者中十分流行。电脑“机器人” (computer robot)是 指某个能以人类无法达到的速度不间断地执行某项任务的软件程序。由于专门用于检索 信息的“机器人”程序像蜘蛛一样在网络间爬来爬去,因此,搜索引擎的“机器人”程 序就被称为“蜘蛛”程序。 世界上第一个用于监测互联网发展规模的“机器人”程序是 matthew gray 开发的 world wide web wanderer。刚开始它只用来统计互联网上的服务器数量,后来则发展 为能够检索网站域名。 与 wanderer 相对应,martin koster 于 1993 年 10 月创建了 aliweb,它是 archie 的 http 版本。aliweb 不使用“机器人”程序,而是靠网站主动提交信息来建立自己的 链接索引,类似于现在我们熟知的 yahoo。 随着互联网的迅速发展,使得检索所有新出现的网页变得越来越困难,因此,在 matthew gray 的 wanderer 基础上,一些编程者将传统的“蜘蛛”程序工作原理作了些 改进。其设想是,既然所有网页都可能有连向其他网站的链接,那么从跟踪一个网站的 2 链接开始,就有可能检索整个互联网。到 1993 年底,一些基于此原理的搜索引擎开始 纷纷涌现,其中以 jumpstation、the world wide web worm(goto 的前身,也就是今 天 overture) ,和 repository-based software engineering (rbse) spider 最负盛名。 然而 jumpstation 和 www worm 只是以搜索工具在数据库中找到匹配信息的先后次 序排列搜索结果,因此毫无信息关联度可言。而 rbse 是第一个在搜索结果排列中引入 关键字串匹配程度概念的引擎。 最早现代意义上的搜索引擎出现于 1994 年 7 月。当时 michael mauldin 将 john leavitt 的蜘蛛程序接入到其索引程序中,创建了大家现在熟知的 lycos。同年 4 月, 斯坦福(stanford)大学的两名博士生,david filo 和美籍华人杨致远(gerry yang) 共同创办了超级目录索引 yahoo,并成功地使搜索引擎的概念深入人心,从此搜索引擎 进入了高速发展时期。 1.2 元搜索引擎与传统搜索引擎的对比 传统搜索引擎 (search engine)实质是个专用的 www 服务器,它存有庞大的索引 数据库,收集了全世界成千上百万个 www 主页的文字信息。而元搜索引擎较传统搜索引 擎而言,它没有自己的数据库,它是依赖于传统搜索引擎而存在的。元搜索引擎的出现, 对于那些需要连续地使用不同的搜索引擎重复相同的检索的人来说,是一个福音。使用 元搜索引擎同时对几个搜索引擎进行检索,获得分级编排的检索结果。元搜索引擎是在 搜索引擎的基础之上,根据该请求向多个搜索引擎发出实际检索请求,搜索引擎执行元 搜索引擎检索请求后将检索结果以应答形式传送给元搜索引擎,元搜索引擎将从多个搜 索引擎获得的检索结果经过整理再以应答形式传送给实际用户。 1.3 元搜索引擎的系统架构及其工作原理 元搜索引擎又称多搜索引擎,它可以同时查找多个单搜索引擎的 www 站点.按其搜索 机制可分为并列式和串行式.并行式元搜索引擎指的是将查询要求同时发向各个独立的 搜索引擎,然后将结果按特定的顺序提供给用户。串行式元搜索引擎是将查询要求先发 3 给某个独立的搜索引擎,待其返回结果再将请求发给另一个搜索引擎。并行式元搜索引 擎运行模式好,搜索时间短。 如图 1-1 所示是元搜索引擎的系统框架和工作原理图。用户通过客户端浏览器提交 检索请求,然后由元搜索引擎对检索请求进行处理,提取检索关键字交给检索接口代理, 由检索代理将关键字分发到每个具体的搜索引擎,最后将所有搜索引擎得到的结果进行 去重、合并,最终提交给用户。 图图 1-11-1 元搜索引擎的工作原理元搜索引擎的工作原理 一个真正的元搜索引擎由三部分组成,即:检索请求提交机制、检索接口代理机 制、检索结果显示机制。“请求提交“负责实现用户“个性化“的检索设置要求,包括调用 哪些搜索引擎、检索时间限制、结果数量限制等。“接口代理“负责将用户的检索请求“ 翻译“成满足不同搜索引擎“本地化“要求的格式。“结果显示“负责所有元搜索引擎检索 结果的去重、合并、输出处理等。 我们可将元搜索引擎看成具有双层客户机服务器结构的系统。用户向元搜索引擎 发出检索请求,元搜索引擎再根据该请求向多个搜索引擎发出实际检索请求,搜索引擎 执行元搜索引擎检索请求后将检索结果以应答形式传送给元搜索引擎,元搜索引擎将从 多个搜索引擎获得的检索结果经过整理再以应答形式传送给实际用户。当然,某些元搜 索引擎具有略微不同的机制。 4 第二章:元搜索引擎的设计与实现 2.1 开发平台和运行环境 本文实现的元搜索引擎软件采用 c+语言开发,开发平台为 visual studio 2010; 操作系统为 windows7 sp1 (x64). 2.2 软件设计框架 该软件的设计框架如图 2-1 所示。 5 启动软件启动软件 用户界面用户界面 天气预报天气预报新闻新闻股市行情股市行情文学阅读文学阅读 预置与历史预置与历史 记录关键词记录关键词 搜索引擎搜索引擎 1搜索引擎搜索引擎 2搜索引擎搜索引擎 3. 结果比较、排序、结果比较、排序、 筛选、汇总筛选、汇总 图图 2-12-1 元搜索引擎的设计框架元搜索引擎的设计框架 首先启动软件,加载历史浏览信息,同时再加载预置关键字与历史关键字文档。启动 软件后显示出一个人机交互界面,其中有天气预报查询、新闻浏览、股市行情浏览、文学 阅读等功能。点击不同的功能按钮后,可分别进入其各自的功能页面。每个功能页面的起 始界面中显示有该功能的历史浏览记录中的所浏览过的网页片段。为了便于那些不会使用 键盘的用户使用本软件,一个新的查询操作可通过两种方式来进行:一种方式是通过鼠标 点击预置的或历史记录的关键字进行查询;另一个方式是通过键盘输入关键字进行查询, 每一次输入的关键字都将被写进历史记录。随后通过元搜索引擎模块,并行的将关键字使 6 用不同的搜索引擎进行查询,查询的结果进行比较、筛选、排序之后以网址的方式反馈给 用户。用户可以用鼠标点击相关网址,通过 ie 浏览器对该网页进行浏览。最后,用户浏览 的网页以 html 的文件格式被保存下来,供下次浏览。 本文实现的元搜索引擎软件的模块组成如图 2-2 所示。 元元 搜搜 索索 引引 擎擎 模模 块块 网网 嵌嵌 模模 入入 模模 块块功功 能能 模模 块块软件界面模块软件界面模块 图图 2-22-2 元搜索引擎模块组成元搜索引擎模块组成 软件主要分成四个模块:软件界面模块、功能模块、元搜索引擎模块、网页嵌入模 块。界面模块用于显示一个友好的人机交互界面;功能模块用于通过对象实现对功能的 抽象;元搜索引擎模块用于将关键字在网络上进行检索;网页嵌入模块用于抓取的网页 内容并以控件的形式在软件中显示出来。 各模块所关联的源程序文件如表 2-1 所示。 表表 2-12-1 源文件列表源文件列表 literature1.cpp news1.cpp stockmarket1.cpp 功能模块 weather1.cpp 主程序模块略 buttons.cpp literature.cpp stock market.cpp news.cpp 源文件 界面模块 weather.cpp 7 windows.cpp acquisition.cpp database.cpp judge.cpp 元搜索引擎模块 results.cpp download.cpp temp.htm upload.cpp 网页嵌入模块 mfcwinsockctl.cpp 背景及图标略 天气预报.liu 新闻浏览.liu 股市行情.liu 网页变体文件 文学阅读.liu 外部资源文件 说明文档 readme.txt 2.3 模块具体实现 2.3.1 软件界面模块 本文实现的元搜索引擎采用 c+编写,c+中的 mfc 是微软基础类(microsoft foundation classes),实际上是微软提供的,用于在 c+环境下编写应用程序的一个框架 和引擎,vc+是 winos 下开发人员使用的专业 c+ sdk(sdk,standard software develop kit,专业软件开发平台),mfc 就是挂在它之上的一个辅助软件开发包。它是 win api 与 c+的结合,api,即微软提供的 winos 下应用程序的编程语言接口,是一种软件编程的规 范,但不是一种程序开发语言本身。需要注意的是 mfc 不只是一个功能单纯的界面开发 系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有 好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制 (如创建,销毁),而是一些在 winos(用 mfc 编写的程序绝大部分都在 winos 中运行)中实 8 现内部处理的类。 本文软件开发环境的框架如图 2-3 所示。 图图 2-32-3 软件开发环境及组成框架软件开发环境及组成框架 本文实现的软件的主画面如图 2-4 所示。 9 图图 2-42-4 软件的主画面软件的主画面 2.3.2 功能模块 功能模块在本软件中起到了承上启下的作用,它承接了界面模块与网页嵌入模块两 大模块的交互。功能模块的具体实现是由 literature1、news1、stockmarket1、weather1 四个抽象类完成的,他们分别完成了文 学欣赏、新闻阅读、故事行情和天气预报四个功能的抽象。软件交互界面中网页的嵌入 只能通过调用功能模块来完成,因为只有功能模块可以直接调用网页嵌入模块。 这一模块中没有牵扯到任何复杂技术的运用,故不作过多详细解释。 2.3.3 网页嵌入模块 根据微软权威的软件开发指南 msdn(microsoft developer network)的定义, activex 插件以前也叫做 ole 控件或 ocx 控件,它是一些软件组件或对象,可以将其插 10 入到 web 网页或其它应用程序中。在因特网上,activex 插件软件的特点是:一般软件 需要用户单独下载然后执行安装,而 activex 插件是当用户浏览到特定的网页时,ie 浏 览器即可自动下载并提示用户安装。 它的安装的一个前提是必须经过用户的同意及确 认。activex 提供丰富的各种功能的控件,包括:多媒体控件、数据库控件、网络控件、 界面控件、图像控件、压缩控件、图表控件、系统控件、时间控件、打印控件、综合控 件、其它类控件等。 activex 是 microsoft 对于一系列策略性面向对象程序技术和工具的称呼,其中主 要的技术是组件对象模型(com) 。在有目录和其它支持的网络中,com 变成了分布式 com(dcom) 。在创建包括 activex 程序时,主要的工作就是组件,一个可以自足的在 activex 网络(现在的网络主要包括 windows 和 mac)中任意运行的程序。这个组件就 是 activex 近控件。activex 是 microsoft 为抗衡 sun microsystems 的 java 技术而提 出的,此控件的功能和 java applet 功能类似。 activex 组件包括如下几类: 1 自动化服务器:可以由其他应用程序编程驱动的组件。自动化服务器至少包括一 个或多个供其他应用程序生成和连接的基于 idispatch 的接口。自动化服务器可以含有 也可以没有用户界面(ui) ,这取决于服务器的特性和功能。 2 自动化控制器:那些使用和操纵自动化服务器的应用程序。 3 控件:activex 控件等价于以前的 ole 控件或 ocx。一个典型的控件包括设计时 和运行时的用户界面,唯一的 idispatch 接口定义控件的方法和属性,唯一的 iconnectionpoint 接口用于控件可引发的事件。 4 文档:activex 文档,即以前所说的 docobect,表示一种不仅仅是简单控件或自 动化服务器的对象。activex 文档在结构上是对 ole 链接和模型的扩展,并对其所在的 容器具有更多控制权。一个最显著的变化是菜单的显示方式。一个典型的 ole 文档的 菜单会与容器菜单合并成一个新的集合,而 activex 文档将替换整个菜单系统,只表 现出文档的特性而不是文档与容器共同的特性。 5 容器:activex 容器是一个可以作为自动化服务器、控件和文档宿主的应用程序。 例如,对于新建一个工程 mfcwinsock,其操作过程如下,new-projects-mfc activex controlwizard,然后输入 mfcwinsock 工程名。如下图 2-5 所示。 11 图图 2-52-5 新建工程示例新建工程示例 按 next,直至 finsh 出现,再按下 ok,如下图 2-6: 图图 2-62-6 工程信息工程信息 12 在 mfcwinsockctl.cpp 加入如下代码: #ifndef wm_mywinsock #define wm_mywinsock wm_user+1888 #endif view-classwizard-automation-add 我们为这个控件添加了一个 connect()的接口,出于通用性,安全性和扩展性的考 虑,我们采用了 variant 类型的参数: struct tagvariant union struct _tagvariant vartype vt; word wreserved1; word wreserved2; word wreserved3; union long lval; byte bval; short ival; float fltval; double dblval; variant_bool boolval; _variant_bool bool; scode scode; cy cyval; date date; 13 bstr bstrval; iunknown _rpc_far *punkval; idispatch _rpc_far *pdispval; safearray _rpc_far *parray; byte _rpc_far *pbval; short _rpc_far *pival; long _rpc_far *plval; float _rpc_far *pfltval; double _rpc_far *pdblval; variant_bool _rpc_far *pboolval; _variant_bool _rpc_far *pbool; scode _rpc_far *pscode; cy _rpc_far *pcyval; date _rpc_far *pdate; bstr _rpc_far *pbstrval; iunknown _rpc_far *_rpc_far *ppunkval; idispatch _rpc_far *_rpc_far *ppdispval; safearray _rpc_far *_rpc_far *pparray; variant _rpc_far *pvarval; pvoid byref; char cval; ushort uival; ulong ulval; int intval; uint uintval; decimal _rpc_far *pdecval; char _rpc_far *pcval; ushort _rpc_far *puival; ulong _rpc_far *pulval; 14 int _rpc_far *pintval; uint _rpc_far *puintval; struct _tagbrecord pvoid pvrecord; irecordinfo _rpc_far *precinfo; _variant_name_4; _variant_name_3; _variant_name_2; decimal decval; _variant_name_1; ; 它先是一个结构体,里面有一个重要成员 vartype vt;vt 即是指明当前的数据类 型,比如整型或者字符型,当指明 vt 后,后面看到各种变量类型包括在一个联合体当 中,也就是说指明 vt 后,你只能使用对应的其中之一变量类型。看着这众多的各种不 同类型变量集中在一起,确实让人吓了一跳,但细细看来,大多数变量跟我们平时的用 法相似。值得一提的是 safearray _rpc_far *parray;也许有很多人还没有接触过 safearray 类型的变量,safearray 实际上也是一个结构,大家可以参考 msdn,我也将 在后面介绍它的具体使用方法。 用同样的方法创建 disconnect()接口。创建两个事件,fireclosewinsock()响应网 络断开事件,firerecvsockevent()响应网络有数据到达的事件。 创建方法如下图 2-7 15 图图 2-72-7 创建方法创建方法 重载控件消息处理函数 windowproc(),在 view-classwizard 中打开类向导,在消息 映射中找到 windowproc,如下图 2-8 所示。 图图 2-82-8 16 2.3.4 元搜索引擎 1. 网页特征分析: 一是每个搜索结果项的起始标识,二是最后一个搜索结果项的终止标识。目前采用 最多的是固定查找和智能判断相结合的策略,本软件采取的是特定区段固定查找的方式。 一般为了结果的显示方便,这些结果都是放在 table 里面显示的,比较利于查找。 对同一搜索引擎返回的 web 页,不同的程序员可以有不同的网页特征分析结果,只要能正 确、快速地析取 web 页中的搜索结果即可。开发中使用了正则表达式来获取特定的信息, 模式匹配表达式的书写具有很强的灵活性,但是必须反复地测试才能确认其正确性。 各个搜索引擎的异构性要求在开发过程中对结果进行融合。 2. 结果的融合: 属性的排列顺序不同,请参见上一节的图片或相关网站。属性描述方式不同, 有的描述用图片,有的用文字,文字还不一定相同(比如歌词) 。有的 url 是绝对的, 有的是相对的,有的对某些属性有附加的效果。如字体,鼠标移动到其上会有特效,有 的属性缺省。 例如 sogua 的专辑没有超链,它的专辑 url 就是来自 tom,算是取长补短。httpcn 的网页上没有专辑这一项,我得自己给它添,另外他的搜索的关键字没有用红色关键色 突出,得人为对关键字进行处理,有的时候各个搜索引擎的结果中会有属性缺省,在程 序中要自动跳过。 这些都需要程序将不同转化为统一,提取出来的每一项将 url 为 key 放如指定的 hash 中,每一个在页面显示出多组结果。 3. 结果优化: 以上部分完成了信息的采集,元搜索引擎需对检索结果集合重新组织与整理, 形成 全局结果集, 所用结果集生成算法的好坏将直接影响该元搜索引擎的查询精度和响应速 度。优化处理主要包括两个方面,一个是去重,另一个是排序,难点是排序。如何能够 将获取的信息按照相关度进行排序是非常复杂的问题。因为不同搜索引擎在本身查询结 果排序过程中采用的算法相差很大, 甚至有一些未知的算法, 而元搜索引擎必须结合这 些使用不同排序算法产生的结果, 并以统一的结果形式返回给用户。这些都是在研究元 搜索引擎中遇到的难点, 也是能否成功实现一个元搜索引擎的关键。人们提出了许多种 合成方法.在文献中,j.p.callan 等人针对不同的情况给出了 4 种典型的合成算法. 17 如果只有文档的原始顺序是已知的,则可以采用间隔排列合成法:首先把每个查询结 果中的第 1 项交叉列出,然后再把各个查询结果中的第 2 项交叉列出,依此类推. 如果可以得到文档的原始相关性分值,那么当这些分值可以直接比较时,则可以采用 原始分值合成法:直接依据每个文档的原始相关性分值决定其合成排列次序. 如果文档的原始分值不能直接比较,则可以通过对 idf(倒排文档频率)等进行标准化 来得到规范的相关性分值,并以之为根据确定文档的合成排列次序(规范分值合成). 加权分值法:首先计算出各个信息源相应于查询条件的重要性,再以此为权乘上文档 的相关性分值作为决定其合成排列次序的根据. 4. 调用的搜索引擎 接口则以新闻搜索为例,见表 2-2 表表 2-22-2 搜索引擎搜索引擎接口接口 baidu/ns?word=keyword s=utility.getparam(“keyword“); search_keyword.text = s; s=utility.getparam(“search_yahoo“); 18 if(s.length=0) s= “on“; if(s!=“) search_yahoo.checked = true; s=utility.getparam(“search_abc“); if(s.length=0) s= “on“; if(s!=“) search_abc.checked = true; 2.4 软件评估 软件设计的质量在很大程度上受到系统封装关系的影响。模块间松耦合而模块内部 又保持高度一致性是高质量设计软件的关键之一。所以,评定软件设计的水平的手段之 一就是考察它的模块间的关系。对系统的可重用性和可维护性水平的客观评价是一个评 价软件结构的重要组成部分。我在本文介绍的度量标准可以帮助你客观评定你的软件设 计的质量。 尽管度量标准可以对我们的软件设计质量起着指导和反馈的作用,但是你要牢记我 在本文提出的度量标准并不是软件设计的唯一依据。设计质量分数的高低未必一定对应 于真实软件设计质量的高低,但是不太可能出现那种设计水平很高,但是在我们这种度 量标准下,分数却很低的情况。我们提出软件设计质量度量标准的目的在于帮助设计者 正确评估他们自己的设计,更重要的是帮助你检测设计的水平是否达到预期目标。 1.测试稳定性 稳定性指的是修改软件中某个模块而不影响其它模块的困难程度。让我们看看模块 间的依赖关系是如何影响到稳定性的。 一个模块在软件中重用的次数越多,那么就越依赖于它。模块的输入依赖性越强 (较多的其它模块依赖本模块) ,则它的稳定性得分也就越高(即难以修改) 。换句话来 说,其它模块越依赖于本模块,那么修改本模块而不影响其它模块也就越困难。模块的 输入依赖性和输出依赖性是评测模块稳定性和不稳定性的重要方面。模块的输出依赖性 强、输入依赖性弱,则稳定性低(即容易修改) ,这是因为对变化不会扩展到很多其它 方面。另一方面,模块的输入量越多,它就越难以修改,则越稳定。稳定性可以通过计 算输入量和输出量来计算。 19 输入耦合度代表依赖本模块的其它模块数,输出耦合度代表本模块所依赖的其它模 块数。不稳定度可以通过输出耦合度与总的耦合度的比例来得到。计算公式如下:i = ce/(ce + ca) i 代表该模块的不稳定度 ca 代表该模块的输入耦合度,即输入依赖度 ce 代表本模块的输出耦合度,即输出依赖度 如果 i 的值接近于零,那么模块的输入依赖性就远远大于输出依赖性,模块也就越 稳定。模块越稳定也就越难以修改,因为某个变化会衍生出许多新的变化,波及到依赖 它的其它模块上了。对 i 值接近于一的模块来说,它的输出依赖性远远大于输入依赖性, 模块很不稳定。由于受本模块影响的模块不多,所以不稳定的模块容易修改。看到这些, 你也许会感到很困惑, “到底我应该让模块的稳定性高一些好,还是低一些?” 由于组成一个软件的一整套模块中,有些模块有输入依赖性(被其它模块引用) , 而有些模块有输出依赖性(引用其它模块) 。我们在设计模块不应该追求完全的稳定性 或者不稳定性,而是具体考虑某个模块需要的是稳定性还是不稳定性并尽可能实现。输 入依赖度比较强的模块必须拥有较高的抗可变性,展现较高程度上的稳定性。在面向对 象的开发方法中,抽象性通过分离功能和功能的实现方法来提高稳定性。对 java 来说, 抽象类和界面(interface)显然就是抽象性的表现形式。因此,越需要稳定的模块应 该有越高的抽象层次。与此对应,越不稳定的模块也就越具体。 2.测量抽象性 你可以通过计算模块内抽象类(或者界面)的数目与所有类的数目的比例来测出该 模块的抽象程度。抽象度可以用下面的公式计算: a=na/nc a 代表模块的抽象程度 na 代表模块中抽象类或者界面的数目 nc 代表模块中具体类的数目 抽象度等于零表示该模块是一个完全抽象的模块,而抽象度等于一代表它是完全具 体的模块。 3.评估度量标准 比较抽象度和稳定度,你可以发现一些更有趣的结论。完全不稳定的抽象模块也是 20 完全抽象的、并且输入依赖度为零。相反,完全稳定、输入依赖度较大的模块意味它有 较多的频繁使用的具体类。 这是因为抽象性把变换和实现分隔开来。变动频繁使用的具体类会衍生出许多新的 变化,这些变化可能会波及整个软件。所以,你应该在具体类中尽量降低模块的输入依 赖性。换句话说,设计模块时要确保抽象性和输入依赖性、具体性与输出依赖性成比例。 21 第三章:有待实现的功能 3.1 虚拟机防毒功能 虚拟机是通过在无优先级模式下运行 vm(virtual machine,vm)代码,并让 vm 代 码控制硬件(或部分特殊软件)的中断并捕获应用程序及 vm 的全部操作,然后通过虚 拟机管理器(virtual machine manager,vmm)-一个运行在硬件层之上的虚拟指令层- -来模拟这个指令,从而实现对特定指令的模拟运行。由于其 vmm 提供的虚拟 i/o 输 出接口与系统硬件的 i/o 接口是一致的,因此,虚拟机可以模拟 pc 机的全部硬件资源, 像 windows 或 linux 之类的操作系统不会察觉到硬件层之上的 vmm 层,所有的虚拟机 os(即 guest)就像运行在单独的物理计算机上一样,并拥有独立计算机系统的一切功 能。 目前常用于 pc 机的虚拟机系统有 vmware 系列版本和 virtualpc 系列版本。总体而 言,vmware 功能全面,性能稳定操作也比较简单;而 virtualpc 占用系统资源少,但功 能简单,性能不及前者。下面就实验用的 vmware5.5 workstation 作一下简单介绍。 vmware5.5 workstation 中的 guest os 直接在 x86 保护模式下运行。 虚拟机并不是新技术,目前微软、java 等虚拟机都已经十分成熟,在一台电脑上安 装一个虚拟机和多个操作系统,已经成为许多评测人员和计算机病毒分析人员必需工作 条件。而将虚拟机技术应用到杀毒方面,却是一个杀毒业界一直在追求和探索的课题。 “虚拟机杀毒技术”即是在电脑中创造一个虚拟 cpu 环境,将病毒在虚拟环境中激活, 根据其行为特征,从而判断是否是病毒。有专家认为,所谓虚拟机技术,就是用软件先 虚拟一套运行环境,让病毒先在该虚拟环境下运行,从而观察病毒的执行过程。这个技 术主要用来应对加壳和加密的病毒,因为这两类病毒在执行时最终还是要自身脱壳和解 密的,这样,杀毒软件就可以在其“现出原形”之后通过特征码查毒法对其进行查杀。 1.虚拟机的概念比较宽泛,通常人们接触到的虚拟机概念有 vmware 那样的硬件模拟软 件,也有 jvm 这样的介于硬件和编译程序之间的软件。 2.虚拟机是一个抽象的计算机,和实际的计算机一样,具有一个指令集并使用不同的存 储区域。它负责执行指令,还要管理数据、内存和寄存器。这台虚拟的机器在任何平台 上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够 22 理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。 3.虚拟机的软件,主要是两中,virtual pc 和 vmware。 4.vpc 的设置很简单,一路 next 就行了,vm 设置相对麻烦一些,但是 vm 拥有更好的性 能,可以说和真实的电脑性能完全一样,还可以用桥 接的方式和现在的电脑互连_,可以研究的东西就更多了 5.在一台电脑上将硬盘和内存的一部分拿出来虚拟出若干台机器,每台机器可以运行单 独的操作系统而互不干扰,这些“新”机器各自拥有自己独立的 cmos、硬盘和操作系统, 你可以像使用普通机器一样对它们进行分区、格式化、安装系统和应用软件等操作,还 可以将这几个操作系统联成一个网络。在虚拟系统崩溃之后可直接删除不影响本机系统, 同样本机系统崩溃后也不影响虚拟系统,可以下次重装后再加入以前做的虚拟系统。同 时它也是唯一的能在 windows 和 linux 主机平台上运行的虚拟计算机软件。虚拟机软件 不需要重开机,就能在同一台电脑使用好几个 os,不但方便,而且安全。虚拟机在学习 技术方面能够发挥很大的作用。 6.虚拟机可以在一台机器上同时运行几个操作系统,是 soho 开发一组的必备工具。有 了虚拟机,在家里只需要一台电脑,或出差时只带着一个笔记本,就可以调试 c/s、b/s 的程序了。 7.利用虚拟机可以进行软件测试。 8.对硬件的要求比较高,主要是 cpu、硬盘和内存。 9.电脑 cpu:piii 以上,硬盘几十 g,这样的配置已经完全能满足要求。关键是内存。内 存的需求等于多个操作系统需求的总和。 10. 运行虚拟机软件的操作系统叫 host os,在虚拟机里运行的操作系统叫 guest os。 3.2 放大镜功能 /实现放大功能 private void zoomin_click(object sender, eventargs e) icommand pcommand = new controlsmapzoomintoolclass(); axmapcontrol1.currenttool = pcommand as itool; 23 pcommand.oncrea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新车车况检查教学设计-2025-2026学年中职专业课-汽车保养与维护-汽车运用与维修-交通运输大类
- 第五课 在变化中成长教学设计-2025-2026学年初中心理健康七年级鄂科版
- 2025年中考物理试题分类汇编(全国)电功、电功率和电热(第1期)原卷版
- 2025年中考数学试题分类汇编:相似三角形(13大考点60题)(第1期)解析版
- B Seasonal activities (Speaking)说课稿-2025-2026学年初中英语沪教版五四学制2024六年级下册-沪教版五四学制2024
- 2025年中级维修电工资格考试必考专业知识考试题库(370题)
- 第一节 生物群落的基本单位-种群说课稿-2025-2026学年高中生物苏教版必修3稳态与环境-苏教版
- (2024年秋季版)七年级历史下册 第6单元 宋元时期 第10课《元朝的统一》说课稿2 川教版
- Unit 7 Culture and Cultural Diversity说课稿-2025-2026学年高中英语冀教版必修二-冀教版2004
- 2025年全国特种设备安全管理人员A证考试题库(含答案)
- 2025年北京市房屋租赁合同正式版
- 血液透析患者的心理护理
- 门禁系统施工方案
- 秘书岗位复习试题附答案(一)
- 电力事故应对中的多部门协同机制
- 财务大数据基础(第二版)课件 项目一 财务大数据认知
- 快餐店食品处理操作流程
- 安全教育培训记录表三篇
- 2024年《数字影像设计与制作》考试题库及答案含各题型
- 养老院老人权益保护制度
- 《煤矿安全规程》考试题库(共986题)
评论
0/150
提交评论