(计算机应用技术专业论文)软件错误分析专家系统研究开发.pdf_第1页
(计算机应用技术专业论文)软件错误分析专家系统研究开发.pdf_第2页
(计算机应用技术专业论文)软件错误分析专家系统研究开发.pdf_第3页
(计算机应用技术专业论文)软件错误分析专家系统研究开发.pdf_第4页
(计算机应用技术专业论文)软件错误分析专家系统研究开发.pdf_第5页
已阅读5页,还剩67页未读 继续免费阅读

(计算机应用技术专业论文)软件错误分析专家系统研究开发.pdf.pdf 免费下载

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

文档简介

摘要 1 软件错误分析专家系统研究开发软件错误分析专家系统研究开发 学科:计算机应用技术 作者:王 瀛 (签名: ) 导师:张 璟 李军怀 (签名: ) 职称:教授 副教授 答辩日期: 摘 要 软件错误分析是软件测试工作中必要的过程和手段,web 技术的出现,对软件 测试又提出了新的要求。在软件测试中采用软件错误分析专家系统作为辅助工具, 不仅有助于测试工作的顺利完成,还可以保证测试结果的可靠性。 作者在研究软件测试以及专家系统核心技术 (推理方法与推理机制、 解释机制、 知识获取和知识表示等)的基础上,采用 visual prolog 语言,完成了软件错误分析 专家系统的具体开发。 系统可对 internet 环境下运行软件的常见错误进行诊断,给出错误分析,提出 修改建议,并可解释错误分析过程,给出推理步骤。系统还具备自学习功能,可不 断将新的专家知识充实到知识库,提高自身诊断和推理能力。 系统的桌面应用版本可以在目前流行的 windows 操作系统下运行,具有友好 的图形用户界面。系统的网络应用版本是 b/s 三层架构,可以在 internet 上通过浏 览器使用,专家系统以应用程序的形式存放于逻辑应用服务器上,在数据库服务器 上用关系数据库存储知识库。 本文重点介绍了系统的总体架构,以及知识表示、推理机制、知识获取等模块 的实现方法;阐述了桌面应用版本下用 visual prolog 语言实现图形用户界面的方 法,以及网络应用版本下知识库与关系数据库进行转换的方法。 关键词关键词:专家系统;知识表示;推理机制;知识获取;visual prolog 语言 abstract 2 research and development of software exception analysis for expert system speciality: computer application technology author: wang ying (signature: ) supervisor: zhangjing prof, lijunhuai vice prof. (signature: ) abstract for the purpose of software testing, it is necessary to employ technologies of software exception analysis. however, software testing needs to be further improved with the occurrence of web techniques. as an assistance of software testing, the software exception analysis of expert system can not only be helpful for the completion of software testing but also guarantee the reliability of testing results. based on the study of software testing and expert system core technologies (inference method and mechanism, explanation mechanism, knowledge acquirement, and knowledge representation), the author developed the software exception analysis of expert system using visual prolog. the expert system diagnoses common exceptions of software running on the internet, presents exception analysis, puts forward improvement suggestions, explains the analysis process, and provides inference steps. besides the capability of self-study, the system can continuously enrich the knowledge base with new expert knowledge and enhance its diagnosis and inference power. the systems desktop-application version runs on windows with friendly gui. its 西安理工大学硕士学位论文 3 network-application version, which has b/s three-level architecture, runs on the internet making use of browser. the expert system and knowledge base are stored on the logic application server in the form of application and on the database server using relational database, respectively. especially, this thesis explains the overall architecture of the system, and the development techniques of modules like knowledge representation, inference mechanism and knowledge acquirement. it also illustrates the methods of the gui development with desktop-application version using visual prolog. the conversion between knowledge base and relational database for network-application version is discussed as well. keywords: expert system, knowledge representation, inference mechanism, knowledge acquirement, visual prolog language 概述 1 1 概述概述 1.1 软件错误分析概述 软件危机是软件界乃至整个计算机界最热门的话题。许多软件从业 人员、专家和学者为了解决这场危机做出了大量的努力。软件危机实际 上是软件中的错误造成的,正是这些错误导致了软件开发在成本、进度 和质量上的失控。有错是软件固有的属性,而且是无法改变的。问题是 采用何种方法去避免错误的产生和消除已经产生的错误,使程序中的错 误密度达到尽可能低的程度。事实上,不论采用什么技术和什么方法, 软件中仍然会有错。采用新的语言、先进的开发方式、完善的开发过程, 可以减少错误出现,但是不可能完全杜绝软件中的错误。这些错误需要 通过软件测试来找出,软件中错误密度也需要通过软件测试来进行估计。 软件测试(software testing)是软件生存期(software life cycle)中 的一个重要阶段,是软件质量保证的关键步骤。通俗地讲,软件测试就 是在软件投入运行前,对软件需求分析、设计规格说明和编码进行最终 复审的活动。 软件测试手段在过去数十年里得到稳步提高。然而当今的测试人员 仍然面临着许多挑战。目前的测试工作相对于源代码级,对如何从软件 行为的角度进行软件错误分析显得缺乏力度。特别是在 web 技术出现并 逐渐升温时,对新的软件错误分析方法和工具的需求显得日益迫切。 1.2 专家系统技术概述 人工智能、生物工程与空间技术并称为当今世界三大尖端技术。人 工智能是计算机科学、控制论、信息论以及心理学多种学科相互渗透而 西安理工大学硕士学位论文 2 发展起来的一门综合性学科。人工智能的发展可谓曲折,曾取得令人振 奋的结果,而更多的是不断的受到质疑,直到今天,在人工智能的研究 领域仍存在着广泛的争论,也许这种争论还要继续下去。 60 年代中后期,人工智能研究在经历了阵痛之后,开始由追求万能、 通用的一般研究转入特定的具体研究,通用的解题策略同特定领域的专 业知识与实际经验结合,产生了以专家系统为代表的基于知识的各类人 工智能系统,使人工智能真正走向社会,走向实际应用研究。 当时斯坦福大学年轻教授e.a.efigenbaum于1965年开创了基于知识 的专家系统(expert system,简称 es)这一人工智能研究的新领域。专 家系统是以知识为依据,以推理为方法的电脑软件,它在某个具体的领 域模仿人类专家的思维,以达到或接近人类专家水平为目的,最终在一 定范围内代替专家或起专家助手的作用。 从专家系统诞生至今,涌现出许多实用的专家系统,应用范围涵盖 化学、数学、医学、生物工程、地质探矿、石油勘探、气象预报、地震 分析、过程控制、系统设计、计算机配置、集成电路控制、电子线路分 析、情报处理、法律咨询和军事决策等各个领域。 上世纪 80 年代以来,在专家系统及其工具越来越实用化的过程中, 国际软件市场上形成了一门旨在生产加工知识的新产业知识产业。 知识工程和专家系统是近年来人工智能研究中最有成就的分支之一,它 们在恢复人工智能的形象和推进人工智能发展等方面起到了重要作用。 1.3 专家系统技术在软件错误分析领域的应用概况 作为软件开发的重要环节,软件测试越来越受到人们的重视。随着 软件开发规模的增大、复杂程度的增加,以发现软件中错误为目标的测 试工作就显得更加困难。因此,为了尽可能多地找出程序中的错误,生 产出高质量的软件产品,加强对测试工作的组织、采用多种测试方法、 概述 3 使用多种测试辅助工具就显得尤为重要。 目前软件测试比较理想的做法应该是对软件的开发过程,按软件工 程各阶段形成的结果,分别进行严格的审查。为了保证测试的质量,应 将测试过程分成几个阶段,即:代码审查、单元测试、集成测试和验收 测试。在软件测试过程的各个阶段中,均可以使用软件错误分析专家系 统作为辅助工具,以提高测试的可靠性,保证测试的质量。 专家系统技术在软件测试中可以起到以下作用: (1) 通过对专家软件知识的形象化描述, 可以有效地存贮、 积累 和利用专家的宝贵知识,这是实现软件测试自动化的一种十分有效途径。 (2) 专家系统技术可以使专家的知识产品化, 从而便于推广和利 用,有利于解决专家供不应求的矛盾。 (3) 专家系统技术可以使多个专家的知识进入知识库, 从而实现 多种、多个专家知识的综合利用。 (4) 能高效、准确、迅速的工作,不会像人类专家那样产生疲倦 和不稳定性。 (5) 有自学习能力,可以通过知识获取手段不断地完善知识库, 使专家系统在软件测试工作中起到更大的作用。 (6) 具有教学能力和解释功能,有助测试工作条理化和清晰化。 1.4 课题概况 本课题是“国家 863 计划西安 863 软件专业孵化器软件评测平台的 研究与建立(编号:2001aa115090) ”课题的一部分。 本课题旨在针对目前国内使用较为广泛的 windows 2000 环境,开发 web 应用软件错误分析专家系统。使用者可以通过本系统了解到网络环 境下的常见的各种软件错误,得到具体错误的专家诊断,从而提高开发 效率,编制出更健壮的网络软件。本课题主要研究开发内容如下: 西安理工大学硕士学位论文 4 (1)专家系统理论与技术,包括推理机制、知识表示、知识获取、 解释机制等研究。 (2)软件错误分析专家系统开发,包括推理机设计、软件错误分析 知识表示实现、软件错误分析知识库生成、知识库的关系数据库存储, 知识库与关系数据库之间的转换,专家系统在 b/s 三层架构上的实现等。 系统总体架构 5 图 2-1. 专家系统的基本结构 2 系统总体架构系统总体架构 2.1 专家系统的基本结构 专家系统基本结构以及各个部分之间的数据交换关系如图 2-1 所示: 人 机 接 口 知 识 获 取 机 制 解 释 机 制 动态存储器 样板事例库 知识库 推 理 机 制 图 2-1 中各个部分主要功能如下: (1) 知识库: 用于储存某领域专家的专门知识, 包括事实、 条件、 结论与规则等。 (2) 推理机: 控制整个专家系统的问题求解过程。 模仿人类专家 根据软件错误现象,分析错误原因,提出解决方案。 (3) 人机接口:负责用户与专家系统交互,用来进行数据、信息 或命令的输入,结果的输出和信息的显示等。 (4) 知识获取机制: 辅助知识工程师进行知识获取, 把己有的知 识总结和提取出来并自动转换为专家系统所能接受的内部表达形式;同 时它还具有知识库维护功能,允许编辑修改知识库,对规则进行添加, 西安理工大学硕士学位论文 6 删除,修改等操作。 (5) 解释机制: 实现解释功能, 在推理过程中回答用户关于系统 正在做什么,如何得到结论,为什么要作出某个决策,发出某个询问等, 显示推理路径解释推理过程。 (6) 动态存储器: 用于存放和系统有关的数据, 如有关欲求解特 定问题的已知事实、用户回答的事实、推理得到的中间结论等信息。 (7) 样板事例库: 存放在动态存储器里面, 存储着最新获取的有 关软件错误分析的样板事例,供推理机使用。 2.2 本系统采用的专家系统开发工具prolog 简介 prolog 语言是一种典型的描述性语言,其突出特点是非过程性。 prolog 语言的 horn 子句是“前提结论”对子句的最直接最自然表示, 其推理过程符合于人类求解问题的思维推理模式,因此,它在知识工程 中获得了的十分广泛的应用。 visual prolog 是 windows 下的可视化 prolog 语言开发环境,它编译 执行。visual prolog 程序可编译为独立执行的可执行程序,也可发布为 dll 动态链接库供 vb,vc,delphi 等调用。 visual prolog 具有模式匹配、递归、回溯、对象机制、事实数据库和 谓词库等强大功能。它包含图形开发环境、编译器、连接器和调试器, 支持模块化和面向对象程序设计,支持系统级编程、文件操作、字符串 处理、位级运算、算术与逻辑运算,以及与其它编程语言的接口。 visual prolog 非常适合于专家系统规划和其它 ai 相关问题的求解, 是智能程序设计语言中具有代表性且应用较多的一种语言。由于这种语 言很适合表达人的思维和推理规则,在自然语言理解、机器定理证明、 专家系统等方面得到了广泛的应用。 本课题在开发过程中,使用 visual prolog 实现了专家系统的大部分 系统总体架构 7 功能,包括推理机制、解释机制、知识获取模块等。 2.3 本系统的两个版本 根据应用需求,本系统形成了桌面应用及网络应用两个版本。 桌面应用版本可以在 windows2000、 winnt 以及 winxp 等操作系统 下运行。该版本具有 gui 图形界面,用户界面友好,用户可以通过鼠标 点击操作完成错误诊断、知识获取、知识库管理等工作。 网络应用版本基于浏览器/服务器三层模式结构。服务器配置好后, 用户可以在 internet 上通过 ie 浏览器使用本系统。该版本的用户接口使 用 html+asp 完成,提供良好的用户界面。其知识库存放于 sql server 2000 数据库,知识获取模块由 vb script 语言完成。另外,该版 本还包含一个知识库转换工具, 完成将 sql server 2000 中的关系数据 库转换成专家系统所使用的知识库文件的工作,该工具由 visual c+.net 完成。 两个版本中供专家系统推理机所使用的知识库是一样的。之间的区 别是两个版本对知识库的存储采用了不同方式。 2.4 桌面应用版本介绍 2.4.1 系统设计系统设计 本系统的桌面应用版本包括三大模块:知识获取、知识库管理和错 误诊断。其模块结构如图 2-2 所示: 西安理工大学硕士学位论文 8 图 2-2. 本系统桌面应用版本的总模块图 软件错误分析专家系统 知识获取模块知识库管理模块错误诊断模块 “知识库管理”模块下有“编辑知识库” 、 “装入知识库” 、 “保存知 识库” 、 “浏览知识库”和“清空知识库”等五个子模块。每个子模块在 专家系统的运行中都是必不可少的,完成相应的知识库管理工具。 “错误诊断”模块中,系统可以对常见网络软件实现时的错误进行 分析并给出建议。 “知识获取”模块下包含“添加规则” 、 “删除规则”与“修改规则” 等三个子模块,完成知识获取的工作。 2.4.2 运行环境运行环境 该版本可在使用 windows2000、 winnt 以及 winxp 等操作系统的个 人 pc 机上运行。运行该版本的计算机上应装有 visual prolog 6.1 环境。 在未装有 visual prolog 6.1 环境的计算机上运行该版本需要拷贝如下 7 个 dll 文件至system32 文件夹:vip6chaindb.dll、vip6edit.dll、 vip6kernel.dll 、 vip6regexp.dll 、 vip6res.dll 、 vip6run.dll 和 vip6vpi.dll。 系统总体架构 9 图 2-3. 本系统网络应用版本的系统逻辑结构 2.5 网络应用版本介绍 2.5.1 系统逻辑结构系统逻辑结构 网络应用版本采用浏览器/服务器三层模式结构,用户通过浏览器使 用本系统。专家系统的推理、解释等功能在逻辑应用层实现,该层接受 来自界面层的用户输入,并从数据层抓取数据进行处理,然后将结果返 回给用户。专家系统推理要用到的知识以关系数据库的形式存放于数据 层,并在数据层完成对数据的完整性和安全性的检验工作,而关于知识 库的管理工作和知识获取工作则在逻辑应用层实现。网络应用版本的系 统逻辑结构如图 2-3 所示: internet 知识库 数据库服务器应用程序服务器 专家系统 客户端 客户端 用户1 用户n 界面层逻辑应用层数据层 。 。 。 2.5.2 系统网站总体结构系统网站总体结构 用户通过浏览器使用网络应用版。在浏览器端,用户键入 web/应用 服务器的 ip 地址或者域名就可以看到本系统网站的发布首页。系统网站 的总体结构如图 2-4 所示: 西安理工大学硕士学位论文 10 图 2-4. 本系统网络应用版本的网站总体结构图 本课题简介本系统简介错误诊断错误分类菜单使用帮助 网站主页 知识获取知识库浏览 错误诊断执行程序错误诊断执行程序 增加规则删除规则修改规则浏览规则浏览条件浏览结论 在系统的发布页面左边,用户可以通过单击相应的超链接选择查看 “本课题简介” 、 “本系统简介” 、 “使用帮助”等文字资料。也可以通过 选择“错误诊断”项使用本系统解决实现网络软件时出现的常见错误。 用户单击“错误诊断”超链接后,在发布页的右边将出现根据实现 网络软件选用的语言进行的最粗分类,共分“c+” 、 “asp.net” 、 “delphi” 、 “vb”和“java”五大类,在每一大类下面,根据不同的情 况,还分了若干小类,用户可以点击相应语言的超链接查看属于该语言 得更细分类。用户可以在分类中选择自己想要进行分析的具体错误,并 回答系统的提问,系统将根据内部的数据库进行分析,给出分析结果和 建议性解决方法。 在系统推理的过程中,用户还可以查看系统进行推理的根据,在回 答系统问题时单击“解释”按钮可以让系统对目前的推理过程做出解释。 如果用户希望浏览知识库,则可以点选“知识库浏览”超链接,然后在 页面的右边通过点击“浏览规则” 、 “浏览条件” 、 “浏览结论”来选择需 要浏览的种类,则可以完成分类浏览知识库的操作。用户还可以通过浏 览器完成知识获取工作,点击了“知识获取”超链接后,在页面的右边 选择“增加规则” 、 “删除规则”和“修改规则”即可以完成具体的知识 系统总体架构 11 获取操作。 2.5.3 系统网络环境系统网络环境 该版本逻辑应用层中的应用程序和数据层中的数据库可分别处于公 网上不同的服务器中,也可以处于同一台服务器中。出于网络安全方面 的考虑,建议将本系统的网络应用版本放置于局域网即内网中,通过交 换机与外网相连,并且逻辑应用程序和数据库分别处于内网中的不同服 务器中。 在内网中,逻辑应用程序安装在 web/应用服务器上,用户的浏览、 管理知识库和使用专家系统等操作都在该服务器上完成;数据库服务器 以关系型数据库存放专家系统推理时要使用的知识库。 2.5.4 系统运行环境系统运行环境 建议 web/应用服务器使用 ibm xseries 220 通用服务器, cpu 为 intel pentium iii 1.4g;内存 512m。操作系统安装 windows 2000 advanced server,web 服务器软件使用 iis 5.0。 配置 web 服务器时要注意,用 visual prolog 开发的专家系统编译联 接成为一个.exe 文件, 存于服务器某目录中, 然后在 iis 中的 “默认 web 站点”下新建一个虚拟目录,指向服务器上保存专家系统的子目录,并 在该虚拟目录的“属性”对话框的“虚拟目录”标签中的“执行许可” 选项选中“脚本和可执行程序” 。这样,服务器端的配置就完成了。 建议数据库服务器使用 ibm xseries 300 通用服务器,cpu 为 intel pentium iii 1g;内存 512m。操作系统安装 windows 2000 server,数据 库服务器软件使用 sql server 2000。 知识表示与知识库的形成 12 3 知识表示与知识库的形成知识表示与知识库的形成 知识表示的工作是用一些约定的符号采用某种格式把知识编码为计 算机可以识别的数据结构,完成现实世界中的知识到专家系统知识库的 转换,这种转换的完成将有利于知识在计算机中的表达、存储、组织以 及使用。 3.1 常见知识表示方法 目前比较成熟并且常用的知识表示方法有:数据库、产生式系统、 逻辑程序、框架、过程、脚本、判定树、语义网络、对象等。不同知识 表示方法各有其自身优势,下面介绍 3 中最为常用的知识表示方法。 3.1.1 产生式系统产生式系统 产生式系统用“if then”规则的形式表示知识,由三部分组成系 统:一组产生式规则即产生式规则库、一个数据库(工作存储器)和一 个推理机。其中推理机包括匹配器、冲突消解器和解释器。产生式系统 的基本结构如图 3-1 所示: 西安理工大学硕士学位论文 13 图 3-1. 产生式系统的基本结构图 数据库(工作 存储器) 产生式规则库 匹配器 冲突集和冲突 集消解器 解释器 (1) 产生式规则库中包含所有的产生式规则,每个规则包括条件 部分和结论部分,推理机制在验证了规则中所涉及的所有条件之后,根 据该规则得出相应的结论。 (2) 数据库存放当前已知的数据,包括推理过程中形成的中间结 论。这些数据由规则解释程序用来激活相应的规则。这里所说的数据是 广义的,可以是常量、多元数组、谓词、表等等,其基本含义是指一个 事实或断言。数据库可以放在程序内部,也可以放在程序外部。当推理 机制需要用到某些基本事实作推理依据时,将从数据库中得到。这个数 据库中的内容也可能是即时更新的。 (3) 推理机利用知识库中的规则并结合数据库中的基本事实进行 目标求证,它得出的所有结论,都是基于上面的一组规则的。其中,匹 配器负责判断规则条件是否成立,冲突消解器负责选择可调用的规则, 解释器负责执行规则的动作,并在满足条件后终止产生式系统的运行。 产生式系统具有以下优缺点: (1) 推理机制结构简单明确, 并且易于理解。 这是因为产生式系 知识表示与知识库的形成 14 统有且只有一个全局数据库,所有的规则都在这里发生相互作用。 (2) 由于规则具有统一的表示形式, 而且具备各自的功能, 所以 知识既容易理解也容易定义。 (3) 规则之间是独立的, 所以系统对规则的任何操作都可以单独 完成,因此产生式系统具有高度模块化的性质。 (4) 推理机制比较简单、 各个规则之间独立、 各步推理比较独立 清晰,因此产生式系统便于跟踪推理路径,容易实现解释功能。 (5) 由于规则之间的相互关系不明显, 因此对规则库的一致性维 护比较困难。 (6) 在推理过程中需要不断地对全部规则进行模式匹配, 造成处 理的效率较低。 (7) 产生式系统的推理方式比较单一, 无法根据情况变动推理的 方式,因此产生式系统的推理缺乏灵活性,不适合复杂问题的求解。 3.1.2 逻辑谓词逻辑谓词 谓词逻辑又称逻辑程序,其形式和产生式规则很相像。这种方法用 逻辑关系表示专家知识,并以此为基础进行推理。逻辑谓词系统一般有 两个组成部分。一是由规则组成的公理系统,是推理进行的基础,也就 是知识存放的地方;二是推理演绎机构,通过若干条推理公理和推理规 则控制从公理系统中取得规则完成推理。逻辑谓词表示法的优点是知识 表示严密精确,可以在一定范围内保证推理结果的正确。缺点是知识表 示过于复杂,造成工作效率偏低。 谓词逻辑区别于狭义的产生式系统之处主要有两点: (1) 产生式系统中的条件部分常采用(属性,值)二元组形式; 而在谓词逻辑中,条件一般用谓词表示。事实上,谓词的表示能力超过 了(属性,值)二元组。这是二者在表现形式上的区别。 西安理工大学硕士学位论文 15 (2) 通常产生式系统采用向前推理,或称数据驱动;而谓词逻辑 (以 prolog 程序为典型代表)一般采用向后推理,即目标驱动。这是二 者在推理机制上的区别。 3.1.3 框架系统框架系统 框架系统的本质是将某种规律性的知识进行提炼,形成某种框架用 来表示经验性知识。 框架是一种数据结构,包含若干用于描述框架各方面具体属性的槽 (slot) 。每个槽有自己的槽名和槽值,槽的下面还可以进一步分为多个 侧面(facet) ,每个侧面又可以有各自的取值,作为对槽的进一步说明。 槽值可以是特定的参数也可以是下一个子框架,子框架拥有和框架相同 的结构,这样就形成了一层层的嵌套关系。 框架系统引入了面向对象的理论。框架分为类框架和实例框架两种。 框架与框架之间有两种关系:一种是类与超类的关系,一种是类与实例 的关系。一组相关的框架通过表示这两种关系的指针联结起来就形成了 框架系统。 框架系统中推理机制一般通过两种活动来完成推理工作:一是根据 已知事实寻找合适的框架,称为匹配;二是在匹配的过程中,填写框架 中未知的槽值。框架系统的匹配与产生式系统的匹配不同,产生式系统 的匹配一般是完全匹配,而框架只能做到不完全匹配,因为框架描述的 一类事物的一般属性。匹配失败时有两种处理方法:一是重新建立一个 新的框架来描述当前事物,包括定义框架名、槽、侧面及取值;二是对 老框架进行现场修改,以符合新的要求。在匹配时如果需要填充新的槽 值,则通过继承或者附加过程的方法来计算槽值。 由于框架系统的推理设施增强了系统对大量信息的管理功能, 所以 框架系统是成块组织知识的一种有力手段。利用框架可以相对容易的表 知识表示与知识库的形成 16 达深层知识。 3.2 本系统采用的知识表示方法 本系统的知识表示采用产生式系统和谓词逻辑相结合的形式。系统 核心部分用 visual prolog 编写完成,所以程序中所使用的规则、条件、 结论等均用谓词逻辑的形式表示。根据本系统的推理模式,用数条谓词 子句联合表示一组完整的规则,若想完成一个完整的推理过程,则要涉 及到这数条谓词子句。 本系统采用二者结合的方式进行知识表示主要基于以下的考虑:首 先, visual prolog 语言从本质上说仍然是逻辑程序设计语言, visual prolog 程序除了和 gui 设计相关的部分之外,其余部分仍然是由 horn 子句构 成,所以谓词逻辑知识表示法非常适合在 visual prolog 程序中使用。其 次,本系统的推理模式是目标驱动、反向为主、正向为辅,所以,采用 产生式系统结合谓词逻辑进行知识表示不仅可以易于推理机的实现,也 可以实现知识库与程序的分离,有利于进行知识获取。 本系统中一条完整规则的一般形式为: 规则(规则号,进行推理的入口目标,继续推理的子目标,条件表) 条件(条件号,条件) 结论(最终目标,目标解释及结论) 知识工程师可以将现有的领域专家知识按照上述的格式存入到一个 文本文件中,并不涉及本系统的程序,从而实现程序与知识库的分离。 本系统要使用知识库的时候,将通过一段 prolog 程序读入该文件。具体 的程序实现方法将在第六章给出详细的说明。 西安理工大学硕士学位论文 17 3.3 本系统知识库的形成 本系统旨在对多种语言环境下开发网络应用软件时出现的软件错误 进行分析,给出建议性的解决方案。因此,本系统的知识库中所包含的 领域知识为在各种语言环境下,网络应用软件常见错误分析的实际经验。 目前系统知识库中包含规则 230 余条,可检查条件 360 余个,可对 5 中 常用的编程环境(c+、asp.net、delphi、vb 和 java)下 46 小类软件 错误进行分析。本系统的知识库中比较完备的部分是 c+环境下实现网 络应用软件时常见的错误分析经验,其余编程环境下的错误分析经验还 有待于日后增加和完善。 3.3.1 错误分析经验的自然语言描述错误分析经验的自然语言描述 许多领域专家经验都是存在于专家的大脑里的,知识工程师所要做 的第一步工作就是如何将这些经验提取出来并用自然语言加以描述。下 面针对于本系统知识库中一个具体软件错误的分类,给出相应错误分析 的自然语言描述。 在网络应用程序的设计中,通信是必不可少的。这些通信包括点对 点的通信、一对多的通信、多对多的通信等。套接字是一种网络编程接 口,它是对通信端点的一种抽象,提供了一种发送和接收数据的机制。 在 vc.net 环境下设计网络应用软件时,经常需要完成点对点的网络通 信功能。当通信两端的应用程序都运行后,服务器端可以开始侦听,客 户端则试图连接服务器端,若连接成功,则可互相发送消息进行通讯。 在实际应用中,两端连接不上是很常见的一种现象,这种现象的出现可 能是由编程中多方面的错误引起的。下面给出可能造成该故障的软件错 误以及相应的错误分析结论: (1) 如果是两台机子相互连接,客户端需要通过服务端的主机名 知识表示与知识库的形成 18 或 ip 地址进行连接,则先考虑是否得到了服务器端正确的 ip 地址或者 主机名。 (2) 如果主机名和 ip 地址都正确,则要检查通信端口,若服务器 端通过指定的端口建立侦听套接字,则应保证该端口没有被使用,否则 不能连接。 (3) 服务器在创建侦听套接字时需指定端口,否则,客户端无法 进行连接。 (4) 客户端的连接套接字进行连接时需要将正确的服务器主机名 或 ip 地址作为连接函数的参数,如果没有该参数,则无法连接。 (5) 客户端的连接套接字进行连接时需要将与服务器创建侦听套 接字相同的端口号作为连接函数的参数,如果没有该参数或者参数错 误,则无法连接。 (6) 两端的套接字都正确建立后,服务器端应运行侦听函数进行 侦听,如果没有运行,则无法收到客户端的连接请求,也就无法建立连 接。 (7) 两端的套接字都正确建立后,客户端应运行连接函数进行连 接,发送连接请求,如果没有运行,即使服务器端运行了侦听函数,也 无法触发相应的事件处理函数,同样无法建立连接。 (8) 若两端对应的连接和接受事件处理函数都能正确触发,而服 务器端没有运行接受函数来接受客户端的连接请求,仍然无法建立连 接。 (9) vc.net中的csocket类本身带有的事件处理函数不能满足应 用需求时,需要重载这些函数,如果程序已经重载了这些函数,但是在 调用的时候方法不当,则造成这些函数未被正确重载,同样无法建立连 接。 (10) 当事件处理函数都被正确重载后,需要通过指针在各个类之 间完成函数的调用,在各个类中都要正确的设置指针,并且要用正确的 西安理工大学硕士学位论文 19 指针设置函数完成相应的工作。若指针没有正确设置,则无法调用到重 载过的事件处理函数,也就无法建立连接。 3.3.2 知识库的具体建立过程知识库的具体建立过程 本系统知识库的建立过程是:首先用自然语言描述出相关的软件错 误及分析结论;然后将其分类细化为产生式系统的条件+结论形式;最后 用谓词逻辑将这些条件和结论表示出来。 对知识的自然语言描述完成后,需要将其转化为产生式系统的形式, 最终形成规则。规则中的规则号编排规则如下,第一位整数代表不同的 编程语言环境,如:没有该整数代表 c+语言;1 代表 asp.net 语言;2 代表 delphi 语言;3 代表 vb 语言;4 代表 java 语言。第二位整数代表 网络应用程序涉及到编程类别,如:1 代表关于 winsocket 编程;2 代表 关于 wininet 编程等等。 第三位整数代表在某种特定的编程类别各种应用 功能的实现,如:1 代表点对点通信;2 代表一对多的通信等等。后两位 整数则代表前两位整数确定的范围中较为常见的故障现象,如:01 代表 无法建立连接;11 代表无法正确发送消息;15 代表无法正确接收消息等 等。规则中的条件号是在规则号的后面再加上两位整数,代表确定某种 常见的故障现象时需要检查的条件。 在 vc.net 环境下使用 winsocket 编程完成点对点通信功能时,一 个常见的错误不能建立两端连接的故障描述以及可能成为故障原因 的软件错误分析和结果已经在上一节用自然语言描述过了,下面给出相 应的产生式系统形式的知识表示和谓词逻辑形式的规则(限于篇幅,未 全部列出) : 编程类别:winsocket 编程。 实现功能:点对点通信。 故障:无法建立连接。 知识表示与知识库的形成 20 检查条件: (1) 两台主机进行通讯。 条件号:110101 (2) 通过主机名或者 ip 地址进行连接。 条件号:110102 (3) 如果用一台主机进行试验, 并且用 localhost 进行连接可以正常 通讯。条件号:110103 结论:对欲连接主机的主机名,或者 ip 地址输入错误。 形成规则: rule(1101,socket_ptop_unconnection,host_name_error, 110101,110102,110103) cond(110101, 两台主机进行通讯) cond(110102, 通过主机名或者 ip 地址进行连接) cond(110103, 如果用一台主机进行试验,并且用 localhost 进行连接可 以正常通讯) result(host_name_error, 对欲连接主机的主机名,或者 ip 地址输入错 误。) 检查条件: (1) 同 110101 (2) 需要手动输入端口号。 条件号:110202 (3) 客户端开始运行 onconnect()事件处理函数。 条件号: 110203 (4) 服务器端未运行 onaccept()事件处理函数。 条件号: 110204 结论:服务器端用于连接的端口号被占用。 生成规则: rule(1102,socket_ptop_unconnection,server_port_employed, 110101,110202,110203,110204) cond(110202,需要手动输入端口号) cond(110203,客户端开始运行 onconnect()事件处理函数) 西安理工大学硕士学位论文 21 cond(110204,服务器端未运行 onaccept()事件处理函数) result(server_port_employed,服务器端用于连接的端口号被占用。 ) 检查条件: (1) 同 110101 (2) 同 110202 (3) 在服务器的套接字创建函数create()中未写入指定端口号。 条 件号:110303 结论:未按指定端口号创建服务器套接字。 生成规则: rule(1103,socket_ptop_unconnection,create_without_port, 110101,110104,110303) cond(110303,在服务器的套接字创建函数 create()中未写入指定端口号) result(create_without_port,未按指定端口号创建服务器套接字。) 检查条件: (1) 同 110101 (2) 同 110102 (3) 在客户端套接字的连接函数 connect()中未写入正确的服务器 主机名或 ip 地址。 条件号:110403 结论:未按正确的服务器主机名或 ip 地址与服务器进行连接。 生成规则: rule(1104,socket_ptop_unconnection,connect_with_errorhost, 110101,110102,110403) cond(110403,在客户端套接字的连接函数 connect()中未写入正确的服务 器主机名或 ip 地址) result(connect_with_errorhost,未按正确的服务器主机名或 ip 地址与服 知识表示与知识库的形成 22 务器进行连接。) 检查条件: (1) 同 110101 (2) 同 110102 (3) 同 110202 (4) 已按输入的端口号正确创建服务器套接字。 条件号:110504 (5) 在客户端套接字的连接函数 connect()中未写入和创建套接字 相同的端口号。 条件号:110505 结论:客户端用于连接的端口号和服务器端创建套接字的端口号不 同。 生成规则: rule(1105,socket_ptop_unconnection,connect_with_errorport, 110101,110102,110202,110504,110505) cond(110504,已按输入的端口号正确创建服务器套接字) cond(110505,在客户端套接字的连接函数 connect()中未写入和创建套接 字相同的端口号) result(connect_with_errorport,客户端用于连接的端口号和服务器端创建 套接字的端口号不同。) 通过重复类似上面的过程,即可完成本系统知识库的建立工作。 3.4 本系统知识库的结构 本系统知识库呈树型结构,自顶向下逐渐细分,直到与某一个或一 组具体的规则相接。推理过程开始时从顶部或者以用户的选择从某一分 支进行搜索,根据用户的回答和中间数据决定下一步的搜索方向。添加 新的知识时,用户可以添加最底层的节点,也可以直接添加整个分支。 西安理工大学硕士学位论文 23 采用这种结构建立知识库可提高搜索速度,并且也有利于知识获取。 本系统知识库的顶层结构如图 3-2 所示: 知识库 delphi环境软 件错误分析 vb环境软件错 误分析 asp.net环境 软件错误分析 java环境下的 软件错误分析 c+环境软件 错误分析 在五种常用的编程语言环境下, 分别根据不同的编程类型和故障现象 细分出更多分支,以后的知识获取工作就是不断的增加各种分类下面的 内容,也可以衍生出新的分类。c+环境下知识的结构如图 3-3 所示: 知 识 库 c+环 境 软 件 错 误 分 析 winsocket 编 程 错 误 分 析wininet 编 程 错 误 分 析 一 对 多 通 讯 应 用 下 的 错 误 分 析多 对 多 通 讯 应 用 下 的 错 误 分 析点 对 点 通 讯 应 用 下 的 错 误 分 析 http查 询 应 用 下 的 错 误 分 析ftp客 户 端 程 序 的 错 误 分 析 不 能 正 确 接 收 消 息 不 能 正 确 显 示 发 送 的 消 息 不 能 正 确 发 送 消 息 不 能 正 确 显 示 接 收 的 消 息 不 能 建 立 连 接 无 法 接 收 客 户 端 信 息 无 法 统 计 客 户 端 发 信 息 数 无 法 统 计 客 户 端 个 数 无 法 实 现 信 息 同 步 无 法 和 多 个 客 户 相 连 无 法 正 常 停 止 服 务 不 能 接 收 消 息 不 能 加 上 自 身 的 标 识 信 息 不 能 发 送 消 息 不 能 正 确 终 止 通 讯 无 法 正 确 连 接 通 讯 对 象 无 法 从 服 务 器 上 获 得 文 件 不 能 正 确 显 示 获 得 的 文 件 不 能 连 接 到 服 务 器 无 法 正 确 结 束 不 能 从 服 务 器 上 下 载 文 件 无 法 给 服 务 器 上 传 文 件 无 法 显 示 服 务 器 上 的 文 件 无 法 停 止 程 序 无 法 和 服 务 器 建 立 连 接 图 3-2. 本系统知识库的顶层结构图 图 3-3. c+环境下知识的结构图 知识表示与知识库的形成 24 asp.net 环境下知识的结构如图 3-4 所示: 知 识 库 asp.net环境软件错误分析 数 据 库 无 法 连 接 无 法 进 行 程 序 单 步 运 行 无 法 打 开 w e b 应 用 程 序 无 法 创 建 w e b 应 用 程 序 无 法 启 动 调 试 delphi 环境下知识的结构如图 3-5 所示: 知 识 库 delphi环境软件错误分析 提 示 为 别 名 配 置 了 非 法

温馨提示

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

评论

0/150

提交评论