关键词:
面向对象
依赖性分析
粗粒度
概率
重构
软件度量
摘要:
程序依赖性分析是软件工程领域中一项重要而基础的活动,它是对已有程序分析与理解的基础,并在程序切片、逆向工程、软件测试以及软件重构等软件工程各个领域都有着重要的意义。Java语言由于其优越的跨平台性,在异构网络系统中使用愈加频繁。随着软件产品的急剧增多,越来越多的遗产代码需要进行分析、理解、复用,对Java程序进行依赖性分析的必要性也与日俱增。
由于Java程序设计语言完全面向对象的特性,现有的依赖性方法已不能完全满足其分析要求。本文在回顾传统依赖性分析方法基础之上,详细阐述了一种分层次的粗粒度依赖性分析方法,按照自顶向下,逐步求精的原则依次分析Java程序在包级别、类级别以及方法级别上的依赖关系,并在语句级别的分析中,按照按需细化的原则,只对所关心的语句进行依赖性分析,降低了系统依赖性分析的代价。在语句级别的依赖性分析中,本文还进一步讨论了程序执行期间语句执行的概率信息,并提出了考虑语句执行概率的依赖性分析方法。分别分析程序中不同的控制结构与方法调用方式,对其后续程序语句的执行概率的影响,从而更加准确地描述程序在执行期间的依赖关系。本文介绍了分层次及概率依赖性分析在软件重构、软件度量以及软件测试等方面的一些应用。通过应用依赖性分析技术于软件重构中,对软件重构的指标进行量化度量,并提出了基于模糊聚类技术的软件重构方法,可以对软件重构活动进行相对客观的指导;基于对类中方法数目与它们之间的概率依赖信息综合考虑,本文对类内聚度缺乏度量提出一种改进,进一步提高类内聚度缺乏度量的准确性。
最后,在进行理论分析的基础上,本文给出了实现以上研究内容的原型系统的实现细节,并展望了未来的工作方向。