论文部分内容阅读
从软件生命周期来看,需求分析与设计阶段是软件开发的前期阶段,是编写代码的基础。设计阶段信息是指在软件设计阶段所产生的各种动态与静态信息。这些信息通常以文本文档、流程图或建模语言的形式进行记录。设计阶段信息不仅反映了软件系统的语义信息,同时也刻画了对象之间静态和动态的关系,它在整个软件生命周期中都存在,能够使开发人员更好地理解程序语义。在代码开发、测试、维护,尤其是软件重构等方面,都具有重要价值。然而,如何对软件设计阶段产生的信息进行建模和抽取,一直是软件开发过程的难点,也是造成设计与实现之间鸿沟的重要原因。设计阶段有价值的信息无法得到有效利用,这也导致了在软件重构、测试以及维护方面的很多障碍。无论是从结构化程序到面向对象程序的重构,还是从面向对象到面向方面程序的重构,对程序语义的理解是关键,而语义信息在软件设计阶段都被很好地描述和刻画。因此,本论文的目的就是对软件设计阶段蕴含的部分信息进行建模与抽取。所得到设计信息能够应用于面向方面编程及软件重构中。在此基础上,能够挖掘设计阶段形成的语义信息,有效地帮助开发人员进行软件重构及测试。目前,统一建模语言UML(Unified Modeling Language)是软件设计阶段建模的主流工具。UML已成为工业界对设计信息建模的事实标准,它从不同的功能层次上对软件设计与开发进行加强。UML与程序设计语言无关,能够在较高抽象层次上进行软件设计。本论文将以UML作为软件设计阶段信息的载体进行分析。由此,本论文首先对软件设计阶段信息进行归纳和总结,抽象出了设计信息抽取的方法。并对UML图进行了归纳,给出了UML建模工具的分类。其次,由于直接对UML图进行信息抽取比较困难,因此本文给出了UML与关系模型的映射。又由于所有的UML图都属于两大基本图范畴——结构图、行为图,而UML中的类图和序列图各自代表了两大基本图范畴,因此,本论文分别给出了类图和序列图到关系模型的详细映射规则。针对类图,本文首先总结了三种现有的映射方法:简单映射、事实表映射、单表层次映射。在此基础上,本文对这三种映射方法进行了扩展,给出了通用结构映射方法。针对序列图,本文在通用结构映射的方法上继续扩展,增加了调用关系映射。在完成UML到关系模型映射的基础上,本文总结了设计信息抽取的目标、形式和准则。并着重给出了对面向方面编程(Aspect Oriented Programming,AOP)中横切关注点的抽取算法。在完成横切关注点抽取之后,本文创新地给出了使用元数据对设计信息进行表示,并将横切关注点信息以元数据的方式透明地植入到代码框架中。另外,本论文完成了MetaDesign原型工具,能够支持本文提出的UML到关系模型的映射、设计信息抽取以及元数据植入。最后通过应用实例加以演示。