APP下载

面向对象软件度量方法及自动化度量工具研究

2009-01-22

企业技术开发·中旬刊 2009年8期
关键词:面向对象

魏 峥

摘要:度量技术是保证软件质量的重要手段,它定量地反映了软件某一方面的特征。随着面向对象技术的发展,传统的结构化度量不再适合面向对象的软件,面向对象度量是对象技术不可分割的一部分,基于对象技术的软件度量成为必然的需求,从而面向对象软件设计度量的研究与实现是文章研究的内容。文章在现有度量公式的基础上,利用正则表达式,可以简单度量出Java源代码的复杂度属性。

关键词:软件度量;面向对象;度量工具

中图分类号:TP311.5

文献标识码:A

文章编号:1006-8937(2009)16-0116-02

1软件度量的背景和意义

软件度量(software measurement)是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。没有软件度量,就不能从软件开发的暗箱中跳将出来。通过软件度量可以改进软件开发过程,促进项目成功,提高软件质量。

随着面向对象开发方法和面向对象设计语言的广泛使用,用户采用面向对象技术开发的软件系统和产品日益增多,有关面向对象软件度量的研究也受到软件界的重视,面向对象技术采用数据抽象、封装、继承、多态性、信息隐藏、重用机制等。为提高软件的可重用性,增强可维护性、可靠性,提高生产效率等方面提供了可能。

2面对对象软件度量

2.1度量的定义

度量(Metrics)的定义是:“度量是一个函数,它的输入是软件数据,输出是单一的数值,能用以解释软件所具有的一个给定属性对软件质量影响的程度。”软件质量度量是对影响软件质量的属性所进行的定量测量。

人们已经提出的软件度量包括软件复杂性度量、模块性度量、可修改性度量、可移植性度量、可扩充性度量、可靠性度量、可维护性度量等等。尽管在IEEE的定义中,“软件数据”没明确提出,但如果评测一个软件产品,则这个被评测的产品就是输入的软件数据,这些软件数据均可以形式地予以定义。

2.2面向对象软件度量模型

传统的非面向对象的软件度量较多的关心软件复杂度的度量。通过软件复杂性折射软件的质量。面向对象的方法学的出现带来了软件开发的革命,也带来了面向对象软件度量的革命。针对面向对象的软件生命周期和质量保证,F.B.Abem非形式的提出了七条标准:①度量应该形式化定义;②度量应该与系统大小无关;③度量应该选择合适的刻度类型;④度量应该在生命周期的早期就可用;⑤度量应该具有可扩展性;⑥度量应该易于计算;⑦度量应该独立于语言。

Abreu的七条标准对开发针对面向对象的度量具有一定的意义。近几年来涌现了大量面向对象的软件度量模型,比较有影响的如:C&K度量集,MOOD度量集,MOOD2度量集等。

3Java软件的度量工具的设计思想与开发

3.1Java软件度量工具(Metric Tool)的设计

所谓Java软件的质量度量,就是对Java程序源代码进行分析度量。Java软件的度量工具设计的总体思路将遵从面向对象设计的基本原则,如图1。

文章设计的软件度量工具是一个基于C&K和MOOD理论的度量工具,该工具可以运行在Windows XP上,其主要功能就是通过对用户Java源程序的扫描,计算出C&K度量指标:方法数、继承类的总数,接口总数,继承树深度(DIT)、孩子数目(NOC)、每个类的加权方法(WMC);MOOD度量指标:方法继承因子(MIF)、多态因子(PF)。通过所该工具得到的度量数据,可以帮助开发人员及时地了解程序的复杂性,估计出程序的稳定性及可维护性,指导测试人员进行有效的测试。

3.2实现功能模块的简述

查看度量结果有两个入口,首先是本地工程度量,其次是历史工程查看。

3.2.1本地工程度量(XML信息库的创建)

由于我们设计的度量工具以xml作为信息库,因此度量某工程首先必须把需要度量的信息存入xml信息库中,实现的步骤如下:

①选择工程目录,遍历整个工程目录,提取出.java的文件名。②得到的.java的输出流(BufferedReader),将其传人语法分析器中,返回List集合类,该集合存放着XClass对象。由从该XClass对象中可以提取出这个类的继承类、实现的接口、方法个数、方法名称、变量个数及名称、子类的个数、继承数的深度等信息。③将得到的XClass传入XML创建类(XmlFileCreate)中,该类通过传入的信息返回要一定格式的Document,通过idom来构建xml信息库。JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。JDOM直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念以及映射),把SAX和DOM的功能有效地结合起来。在使用设计上尽可能地隐藏原来使用XML过程中的复杂性。④将得到的Document写入创建的XML文件中,存放在工程目录xmlfile文件夹下面,该文件默认以工程名称+时间作为文件名,来避免出现相同的文件名,名字规范如下:softmeasure-2008-05-31 18:36:50.xml。⑤历史文件的管理。包括历史文件的修改名称、删除、查看度量结果。

3.2.2度量计算器的实现

度量计算器读取xml信息库的结果,根据度量模型对相关度量指标进行计算。度量计算器只和知识库交换,不受外界环境的影响,这是知识库的隔离变化和分析器的适应变化发挥功效的体现。度量计算器套用C&K和MOOD度量集给出了一些计算公式,来实现软件工程的度量。

3.2.3度量结果的展示

①窗口视图展现。度量结果的展示由三个窗口视图JInteranlFrame和中间JTabbedPane组成。三个窗口视图分别是项目视图、类视图、信息视图。类视图:以树的形式展现了类的信息,包括继承类、实现接口、方法体及名称;信息视图:以JTable显示有C&K、MOOD套件度量出的信息、以及其他类的信息;项目视图:以树的形式展现了工程目录所有java文件。树的结构按工程目录一>包名称一>类名称,该树添加了一个鼠标事件监听器。②中间区域信息的展现。中间信息区域为一个JTabbedPane面板,有4中的tab页的类型,报表的实现一JFmeChart包来实现,JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,本系统中用到了饼图和柱状图的实现。③XML信息库的读取和存放。对XML信息库的读取同样是用jdom包实现,读取到的信息则将其存在Map集合类中,以key值作为包名,值是一个以类名为key值,TreeNode类为value值的HashMap。④面板工厂管理。由于系统面板比较多,所以采用工厂模式对面板进行管理,使得代码更加清晰易懂。⑤程序截图,如图2所示。

3.3Java软件度量工具开发平台与工具的介绍

Eclipse平台:Eclipse是一个开放源代码的、基于Java的可扩展开发平台。Eclipse是一个开发源码项目,可扩展性很好,而且任何人都可以免费得到,并可以在此基础上开发各自的插件,开源插件和商业插件都可以用来扩充Eclipse。因此越来越受人们关注。

4结语

面向对象软件度量及其自动化的研究具有广阔的应用前景。面向对象软件的度量目前只是处于探讨阶段,尚没有从面向对象软件的特点挖掘出具有理论价值和实用价值的度量方法和准则。以上的度量方法只是对面向对象技术中某一方面特有的内部属性进行了评估,还不能将它们与整个系统的件复杂性对应起来。即使不精确,也有一定的参考价值,因此,我们所设计出的度量工具也正基于这些度量集来实现。

猜你喜欢

面向对象
面向对象方法在水蓄冷PLC编程中应用分析
基于python的面向对象传感器库类抽象方法
面向对象的计算机网络设计软件系统的开发
面向对象的数据交换协议研究与应用
面向对象Web开发编程语言的的评估方法
基于面向对象的Office评测系统的分析
峰丛洼地农作物面向对象信息提取规则集
基于E-cognition的面向对象的高分辨率遥感图像分类研究
基于面向对象的车辆管理软件的研制与开发
面向对象的SoS体系结构建模方法及应用