论文部分内容阅读
依赖性分析是由ProsserR.T.于1959年提出,反映了程序中语句之间的执行顺序和相互作用,是一种重要的程序分析和理解方法。虽然程序能表示计算机的执行序列,但却难以向软件开发人员提供系统的体系结构,如数据、模块之间的依赖关系。另一方面,在维护程序时,经常需要对某一程序段作一些修改,如何确定修改对模块的其余部分和其他模块所造成的影响,也是维护人员所必须解决的问题。通过程序依赖性分析,我们可获得解决以上问题所必需的信息。依赖性分析技术的研究、发展和应用已经经历了40多年,研究者开展了许多工作,取得了一系列的理论成果和开展了部分实际应用,已广泛应用于程序分析、理解、优化、调试、测试、度量、复用、程序变换、模型检查、软件安全、软件维护、软件逆向工程和软件再工程的各个方面。
目前,针对变量之间和语句之间的依赖性分析已经取得了比较系统的成果,趋于成熟。在顺序程序中,依赖性分析主要涉及到由于控制语句的使用而引起控制依赖,和对同名变量的读写而引起的数据依赖。在对并发程序进行依赖性分析中,由于并发程序包含多个控制流和数据流,所以增加了同步依赖和任务间数据依赖等关系。大部分现有的面向对象程序依赖性分析方法是在顺序程序依赖性分析方法的基础上进行面向对象扩充而得来的。现在,人们已经开始有意识地拓宽依赖性分析的领域,并且已经取得了一些成果。如,对企业级组件进行依赖性描述。然而针对统一建模语言UML(UnifiedModelingLanguage)模型的依赖性分析的研究才刚刚起步。
随着现在的软件规模越来越大,软件的复杂程度也越来越高,为了开发性能优良的系统,越来越多的人借助UML。大型软件项目各模型间的协作和约束关系错综复杂,如何对这些模型进行管理和维护已成为一个十分重要而又极其迫切需要解决的问题。现有的程序依赖性分析方法无法直接应用到UML模型中来。为此,论文将进一步扩展依赖性分析的领域,采用依赖性分析技术来明确UML模型中各个建模元素之间的依赖性关系,并将其应用到切片和度量,在一定程度上辅助人们对UML模型进行理解,便于人们对UML模型进行修改和维护,并可为UML模型的复杂性度量提供应用基础。论文的主要工作有:
1.面向UML类图的依赖性分析及其在切片上的应用提出了一种针对UML类图的依赖性分析方法,以类和链接关系为依赖性分析单元,考虑了双向关联关系、单向关联关系、关联类、一般聚合关系、共享聚合关系、组合关系和泛化关系等,忽略每个类的属性和操作的实现细节。运用该方法对大型的面向对象软件系统进行依赖性分析时,能够更快地理解系统的结构和各种依赖关系,从而提高分析和理解的效率。在此基础上,提出了一种UML类图粗粒度切片方法,设计并实现了该切片方法。最后通过实例验证了该切片方法的实用性和较高的效率。
2.结合UML通信图的类图依赖性分析及其在切片上的应用提出了一种结合UML通信图的类图依赖性分析方法。此方法采用动态模型通信图来确定类图中的对象操作,以类、属性和操作为依赖性分析单元,进一步细化了类图中类、属性和操作间的各种依赖关系并将分析得到的结果映射到类中。之后构造一种结合UML通信图的类图的依赖图模型的构建方法。在此基础上,提出了一种UML类图细粒度切片方法,能得到一个更加精确的切片结果,可进一步缩减类图的规模,有助于在详细设计阶段更好地分析、理解UML静态模型。
3.面向UML状态机图的依赖性分析及其在切片上的应用提出了一种针对UML状态机图的依赖性分析方法。此方法把UML状态机图划分为不包含复合状态的UML状态机图、包含顺序子状态的UML状态机图和包含并发子状态的UML状态机图等三种类型,依赖性的计算以状态和迁移为单元,在定义数据依赖时考虑了一个基本状态或迁移在定义或修改多个变量时的情形,解决了现有依赖性分析方法中一个节点上不能定义或修改多个变量的情形。在此基础上,提出了一种UML状态机图切片方法,较好地解决了已有方法中存在的问题,切片结果缩减了UML状态机图的规模,有助于更好地分析设计和理解调试UML动态模型。
4.基于依赖性分析的UML类图复杂性度量研究系统地研究现有的各种UML类图的度量方法,并着重对这些度量方法从观点、类间关系类型、度量值的类型(绝对和相对度量)、计算复杂度、以及理论验证和实验验证等多个方面进行了分析和比较。然后选取基于依赖性分析的UML类图度量方法为研究重点,详细地从理论和经验两个方面上对其表现与本质进行了较深入的探讨,并指出了其中存在的若干问题和错误,如无法区分和结论不合理等问题,分析了深藏其中的原因,为研究指明了方向。
5.一种新的基于依赖性分析的UML类图复杂性度量提出了一种新的基于依赖性分析的UML类图复杂性度量方法,从类间关系的复杂性和类自身的复杂性等两个方面来度量类图的复杂性。在考虑类自身的复杂性时应侧重于考虑类中属性和操作在公有、私有和受保护等方面的影响;同时该方法克服了现有许多类图复杂性度量准则仅考虑某个方面而没有综合考虑的不足,实验结果表明该方法与人们的经验有较高的相关性,为综合评估类图的结构复杂性提供了依据。论文还详细地对该方法所具有的优良性质进行了证明,设计并实现了该度量方法。
论文的主要创新在以下几个方面:1.提出了UML类图和结合UML通信图的UML类图的依赖性分析方法,前者以类和链接关系为依赖性分析单元,而后者以类、属性和操作为依赖性分析单元;之后在此基础上对UML类图进行了粗粒度切片和细粒度切片。UML类图切片结果可进一步缩减类图的规模,有助于在设计阶段更好地分析、理解UML静态模型。
2.提出了UML状态机图的依赖性分析方法,以状态和迁移为依赖性分析单元,解决了现有依赖性分析方法中一个节点上不能定义或修改多个变量的情形。在此基础上,提出了一种UML状态机图切片方法,切片结果缩减了UML状态机图的规模,有助于更好地分析设计和理解调试UML动态模型。
3.提出了一种新的基于依赖性分析的UML类图复杂性度量方法,从类间关系的复杂性和类自身的复杂性等两个方面来度量类图的复杂性。该方法克服了现有许多类图复杂性度量准则仅考虑某个方面而没有综合考虑的不足,为综合评估类图的结构复杂性提供了依据。