动态信息收集与用例模型恢复技术的研究.pdf
《动态信息收集与用例模型恢复技术的研究.pdf》由会员分享,可在线阅读,更多相关《动态信息收集与用例模型恢复技术的研究.pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、http:/ 一种利用动态信息迭加生成用例模型的方法1 曹翀,陈平 西安电子科技大学软件工程研究所,陕西 西安(710071)E-mail:摘 要:摘 要:在逆向工程中,逆向生成的用例模型可以有效的帮助用户在系统的整体结构上理解软件的功能和行为特点,因此对于理解面向对象的软件系统具有重要意义。本文提出了一种利用动态信息迭加生成用例模型的方法。该方法可以利用多次收集到的动态信息,迭加生成目标系统的用例模型并以 UML 用例图的形式呈现。通过实验测试,使用该方法恢复出来的用例模型接近于实际模型,证明了该方法的有效性。关键词:关键词:逆向工程;UML;用例模型;程序分析;迭加生成 1 引 言 1 引
2、 言 软件逆向工程是分析软件构件和它们的关系,以另一种形式或在更高抽象层次上描述该软件的过程。UML(Unified Modeling Language)用例图是对系统进行动态建模的五种图之一,它主要用于对系统、子系统和类的行为进行建模,描述一组用例、参与者以及它们之间的关系。在逆向工程中,用例模型的恢复技术仍是一个全新领域,但它的重要性却十分突出。通过逆向生成的用例模型,用户能够从系统的整体结构上理解软件的功能和行为特点;在此基础上,用户能够来完成自己所要进行的活动,如系统的维护和升级、系统文档的维护和恢复、再工程以及系统的移植等。目前已有一些针对用例模型逆向生成的研究成果,但这些方法主要基
3、于研究目的,使用比较复杂,实用化难度较高。经过实验研究,曾提出一种基于动态信息并结合静态信息的用例模型恢复方法,该方法能够比较有效的恢复用例模型,且具有较高的生成效率。但是,由于该方法是以单次收集到的动态信息为基础,受限于单次收集到的动态信息的不全面性,导致了该方法不能生成完整的用例模型。经过进一步的实验研究,本文以上述的用例模型恢复方法为基础,提出了一种利用动态信息迭加生成用例模型的方法,该方法可以迭加多次收集到的动态信息,然后以此为基础,并结合适当的静态信息重新生成用例模型。相对于旧有的方法,该方法生成的用例模型更为全面和合理,而且生成效率仍然较高,恢复出的用例模型有助于用户的理解。1基金
4、支持:国家自然科学基金(项目编号:60473063),国家教育部博士点基金(项目编号:20030701009)及“十五”国防预研项目(项目编号:41306060106)http:/ 2 已有的用例模型恢复方法 2 已有的用例模型恢复方法 基于线索的用例模型恢复方法和分支调用图方法,这两种方法都是通过对目标系统的源代码进行静态分析从而恢复用例模型,因此对于规模较大的目标系统效率较为低下。通过对系统用户交互界面的追踪来发掘用例的方法,该方法通过动态分析从系统和用户的交互过程中来发掘用例模型,由于该方法要求系统存在大量的用户交互接口,这样就限制了它的适用范围,对于批处理系统或者是那些不存在或者存在很
5、少用户接口的系统则不能使用该方法来逆向出系统的用例模型。一种基于动态信息并结合静态信息的用例模型恢复方法,此方法利用从目标系统单次运行中收集到的动态信息,并适当结合主要记录类间关系的静态信息,逆向生成用例模型。首先,从收集到的单次动态信息中提取出基本用例序列;其次,按照相应的用例抽取和合并规则,分别抽取出循环、顺序、分支和独立用例;再次,对得到的用例进行适当的调整,补充必要的用例以及对用例分层;最后,以 UML 用例图的形式呈现生成的用例,并可由用户手动修改完善用例模型。由于此方法主要依靠的是单次收集到的动态信息,因此,生成的用例模型往往不够全面,甚至会导致生成的用例模型有一定程度的偏差。3
6、利用动态信息迭加生成用例模型的方法 3 利用动态信息迭加生成用例模型的方法 在提出并实现了 2 中所述的基于动态信息并结合静态信息的用例模型恢复方法后,经过实验研究,本文提出了一种利用动态信息迭加生成用例模型的方法,该方法改进了原有的方法。生成的用例模型仍是属于低层次的,反映系统一定功能特点的功能型用例模型。3.1 整体处理流程 3.1 整体处理流程 1.对收集到的单次动态信息文件进行处理,抽取出其中的关键方法调用序列构成单次基本用例序列;2.读取记录基本用例序列的文件,构成另一个基本用例序列;3.根据得到的两个基本用例序列,按照基本用例序列迭加处理流程,进行迭加处理,得到迭加后的基本用例序列
7、,并存入记录基本用例序列的文件;4.按照用例抽取合并规则,从迭加后的基本用例序列中抽取出用例信息;5.按照用例调整规则,对得到的用例信息进行调整;6.将调整后的用例信息保存为 XML 文件,至此已恢复出了系统的用例模型;7.将恢复出的用例模型交于 Rational Rose 呈现,并通过专家和用户的参与,对用例模型进行进一步的分析、加工和抽象,以得到更为确切的 UML 用例图。-2-http:/ 3.2 基本用例序列的迭加处理 3.2 基本用例序列的迭加处理 提取单次收集到的动态信息文件中的关键方法可以得到单次基本用例序列 Temp,读取记录基本用例序列的文件可以获得记录的基本用例序列 Res
8、ult,获得两个基本用例序列后,按照如下的流程将两个基本用例序列进行迭加:1.判断 Result 是否为空,若是则 ResultTemp 并将 Result 记录文件后退出,否则,执行后面的步骤;2.按照图 1 所示的基本用例序列迭加算法将 Temp 中的基本用例序列迭加入 Result 中;3.调整生成的基本用例序列 Result:统计每个基本用例的出现频度,对出现频度为 2 的基本用例只保留第一次出现的位置其余均删除,并将相邻的同一基本用例合并为一个基本用例,然后,再重新统计每个基本用例的出现频度并记录;4.将调整后的 Result 存入记录基本用例序列的文件,以备以后有新的动态信息时可以
9、继续迭加。在基本用例序列的迭加处理算法中,最重要的就是图 1 所示的基本用例序列迭加算法,该算法将 Temp 中的基本用例加入 Result 中,以实现对 Temp 和 Result 的迭加。输入:基本用例序列和),(21mtttTempL=),(Re21nrrrsultL=输出:迭加后的基本用例序列),(ReLLLjirtsult=步骤:1Index指示 Temp 下标范围,指示 Result 下标范围,2IndexNpT 且指向Temp,且指向,代表子串的频度,NpRsultReNaS NaT 代表指向的基本用例的频度 pT1pR while do Temp;1pTaTaS;pTttsub
10、StringL1;while do/寻找子串第一次出现位置),(ResubStringsulttPositionLookupFirspR=1+pTpTif AND 1IndexpTaSaT=then if CompName(pT)then break;/pT 指向的用例名是否与的某用例同名11pTtt else do 1+pTpT if then 1IndexpTpTttsubStringL1;else break;fi od fi else break;fi-3-http:/ od while AND 1IndexpTaSaTpT1 pTpT插入()pTtt,1L至 pR 处并从 Temp
11、中删除()pTtt,1L;pTpRpR+;od 图 1 基本用例序列迭加算法 设 Temp 的基本用例个数 m,Result 的基本用例个数 n,则算法的平均时间复杂度为,在实际工程中,基本用例序列的个数有限,所以,该算法收敛。)(nmO3.3 用例合并规则 3.3 用例合并规则 得到经过 3.2 所述流程处理调整的基本用例序列后,则由用例合并过程对其中的循环、顺序、分支和独立关系进行认定和抽取,从而构成目标系统的用例模型。用例合并规则如下:1.对基本用例序列,按照循环、顺序、分支、独立的次序进行识别和合并;2.对于存在循环关系和顺序关系的基本用例集合,将整个集合作为一个用例,内部的每个基本用
12、例作为其包含的子用例,父子用例间存在包含关系;3.对于多个单元之间存在的分支关系,以代表发散节点的那个基本用例作为一个用例,而那些代表各个分支的基本用例则作为子用例在其内部体现出来,父子用例间存在延伸关系;4.剩下的是具有独立关系的基本用例,将每个相邻的基本用例集合均作为一个用例。在整个基本用例合并抽象算法中,最为重要的部分就是蕴含循环、顺序、分支和独立关系的基本用例集合的抽取合并算法。图 2、3、4、5 分别简要阐述了这些算法。输入:基本用例序列()nuuuU,21L=输出:蕴含循环关系的基本用例集合构成的集合mIIII,21L=步骤:while do Uunow 寻找出子序列,要求其中用例
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 信息 收集 模型 恢复 技术 研究
限制150内