面向软件开发信息库的数据挖掘综述
随着科学技术的发展,计算机信息技术在当下得到了较为广泛地应用,相应地,软件开发技术也得到了较大的发展。软件开发信息库的数据挖掘技术,成为当下软件开发的一个重要环节,其可以更好地促进软件性能提升,满足人们的实际需求。软件开发过程中,软件开发组织构成了软件开发信息库,实现了资源共享,可以将相关技术手段进行广泛传播。这样一来,软件开发技术将得到极大程度的提升。文章对面向软件开发信息库的数据挖掘的研究,将从软件开发信息库的数据获取、软件发展、应用以及软件开发过程中存在的问题等几个方面对这一问题进行探讨和分析,为软件开发信息库的数据挖掘技术提供一些参考和建议,以期促进这一技术的发展和进步。
数据挖掘,即Data mining,是在海量数据信息中提取有效信息,满足人们实际需要的一种技术手段,该技术手段随着社会经济的发展以及科学技术的应用,得到了较大的发展和进步。软件工程数据挖掘,即Data minging for software engineering侧重于软件信息挖掘领域,是对软件信息进行资源共享的一种技术手段,该手段的关键领域在于对软件技术的研究和应用。软件开发信息库的数据挖掘,注重于数据挖掘、人工智能、模式识别等领域的研究,这三大领域又是软件实现智能化、高科技化的关键。软件开发信息库的数据挖掘,近几年来,以ICSE(International Conference on software engineering)会议提出的相关数据挖掘信息为研究对象,分析了软件数据信息库在软件开发过程中的重要作用。文章在对软件开发信息库的数据挖掘技术分析过程中,探讨了数据挖掘技术在软件工程领域的重要作用,以及数据挖掘与软件开发之间的密切联系,注重对软件开发特色的分析以及数据挖掘作用的阐述,突出了数据挖掘在软件开发算法选择过程中的重要作用。
1 软件开发信息库数据挖掘的基本概念与面临的挑战
1.1 软件开发信息库
软件开发信息库主要是指软件开发过程中的相关数据总和,体现出了“数据化”这一特征。关于软件开发信息库的具体内容,我们可以从以下几点看出:
(1)项目开发过程中的“项目数据”,包括了项目开发的过程、细化的任务以及相关资源信息等。“项目数据”是软件开发的关键环节和基础环节,是后续开发的起点。“项目数据”的有效记载和日后的有效分析,将直接影响到软件开发的最终性能。
(2)源代码数据。源代码数据是软件程序执行的关键,主要包括了“项目”开发的源代码以及软件版本升级和修改过程中的代码。
(3)项目开发的相关文档信息。软件项目开发过程中,需要的文档信息主要包括了需求文档、测试文档、设计文档等,这些文档能够为软件开发提供相应的数据支撑,确保软件开发的目标得以实现。
(4)项目开发的历史信息。这一部分包括了E-mail存档、论坛交流的历史记录等。
(5)软件存在缺陷的信息。软件缺陷信息是软件开发信息库中的一个重要组成部分,同时,这一部分也是完善软件相关信息,提升软件整体性能的关键。软件缺陷跟踪信息,在后续的软件修改和维护过程中,具有指导性意义。
软件开发信息库是软件开发的重要组成部分,其对数据信息进行有效存储。一般来说,软件开发信息库在数据存储过程中,会根据信息的不同分类,有针对性地进行信息存储。
(1)软件配置管理系统。该系统是软件开发中的一个重要组成部分,英文表示为“sofware configuration management system”,即“SCMS”,也就是版本控制系统。SCMS关系到了软件开发过程中的源代码数据信息控制,可以保证项目开发的相关文档能够进行有效存储,并对相关历史信息进行有效存档。应用于软件配置管理系统的软件系统主要有:CVS、SVN等。
(2)Defect tracking system,即“缺陷跟踪系统”,该系统是软件进行修改的主要依据,其在软件开发过程中,最主要的功能就是软件缺陷报告。目前来看,在进行软件开发过程中,利用缺陷跟踪系统,可以对软件开发过程中存在的问题进行有效分析,并采取有针对性的措施进行解决,保证软件开发的可靠性和质量性。在应用中,以“Bugzilla”系统为主。
(3)Project management system,即“项目管理系统”,该系统在软件开发过程中,具有着重要地位,并且在实际应用过程中,发挥着重要作用。项目管理系统主要保证了软件开发的项目计划、资源分配、程序执行,能够按照相关要求进行,更好地提升软件开发的效率。在实际应用过程中,例如微软的Project软件,就是利用了项目管理系统实现了对软件计划、资源分配的有效安排,提升了软件开发的效率,并降低了软件开发的成本。
1.2 数据挖掘
数据挖掘,即是利用数据库内的相关信息,更好地满足人们的实际需要。数据挖掘,又称数据库中的知识发现,是从一个巨大的数据信息库中,对一些关键性知识的发掘,从而更好地解决实现问题。关于数据挖掘的内容,我们可以从图1看出。
图1 数据挖掘过程
如图1所示,我们可以看出,数据挖掘的步骤主要包括了以下几个步骤:
(1)数据抽取。数据挖掘中的数据抽取,主要是以人们的实际需要为主,即在大的数据信息库中提取有效信息,这些信息可以为人们的实践活动提供有效指导,保证人们能够对相关问题进行有效解决。数据提取过程中,需要对数据信息内容以及来源进行把握,同时也需要对数据类型和相关结构进行有效分析,这样一来,才能够保证数据信息得到更好地应用;
(2)数据预处理。数据预处理主要是根据提取的相关数据信息,根据实际需要,对数据进行有效处理,将一些不必要的信息进行有效剔除,使留下的信息能够更好地指导实践活动;
(3)知识发现。知识发现是数据挖掘的一个关键环节,同时,这一步骤也是数据信息得到有效应用的关键。知识发现主要是发现知识数据中,一些潜在的、未知的、有用的信息,将这些信息能够提炼出来,更好地在实践中进行运用;
(4)知识表示。知识表示是数据挖掘技术的最后阶段,也就是理论应用于实践中的一个表现。随着大数据挖掘技术的发展和进步,知识表现的形式呈现一种多样化的发展特征,通过关键规则,可以对知识进行开拓性的处理,使知识得到更好地应用。
综上所述,我们不难看出,数据挖掘技术在软件开发信息库中的应用,主要分为四个步骤,即数据抽取、数据预处理、知识发现以及知识表示。数据挖掘技术与软件开发信息库有着密切的关联性,软件开发信息库实现了信息资源的共享,是数据挖掘的基础和前提,同样地,数据挖掘也在很大程度上促进了软件开发的发展和进步,二者之间,存在着一种相辅相成的关系。
1.3 软件工程数据挖掘面临的挑战
软件工程数据挖掘面临的挑战,是影响软件开发的主要因素,在实际发展过程中,如何有效应对这一挑战,更好地促进软件开发技术的发展和进步,成为当下软件开发面临的一个重要议题。
(1)数据信息复杂化。随着科学技术的发展,人们对高性能软件有着更加迫切的需求,这样一来,数据信息复杂化特征,成为当下软件开发和数据挖掘面临的一个主要问题。数据信息复杂化,主要包括了代码、注释、文档的复杂化,三者之间在应用过程中,对算法选择上,有着较大的差别,并且对算法的要求,表现出一种“苛刻”的特点。
(2)分析形式的变化。随着电子商务时代的到来,软件开发过程中,面临着更大的挑战,对相关数据的分析,也变得更加复杂和困难。数据挖掘的最终步骤是将知识提交给用户,而在数据信息提交完成后,如何对图表、文字信息进行分析,如何对其作出有效评价,将成为一个较大的难题。
(3)数据挖掘的效果评价。数据挖掘技术在应用过程中,形成了一定的结果表示和评价体系,但是面临着新的发展形势,传统的效果评价呈现出一种滞后性,无法在当下得到有效应用。这样一来,效果评价成为当下探究的热门议题。
2 软件开发信息库的数据挖掘综述
2.1 软件开发信息库的数据获取
软件开发信息库的数据获取,是数据挖掘的前提和基础,一般来说,软件开发信息库的数据来源,主要包括了以下几点:
(1)软件开发商自身建立了软件开发信息库。软件开发商在进行软件开发过程中,势必会对自身对软件信息的研究进行有效地总结,并将这些信息进行存储,为日后的发展提供有效依据;
(2)软件开发机构对软件信息的存储。一些权威机构为了更好地促进软件开发技术的发展,会将一些研究成果进行信息存储,并且对相关技术进行信息共享,更好地促进软件开发技术的发展和进步;
(3)自由软件的软件开发数据。自由软件的软件开发数据是最容易获得的软件开发信息,是研究项目的主要数据来源之一。关于自由软件的软件开发数据,最具代表性的则是Source Forge提供的软件开发数据,包括了源代码、缺陷数据以及相关交流信息等。
软件开发信息库获取了相关数据信息后,会根据软件开发的实际需要,对一些重要的软件信息进行有效提取,这一提取过程,是软件开发数据库形成的关键环节。一般来说,在进行数据库信息抽取时,主要包括了源代码、项目数据信息、缺陷数据信息的提取。关于软件开发信息库问题的处理,CVS系统在应用过程中,具有代表性意义。CVS管理系统在应用过程中,注重对相关信息的结构转化,将相关信息进行有效提取,并能够对其进行有效保存,更好地满足实际需要。
2.2 软件开发信息库数据的预处理
面向软件开发信息的数据挖掘技术应用,对数据库内的信息进行预处理是一个关键环节,在上文中,我们对这一问题也进行了相关阐述。接下来,我们将对这一问题进行具体的研究和分析。一般来说,软件开发信息库数据的预处理,主要包括了以下内容:
(1)对配置系统进行有效管理。配置系统的数据信息处理,主要是对一些无效信息进行去除,并将重要信息和所需要的信息进行提取,并对其进行有效性分析,将提取的信息进行存储,以便更好地进行应用;
(2)对缺陷数据进行处理。缺陷数据的处理,注重对缺失属性值的分析,包括了类别、状态、级别等相关缺陷的有效分析。缺陷数据的处理,还包括了对一些缺失信息的处理,对数据的属性值进行有效地补充;
(3)项目过程数据中存在一定的噪声数据的处理。项目过程数据中的噪声污染,将会对软件的整体性能产生主要的影响,“除噪”步骤必不可少。噪声去除过程中,主要是为了更好地保证软件开发的可靠性和稳定性,可采取分箱、聚类以及回归分析的方式对这一问题进行解决。
2.3 软件的演进分析
软件演进分析是软件开发信息数据挖掘的一个重要环节,在实际应用过程中,要对软件的代码演进进行有效分析。关于软件代码演进分析,较为常用的方法则是对程序语义进行有效分析,并且对软件的具体结构进行考虑,包括了方法、类型定义以及相关变量等内容。关于软件的演进分析,较为代表性的有n和采用的语义分析方法,可以对内容变量和外部变量的变化进行有效分析,并能够对相关信息进行正确识别。除此之外,M.W Godfrey等人则针对于开源软件的演进过程中进行了分析,验证了软件演进法则。文章对软件的演进分析,则基于软件静态程序进行了相关分析。
在分析过程中,由于软件开发过程中的架构演进较难控制,我们需要在开发过程中,对软件源代码进行有效设计,并对源代码的修改进行慎重考虑,对其架构演进情况进行合理把握。在分析时,可采用Zinmer mann提出的“关联规则”方法,对演进过程中的模块关系进行合理、有效把握。
2.4 软件缺陷分析和动态建模方法
面向软件开发信息库的数据挖掘技术中,软件缺陷分析和动态建模方法,是数据挖掘必须注意的一个重要议题。
2.4.1 软件缺陷分析
软件缺陷分析主要是根据实际情况,对不同属性的软件缺陷情况进行研究和分析,包括了决策树、回归分析以及神经网络等三种方法。其中,Patrick Knab等人,则应用了决策树方法对软件缺陷问题进行了分析。Patrick Knab等人分析的方面在于源代码缺陷密度问题,对代码行数、源代码密度选择问题展开了研究,为源代码的选用,提供了有效依据。而针对于软件缺陷数据和缺陷位置的研究,则主要以二项回归模型方法为主,能够对软件缺陷数据进行有效分析和统计。
2.4.2 动态建模方法
软件开发信息库的数据挖掘技术中,动态建模方法应用,能够更好地对软件开发过程中的事件动态关系进行有效把握。关于这一问题的研究,具有代表性的是和A lexander 在上个世纪末提出的语义推论方法,并应用神经网络算法建立动态模型,更好地实现了对软件事件的动态监控。同时,该方法在应用过程中,能够利用动态建模方法,为用户提供一个有效的软件开发过程中,并且这一过程的提出,主要基于历史事件的关联分析基础上。
3 结束语
综上所述,我们可以看出,软件开发数据在软件开发中将发挥着日益重要的作用。这样一来,把握软件开发信息库数据挖掘技术的应用,使其在软件开发过程中发挥应有作用,成为当下软件开发过程中必须把握的一个重要议题。同时,数据挖掘技术在软件开发信息库中的应用,对未来软件开发领域,也将产生更为积极的作用。
作者:张惟慎 来源:科技创新与应用 2016年7期
上一篇:计算机软件开发中的分层技术运用