论文部分内容阅读
逆向工程指的是从可运行的程序系统出发,生成对应源程序的系统结构以及相关的设计逻辑等等。它具有重大现实意义和经济价值,可以将大量的遗产系统转化为易于演化的系统,从而充分有效地利用这些有用资产。虽然近年对软件逆向工程的研究已有不少,但是它仍然属于一个未充分发展的领域,并未形成统一的标准、方法和过程,因此很有必要进行深入研究。
UML已成为设计面向对象系统的一种标准。它使用面向对象的概念来分析、描述软件系统并构造系统模型。逆向工程的目标是在高层抽象层次上抽取程序的有关信息,逆向工程的过程是复杂的。逆向工程可以从源程序抽取出设计信息,但是,抽象的层次、文档的完整性、工具和分析人员一起工作的程度以及过程的方向性却是高度可变的。
目前,一些规模庞大、结构复杂的软件,给后一阶段的维护工作带来了很多困难。一般来说,维护工作非常关键,阅读并真正理解他人编写的程序是最大的难点。根据这种需求,针对面向对象语言Java,分析Java源代码,将其逆向生成对应的UML模型图。同时,还可以将其生成的模型图同软件开发中系统设计时的UML进行比较,以达到测试设计是否正确。与此同时,还可进一步利用逆向生成的UML设计测试用例,以满足在系统设计的需求阶段就可以进行测试,而不必等到编码开始时再进行测试。针对此项,又将进一步设计测试用例。
本文主要对逆向变换方法的核心问题——逆向变换规则与机制进行了研究,提出了Java语言向UML的映射规则,逆向表示及抽取机制,实现了UML模型图的逆向生成,并将所生成的状态图应用于测试用例的自动生成技术之中。研究了基于UML状态图说明的测试用例生成技术,由此深入研究了A.J.Offutt提出的基于状态说明测试用例生成算法,并对此算法进行了改进,实现了表达式分析,变量值确切标识的扩充。最后实现了测试用例的自动生成。通过这些研究,这对减轻维护工作量,加快产品更新具有重要的意义。