周丽英
(大庆钻探工程公司录井一公司 信息中心,黑龙江 大庆 163411)
面向软件开发信息库的数据挖掘综述
周丽英
(大庆钻探工程公司录井一公司 信息中心,黑龙江 大庆 163411)
[摘 要]如今硬件开发渐渐陷入瓶颈,软件的开发成为重点,如何将软件开发信息库中数据利用起来,是一个值得研究的课题。本文结合软件开发信息库与数据挖掘进行阐述,提出做好数据挖掘的一些策略,以供参考。
[关键词]软件开发;信息库;数据挖掘
面向软件开发信息库的数据挖掘是一个值得研究的课题。随着技术的不断进步,软件开发信息库中的数据日益庞大,如何将其中的数据利用起来为软件开发提供便利,是值得思考的问题。
软件开发过程中相关数据的总和就是软件开发信息库,其体现出了信息的数据化。一般包括以下几种数据化信息。①项目信息数据包括开发过程、软件开发里重要的数据、任务细节、资源等。收集项目的信息数据对后期的项目开发,有着重要的作用,关系着软件最终的性能。②源代码。软件开发项目最关键的要素就是源代码,直接关系着程序的执行能力。源代码包括软件开发中设计的源代码、软件升级源代码以及修改过程中的源代码。③软件开发过程中的历史信息及相关文档(包括测试文档、需求文档、设计文档、邮件存档与交流记录等)信息数据。根据信息数据的不同,主要采取3种数据系统进行数据的存储:①软件配置管理系统(Software Configuration Management System,SCMS),用于存储源代码、开发过程中的文档以及历史记录,比较常用的有CVS系统、SVN系统等;缺陷跟踪系统(Defect Tracking System,DTS)用于存储管理软件开发中的缺陷信息以及修改信息,目前,最常用的系统就是Bugeilla(开源软件缺陷管理系统);项目管理系统(Project Management System,PMS)用存储项目计划、资源分配、执行过程等信息数据,例如,微软project软件。
数据挖掘(Knowledge Discovery in Database,KDD),又叫数据库中的知识发现。包括4个步骤:①数据抽取,从数据源中抽取所需数据进行研究;②数据预处理,实际抽取的数据与开发所需的数据并不一定就相符,所以需要对数据信息进行预处理包括数据的清洗、转换、归纳及重构;③知识发现,这是数据挖掘中的关键,就是应用数据挖掘技术在一些潜在的、未知且有用的信息中发现数据并运用于实际开发中;④知识表示,是应用于软件开发的表现,主要就是将前三步的数据进行整理归纳并应用,比如:发现实体间的关键联系规则后,在知识表示这一步骤中将分析的关键规则进行关联推荐。
事实上在面向软件开发信息库的数据挖掘中还存在着或多或少的技术难点,主要包括数据信息复杂、数据分析形式变化以及数据挖掘的效果无法有效保证等。因此,要做好面向软件开发信息库的数据挖掘主要可以从以下几个方面入手。
2.1数据来源
数据来源主要就是所获取的数据的来源,要进行数据挖掘首先得要有数据才能够进行挖掘。软件开发信息库中包含有巨量的信息可供挖掘。可以从权威机构的开源信息以及网络上的开源软件中获取源代码信息。具体来说就是,软件开发公司或者自由程序员开发出来的数据信息,只要能够获得合法权限都是可以作为数据挖掘的数据来源。比如:大型软件开发组织自身可以自行建立一个软件开发信息库,软件开发组织将自身软件开发的信息整理归纳出来,便于抽取、理解以及分析处理。
2.2数据预处理
数据预处理是数据挖掘的第二步骤,具体操作有以下几个方面。①对配置系统进行科学有效的管理,清除重复无效信息数据,将重要或关键信息以及与软件开发项目相关的信息导出并分析,然后将分析结果同数据一同存储,扩充信息库的同时为后续应用提供数据来源。②缺陷系统数据的处理。就是对缺失的属性值进行分析处理,主要包括缺陷类别、状态、缺失的信息属性值等,在充分考虑数据间的关键联系后进行处理。③缺失、不一致的数据或者噪声数据的处理。软件开发的时间点可能不一样,任务的前后关系也不一样,甚至数据中还有不必要的噪声数据,因此,需要对这些数据进行处理,为后续的数据转换提供便利。
2.3分析软件演进
分析软件演进,就是数据的转换,对配置管理系统、缺陷系统、项目过程数据的转换要分别进行转换。首先,需要对这些系统当中的信息进行科学有效的分析,尤其是数据当中的关联性(或者语义)要分析到位;其次,要对软件结构进行全盘考虑,包括方法、定义、需求、相关变量等。
2.4缺陷分析与动态建模
在这个步骤中,主要是根据实际情况对软件缺陷进行研究与分析,决策树、回归分析、神经网络等方法是十分有效的缺陷分析方法,对源代码的提取与转换提供了巨大的帮助。二项回归模型方法是较为主流的缺陷分析方法,可有效地分析与统计软件缺陷数据。
软件开发信息库的作用日益凸显,在如今硬件渐渐陷入瓶颈的特殊时期,软件的开发就成为提高硬件性能的有效手段。而数据挖掘的应用对于提取软件开发信息库中的数据有着极大的作用,为开发人员提供庞大的数据用以参考和转换,在兼顾用户需求的基础上,极大地提高软件性能,必将促进软件开发行业的发展。
主要参考文献
[1]郁抒思,周水庚,关佶红.软件工程数据挖掘研究进展[J].计算机科学与探索,2012(1).
doi:10.3969/j.issn.1673 - 0194.2016.12.124
[中图分类号]TP311.13
[文献标识码]A
[文章编号]1673-0194(2016)12-0184-01
[收稿日期]2016-05-12