UML活动图模型中错误的定位工具说明书_第1页
UML活动图模型中错误的定位工具说明书_第2页
UML活动图模型中错误的定位工具说明书_第3页
UML活动图模型中错误的定位工具说明书_第4页
UML活动图模型中错误的定位工具说明书_第5页
已阅读5页,还剩46页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

单位代码 10006 学 号 39061622 分 类 号 TP311 毕 业 设 计 (论 文 )UML 活动图模型中错误的定位工具院 ( 系 ) 名 称 计 算 机 学 院专 业 名 称 计 算 机 科 学 与 技 术学 生 姓 名指 导 教 师2013 年 6 月UML活动图模型中错误的定位工具 北京航空航天大学本科毕业设计(论文)任务书、毕业设计(论文)题目:UML 活动图模型中错误的定位工具、毕业设计(论文)使用的原始资料(数据)及设计技术要求:1、课题来源:课题来源于实验室在软件的自动化调试方面的科学研究2、技术要求:(1)使用 C+语言来完成错误定位工具的相关操作部分。(2)通过读入外部的活动图文件,结合相关错误定位算法实现活动图的错误定位工作。(3)用户界面部分可以使用 C#编程,使其具有良好的人机交互。、毕业设计(论文)工作内容:(1)实现对外部 UML 活动图文件的读取和解析。(2)完成错误定位算法在 UML 活动图模型上的应用。(3)完成良好的用户界面,在活动图上能够明显的显示错误的位置。、主要参考资料:1 李未 , 李宁. A formal semantics for program debuggingJ. SCIENCE CHINA Information Sciences, 2012: 133-148.2 李宁. 基于 UML 的模型错误检测研究D. 北京: 北京航空航天大学, 2011.3 Roger S.Pressman. Software Engineering A Practitioners ApproachM. China Machine Press, 2007.4 Booch. UML 用户指南M. 人民邮电出版社, 2006. 计算机学院(系)计算机科学与技术专业类 390616 班学生刘艾杉毕业设计(论文)时间: 2013 年 3 月 4 日至 2013 年 6 月 11 日答辩时间: 2013 年 6 月 18 日成绩:指导教师:李未兼职教师或答疑教师(并指出所负责部分):系(教研室) 主任(签字): 北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 )本人声明我声明,本论文及其研究工作是由本人在导师指导下独立完成的,在完成论文时所利用的一切资料均已在参考文献中列出。作者:签字:时间:2013 年 6 月北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 I 页UML 活动图模型中错误的定位工具学 生:指导教师:摘要目前,随着各种系统和软件的规模与复杂度的增加,模型驱动技术被广泛的应用于系统的构建、静态和动态行为刻画与分析等方面。这其中,以面向对象建模为主导思想的统一建模语言(UML)得到了广泛的应用。研究成果表明,软件开发中 70%的错误是在软件工程生命周期中的早期被引入(即在模型设计阶段中引入);而错误中的 80%只有到了系统开发后期的测试阶段之后才被发现,而错误的修改成本大大增加 1。因此,在模型阶段进行错误的定位,能够大量的减少后期发现错误改正错误所花费的精力。本文主要工作和技术内容如下:1、将基于 C-Kernal 语言的函数内调试的形式化错误定位算法应用到了 UML 模型上。 2、提出了一种分析 UML 活动图的方式,即通过解析 UML 标准的导出的 XMI 格式文件。在 XMI 格式的文件中,定义了很有规律的标签,它们有规律的记录了该活动图的结构等信息。通过使用高级程序语言对 XMI 文件的解析达到解析 UML 活动图结构的目的。同时,对于 UML 图形化部分,通过解析 UML 格式文件来实现。其中记录了 UML 活动图中各个元素的大小、颜色、位置等图形化的相关信息,可以利用来构造一个对应的活动图。3、本文以一种新的方式来看待 UML 活动图,不仅仅将它看作是一个描述业务和活动的工作流程图,还将它看作是一个顺序执行的程序。通过在程序中将它抽象成数据结构中的图,并解析成为抽象语法树,利用函数内调试的形式化算法,实现了错误的定位。北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 II 页关键词:UML 活动图,错误定位,XMI 解析,XML 北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 III 页Bug Locating Tool for UML Activity Diagram ModelsAuthor:Tutor:AbstractThese days, with the size and complexity of a variety of systems and software increasing rapidly, the model-driven technology is widely used in the construction of the system, the static and dynamic behavior characterization and analysis and other aspects. Among these, the Unified Modeling Language (UML), which use the object-oriented modeling as the dominant ideology, has been widely used. So it would benefit a lot, when you can locate bugs in the period of modeling. With computer software being applied in various fields as well as the expansion of software scale, the thought of software engineering has been further used in the software development process. Research shows that, 70% of software development errors in the software engineering life cycle are introduced in the early period (ie, errors were introduced into the system in period of the design of the model); while nearly 80% of errors in the system were located in the last period of the software developing process. So, as we can see, it would cost more time and money to fix these bugs.The work and technical content of this paper are as follows:1. Applying Intral-function automatic debugging error localization algorithm, which is based on the C-Kernal language, to the UML model. 2. Presenting a new method to analyze the UML activity diagram, namely by parsing the UML standard export file called XMI. In XMI format file, there are a lot of regular labels which are already defined. These labels regularly record the structure and other information of the activity diagram. By using advanced programming language, we can parse the XMI file in order to achieve the aim of analyzing UML activity diagram structure. Meanwhile, as for the 北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 IV 页UML graphical part, we can solve the problem in order to analyzing the UML format files. UML format file, which is similar to the XMI format file, using the Extensible Markup Language (XML), but it also records the various elements of UML activity, such as diagram size, color, position, and other graphical information which can be used to construct a corresponding activity diagram.3. In this paper, we use a new way to treat the UML activity diagrams, not only will it be seen as a description of the operations and activities of the work flow, but also will it be seen as a sequential process. In the program, it will be abstracted into a map in data and structure, also resolve it to a code segment, locating the bugs.Key words:UML activity diagrams, fault location, XMI parsing, XML北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 V 页目 录1 绪论 .11.1 课题来源 .11.2 研究背景与意义 .11.3 国内外研究现状 .21.3.1 UML 模型的一致性检查 .21.3.2 模型检查 .21.3.3 UML 测试调试工具 .31.3.4 小结 .31.4 研究内容与解决方案 .31.4.1 UML 活动图的处理 .31.4.2 错误定位算法 .31.4.3 解决方案 .41.5 论文组织架构 .42 相关技术和算法 .62.1 UML 活动图的解析 .62.1.1 XMI 格式文件的解析 .62.1.2 UML 格式文件的解析 .62.2 C+和 C#混合开发相关技术 .72.2.1 C+编写外部文件读取以及活动图解析的部分 .72.2.2 C#编写界面 .72.2.3 多项目混合开发的解决方案 .82.3 错误定位算法 .8北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 VI 页3 错误定位工具的设计与实现 .103.1 系统开发环境 .103.2 系统整体设计 .103.3 读取解析 XMI 格式和 UML 格式文件 .113.3.1 读取解析 XMI 格式文件 .123.3.2 读取解析 UML 格式文件 .153.4 活动图的解析 .163.4.1 循环的检查判定 .193.4.2 词法分析 .203.4.3 语法分析 .203.4.4 生成中间结构 .243.5 错误定位 .253.6 GUI 设计 .264 错误定位工具运行结果展示 .274.1 系统运行环境 .274.2 系统运行结果 .27总结与展望 .35总结 .35展望 .35致谢 .37参考文献 .39北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 1 页1 绪论1.1 课题来源本课课题来源于实验室在软件的自动化调试方面的科学研究。1.2 研究背景与意义软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来 1。众所周知,软件工程主要包括了需求获取、项目策划、建模分析设计、编码、测试以及部署交付等过程。研究成果表明,70%的错误是在软件工程生命周期中的早期被引入(即在模型设计阶段中引入) ;而错误中的 80%只有到了系统开发后期的测试阶段之后才被发现 2,因此错误的修改成本大大增加。惠普、IBM 、以及其他组织的研究人员发现,在构建软件模型阶段清除一个错误,其成本仅仅是在开发过程的最后阶段做同样事情的十分之一到百分之一 34。因此针对于设计模型的错误检查研究,有着非常重要的意义,可以大大降低错误检查的成本,有效保障软件质量 5。目前,随着各种系统和软件的规模与复杂度增加,模型驱动技术被广泛的应用于系统的构建、静态和动态行为刻画与分析等方面,模型作为对系统行为的刻画发挥着越来越重要的作用。统一建模语言(UML)是一种面向对象的建模语言,它是运用统一的、标准化的标记和定义实现对软件系统进行面向对象的描述和建模。它作为一种描述能力强大、涵义直观且被工业界广泛使用的可视化建模语言,提供了多种图形元素,从静态结构和动态行为等多角度及不同层次刻画系统特征和运行环境 6。统一建模语言(UML) ,它的目标是用面向对象的思想来描述系统,因此它具有很广的应用领域。在建立软件系统的模型这一环节,它得到了很多的应用,同时 UML 也可以用于描述各种非软件领域的系统,如:企业机构、机械系统以及业务过程等等。此外,对于处理复杂数据的信息系统、对于实时要求很高的工业系统,都有很好的应用。所以,UML是一个通用的建模标准,可以对任何具有静态结构和动态行为的系统进行建模。活动图是 UML2.0 中动态行为建模中的重要模型之一,可以对系统功能过程实现进行刻画,是一种流程刻画的图形建模语言,它结合了 Jim Odell 的事件图、SDL(规约北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 2 页和描述语言)状态建模技术、工作流建模以及 Petri 网等。活动图的应用领域广泛,且可以对于不同层次的过程模型进行刻画,包括对于工作流建模、执行算法建模以及代码层次模型等 4。随着活动图在系统建模中的应用越来越多,活动图模型的正确性检测与错误定位也为复杂系统的错误检查和定位提供了一种方式,即利用活动图作为系统功能的过程模型,结合实际观测或者需求期望来判定该模型是否存在错误。选题具有一定的意义。如果能在建模阶段就自动化的查找包括语法和语义的错误(bug) ,那么我们就可以大量的减少在后期编程阶段或者测试阶段再次发现错误所需要的工作量并减轻修改这些错误所需要的精力财力和物力。1.3 国内外研究现状统一建模语言(UML)作为一种描述能力强大、涵义直观且被工业界广泛使用的可视化建模语言,提供了多种图形元素,从静态结构和动态行为等多角度及不同层次刻画系统特征和运行环境。当前针对于 UML 错误检查的相关研究主要集中在 UML 一致性研究、基于模型检查技术的 UML 模型错误检查以及 UML 测试调试工具。1.3.1 UML 模型的一致性检查UML 模型的一致性检查是最常见的错误检查,它包含了语法检查和语义检查等,对于语法检查是将模型看作一组相互关联的元素,通过把元素之间的关系限定到一定模式,防止模型中产生某些类型的矛盾,这类方法的基本特征是以模型的语法结构为基础,定义元素之间的一致性约束。通常利用模型间语法结构等建立一致性约束,进一步执行模型检查。语义检查则通过形式化语义模型,包括进程代数、Petri 网、R-演算等理论,实现语义层面一致性的判定 78。1.3.2 模型检查针对于 UML 的模型检查,通常的方式是将 UML 模型转化为常用的模型检查工具输入模型,并建立属性检查期望。模型检查是针对于 UML 模型错误检查中最常见、也是应用最广泛的,通常将 UML 模型转化为 SMV9、SPIN 等主流的模型检查工具所支持的中间语言 10,然后利用模型检查工具,来判定 UML 模型是否满足指定的性质。北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 3 页模型检查主要用于检查功能属性,例如无死锁性、活性、安全性等,缺点除了状态空间爆炸问题外,对于检查过程的推理过程缺乏直观的刻画,对于度量模型不统一的检验无法有效处理。1.3.3 UML 测试调试工具UML 能够允许开发者在一个较高的抽象层次,利用活动图、状态机和顺序图等来对系统行为进行描述。为了进一步便于模型驱动开发,开发者需要增加对于 UML 模型的调试和测试。UML 测试调试工具则是在 UML 建模环境中,实现针对于模型的虚拟执行环境,加入测试和调试的功能, 常见的工具如 IBM 在以色列的 Haifa 研究室提供的 Model debugger,基于 Eclipse 的代码调试器,提供了相似的视图:调试、变量和断点 1112。1.3.4 小结通过以上的总结,我们可以发现,目前主流的几种 UML 错误检查的方法都各自存在优缺点。UML 模型的一致性检查多用于进行语法的检测;而模型检查主要用于检查功能属性,对于检查过程的推理过程缺乏直观的刻画,对于度量模型不统一的检验无法有效处理;UML 测试调试工具则主要是针对于人工的手动调试 13。选题则是主要针对于语义错误的自动化检测和定位,通过对实际运行状态和期望状态的比较来进行进一步的相对精确的错误定位。1.4 研究内容与解决方案1.4.1 UML 活动图的处理UML 活动图中有许多的元素和对象包括了:活动、状态、转移(动作流) 、分支与合并、分叉与汇合以及泳道等等。在这里我们主要讨论的是比较简单的活动图(只含有活动、状态、转移、分支与合并)以及怎样读入一个 UML 文件,并怎么样对这个文件进行操作,读取出其中的元素和对象,供下一步的使用。北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 4 页1.4.2 错误定位算法如果要在一个 UML 活动图中进行错误的定位,那么就必须要有一个高效的错误定位算法。目前我们已经有了一个形式化错误定位算法,但是这个算法的提出是针对于所 C-kernel 语言,它是 C 语言的一个子集,这一语言所有变量和常量都是整型的 1415。而我们的研究的对象是 UML 活动图,这其中有很多不同之处,面向的对象从一个程序段变成了一个图形化的活动图。那么我们就需要对读取出来的 UML 活动图元素对象以及错误定位算法进行进一步的修改和转化,从而能够使我们的研究对象适应这个成型的算法。1.4.3 解决方案首先,对于 UML 活动图的读取,我们可以使用 starUML 的 export 功能将活动图导出成 XMI 格式或者使用可以直接操作 UML 的库。然而 XMI 的优点是使用扩展标记语言(XML) ,因为其中包含了丰富而有规律的标签,因此 XML 语言为程序员提供了一种数据信息交换的标准方法。XMI 的目的在于帮助使用 UML 以及不同语言和开发工具的程序员彼此交换数据模型。正如我们都知道的,XML 格式的文件中,定义了很有规律的标签,我们可以用高级程序语言(如 C+)对 XML 文件进行操作,从而得到了系统的活动图的结构,从而进行下一步的基于 XML 结构化的形式化的文件的操作 16。接着,我们将对象元素使用高级程序语言转换成错误定位算法所需要的格式从而进行下一步的操作。这其中,从 UML 活动图中读取的结构可以对应到编程语言中的某些结构,比如:UML 活动图中的活动就可以看成普通的顺序执行的操作语句; UML活动图中的分支与合并就可以转换成编程语言中的判定、循环等等。最后,对于语义错误的检测和定位,我们将使用课题组提出的函数内调试的形式化错误定位算法。这个算法的提出是针对于 C-kernel 语言,它是 C 语言的一个子集,这一语言所有变量和常量都是整型的而且没有复杂的数据结构。所以我们需要将活动图转换成的 XMI 中的元素的格式更改并对算法进行适当的调整,使双方能够进行匹配,从而能够使用这个成型的定位算法完成错误的定位。北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 5 页1.5 论文组织架构本文的核心在于研究、设计及实现 UML 活动图模型中错误的定位工具。首先,分析国内外研究和相关技术的优缺点。接着,设计系统整体框架并详细讨论系统中每一模块的关键技术和核心功能的设计方案与具体实施。最后,展示系统运行成果并致谢。论文组织结构如下:第一章,介绍课题的研究背景及意义,明确本文的研究目标和主要工作内容,并对目前的研究现状进行介绍。第二章,分析系统中所用到的几项主要技术和相关算法。首先介绍使用高级程序设计语言解析 UML 活动图的技术,随后简要介绍一下 C+和 C#编程的知识,最后介绍错误定位的算法。第三章,根据课题研究目标,提出系统的设计原则,并设计系统的整体框架结构。对于每一个部分,详细说明具体的设计思路、数据结构以及实现细节,并介绍每一部分的关键技术。第四章,在各个部分都完成的基础上,展示系统在相应环境下的运行情况。第五章,总结论文的主要工作。北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 6 页2 相关技术和算法本文的主要研究内容是设计并实现 UML 活动图模型中错误的定位工具。本章中将分别针对系统设计和系统实现过程中的相关技术、算法和概念展开介绍。UML 活动图的解析UML 活动图是 UML 建模中行为图中的一种,它主要描述系统的动态模型和组成对象间的交互关系,它对于系统的功能建模特别重要,强调对象间的控制流程。2.1.1 XMI 格式文件的解析通过使用软件 starUML 的 export 功能,可以将 UML 活动图导出成 XMI 格式。XMI 格式的文件是 UML 的标准导出和操作文件。同时,XMI 使用了扩展标记语言(XML) ,为程序员和其它用户提供元数据信息交换的标准方法。因此,我们可以使用高级程序语言(如 C+和 JAVA 等)对于 XMI 格式的文件进行操作。同时,通过分析导出的 XMI 文件,可以发现它定义了关于一张 UML 活动图整体结构的信息,包括了所有元素的个数、每个元素的类型(活动、转移、选择、开始节点、结束节点等等) 、每个转移的条件以及各个元素之间的关系,比如:活动 A 和哪个转移相连;转移 B 从哪个活动指向哪个活动等等。这些就是我们分析一张 UML 活动图的重要信息,通过对这些信息的提取,可以将一个抽象的活动图整理成一个顺序执行的程序段,从而进行错误的定位。2.1.2 UML 格式文件的解析UML 格式的文件也是我们进行错误定位要处理的一个文件。与 XMI 文件相似,UML 格式的文件也是使用扩展标记语言(XML)编写的,这就可以通过高级程序语言进行分析了。与 XMI 文件有所不同的是,UML 格式的文件其中记录的信息不是活动图的整体结构,而是关于一张活动图的图形化的信息。其中记录了关于活动图中每一个元素的位置(基于左上角的横纵坐标像素值) 、每一个转移流的直线或折线的位置信息以及每个元素的大小颜色等等。这些信息都是有助于我们后期在图形界面上进行错误定位的操作。北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 7 页对于 XMI 格式和 UML 格式的文件中元素的解析和读取,我们选择了 TinyXML 这个基于 C+的 XML 解析器。TinyXML 是一个开源的解析 XML 的解析库,能够在Windows 或 Linux 中编译。它简单易用且小巧玲珑,非常适合存储简单数据,并且支持对 XML 的读取和修改。这个解析库的模型通过解析 XML 文件,然后在内存中生成DOM 模型,从而让用户很方便的遍历整棵 XML 树。DOM 模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等) ,并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。从开源中国社区上下载得到 TinyXML 的项目,配置时只需要通过将tinystr.cpp,tinyxml.cpp, tinyxmlerror.cpp,tinyxmlparser.cpp,tinyxml.h ,tinystr.h 这六个文件导入到我们的项目中,就可以调用其中的 API 来对 XML 文件进行读取解析。2.2 C+和 C#混合开发相关技术本项目采用 C+和 C#混合开发。主要因为 C+语言十分灵活方便,而且是面向对象语言,而 C#在 GUI 开发方面拥有很强的便利性。使用 C#编写系统的图形界面非常方便,它的封装性非常优秀,既可用代码来编写界面也可以直接通过 C#提供的拖拽控件的功能直接编写界面。我们的整体的思路是使用 C+来编写对于 XML 文件和 UML文件的读取和活动图元素的解析部分的程序,而使用 C#来编写程序的界面相关部分的程序,界面部分调用解析部分的函数来完成系统的实现。2.2.1 C+编写外部文件读取以及活动图解析的部分在对于外部文件的操作部分,使用 C+语言来编写相关的操作和处理程序。主要包括了:使用 TinyXML 对 XMI 文件和 UML 文件的读取,将一个活动图解析成一个顺序执行的程序段并转换为抽象语法树结构等等。这些部分主要是使用 C+语言来写的,利用了它的面向对象特性,可以写出很多封装的很好的自定义类来帮助完成。2.2.2 C#编写界面在 GUI 部分,使用 C#语言来完成界面的绘制。这一部分主要是使用 C#的设计界面,利用它的控件拖拽功能来完成绘制。其中利用到了其中的许多小的设计好的控件,北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 8 页比如:Form ,Panel,DataGridView,TreeView,ToolTip 等等。它们都是 C#中已经封装好的十分便于使用的小组件,可以让编程人员方便的实现自己的目的。2.2.3 多项目混合开发的解决方案在 Visual Studio2012 中,我们把整个系统称为是一个解决方案,而这一个解决方案则可能含有多个小的项目,它们要互相调用内部的函数和数据结构,而且这些小的项目可能并不是一种编程语言写成的(如:我们的解决方案中就是 C+和 C#) 。因为这些项目之间存在着相互调用的关系,这样就需要在属性中设置项目依赖项、启动项目以及包含目录等等,来确认互相之间的调用关系,这样在整个系统启动的时候编译器才能找到互相之间的调用关系一步步来编译,才不至于报错。其次,因为 C#和 C+并不是同一种语言,因此在 C#编写的界面中调用到 C+编写的函数的时候就要使用动态链接库(Dynamic Link Library,简写为 dll) 。将 C#中将要调用到的 C+中的函数,用一系列语句和规定封装成动态链接库,在 C#项目中通过使用 DllImport 语句来引入这些函数,从而实现混合项目之间函数的调用。这其中最重要的就是,这些函数的返回值和参数目前只允许是简单的数据类型和数据结构的(比如:int ,char ,char*,bool)否则就会报错。2.3 错误定位算法选题的错误定位算法选择函数内调试的形式化错误定位算法 1011,它在 UML 活动图中应用的基本思路是:当活动图测试出现了一个失败的测试用例时,根据用户预期的程序输入和输出,从活动图中找出与用户预期矛盾的极小片段,比如:几个活动和转移流组成的一个片段。若此片段仍然较大,则通过不断的与用户交互,让用户标记其中正确的活动、转移,或者让用户进一步给出片段中变量在某些状态下的预期值,利用这些新的信息缩小片段的范围,直到最终定位到活动图中的一个错误。在用户将此错误修复之后,还需要在修改后的程序上重新运行测试用例,进行回归测试。如果不存在失败的测试用例,表明程序通过了测试,之前的错误已经修复;否则,则说明程序中还存在其他的错误,需要重复整个错误定位过程,一次一个的找到并修复错误。算法执行的活动图如下:北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 9 页互 互bug互 互 互 互 互 互 互 互 互 互 互 互 互 互 互 互 互互 互 互 互 互互 互 互 互 互 互 互 互 互 互 互 互 互 互 互 互 互互 互 互 互 互 互 互 互 互互 互 互 互 互 互 互 互 互互 互 互 互 互 互 互 互 互 ,互 互 互 互 互 互 互 互 互 互 互 互图 2.1 错误定位算法的活动图北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 10 页3 错误定位工具的设计与实现系统开发环境硬件配置:(1) 主机 CPU: Intel(R) Core(TM)i5-2430M CPU 2.40GHz(2) 内存:4.00GB 软件配置:(1) 操作系统:Windows 7 旗舰版(2) 编译器:Visual Studio 20123.2 系统整体设计读取解析 X M L 文件X M I 、 U M L 文件外部文件解析活动图元素图的邻接矩阵G r a p h定位错误抽象语法树用户 缩小的范围错误信息图 3.1 错误定位工具的系统图读取解析 XML 文件:这一个模块主要是负责是解析 UML 格式和 XMI 格式的文件。因为这两种格式的文件内部都是使用扩展标记语言(XML )来编写的,所以在这一模块我们就使用 TinyXML 这个基于 C+的 XML 解析器来对这两个格式的文件进行北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 11 页解析,并将整个活动图抽象成一张图,保存在一个类似于图的邻接矩阵的复杂二维数组中。这个邻接矩阵则作为下一个模块解析活动图元素的输入。解析活动图元素:这一个模块的输入是基于上一个模块的输出,即读取解析 XML模块的操作结果(一个图的邻接矩阵) 。这一部分的操作类似于编译的过程,有词法分析、语法分析、语义分析(最后不需要生成目标机代码) 。在最后,该模块并不会生成对应的目标机代码,而是生成一个抽象语法树。这个抽象语法树就是讲整个活动图解析后得到的中间结果,下一步它将作为下一个模块的输入。定位错误:这一模块就是实现了函数内调试的形式化方法这个错误定位算法。具体思路是:当活动图测试出现了一个失败的测试用例时,根据用户预期的程序输入和输出,从活动图中找出与用户预期矛盾的极小片段,比如:几个活动和转移流组成的一个片段。若此片段仍然较大,则通过不断的与用户交互,让用户标记其中正确的活动、转移,或者让用户进一步给出片段中变量在某些状态下的预期值,利用这些新的信息缩小片段的范围,直到最终定位到活动图中的一个错误。3.3 读取解析 XMI 格式和 UML 格式文件在我们的系统中,我们把一张 UML 活动图看成是一个抽象的图,主要的操作都集中在这张图的邻接矩阵当中。这个二维数组邻接矩阵(Graph)中的每一个节点都是一个 GraphPoint。这个邻接矩阵与传统的一张图的邻接矩阵并不完全相同,对于传统的邻接矩阵,它只是为了表示一张图的节点与节点之间的连接关系,简单化为一个二维整型数组,在数组中每一个位置(i , j)都代表了图中节点 i 到节点 j 是否存在一条转移的边。而在我们这里,我们的邻接矩阵复杂了不少,二维数组的每一个位置不仅仅代表图中的节点 i 到节点 j 是否存在一条转移,而且其中每一个节点都包含了很多属性,涉及到节点 i 到节点 j 的转移流的条件,以及该节点在活动图中的位置等等。下面是关于 GraphPoint 类的详细属性介绍:北 京 航 空 航 天 大 学 毕 业 设 计 (论 文 ) 第 12 页表 3.1 GraphPoint 类的介绍属性 类型 说明Id String 节点的唯一标记符 IDname String 节点在活动图中显示出的名字guid String 节点在 UML 格式文件中的标记符out Int 节点 i 到节点 j 是否有一条边即是否有转移流left Int 关于该节点的在图形化界面上对于界面左侧的像素值top Int 关于该节点的在图形化界面上对于界面上方的像素值points String 对于一个转移流,它在图形化界面上所有

温馨提示

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

评论

0/150

提交评论