CN111813442A - 一种基于机器学习的软件味道检测方法 - Google Patents
一种基于机器学习的软件味道检测方法 Download PDFInfo
- Publication number
- CN111813442A CN111813442A CN202010614287.2A CN202010614287A CN111813442A CN 111813442 A CN111813442 A CN 111813442A CN 202010614287 A CN202010614287 A CN 202010614287A CN 111813442 A CN111813442 A CN 111813442A
- Authority
- CN
- China
- Prior art keywords
- software
- machine learning
- taste
- detection method
- measurement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于机器学习的软件味道检测方法,包括:确定待重构软件参与机器学习的软件代码味道类型;步骤2、通过软件历史仓库抽取相应的相关软件模块,作为机器学习数据训练的源头;步骤3、选取软件度量指标,并进行标记;步骤4、针对不同度量属性进行软件模块度量并标记结果形成分类器;步骤5、待重构的新的软件模块选取步骤3中相应的软件度量指标,进行软件度量后并进行数据预处理;步骤6、采用机器学习算法选取模型评价指标,并输出软件味道分类结果,为软件代码重构提供依据和定位。本发明结合机器学习和软件味道检测技术,形成了基于机器学习的软件味道检测方法,有助于高效、自动识别软件重构点,提高软件维护重构开发的效率。
Description
技术领域
本发明属于计算机软件技术领域,尤其涉及一种基于机器学习的软件味道检测方法。
背景技术
软件维护是一项在软件产品交付后能够提高其执行效率以及可理解性和可维护性的活动,是在不改变代码外在行为的前提下,对代码做出修改,以改善程序的内部结构。在对一个软件模块实施重构活动之前首先需要确定需要重构的代码模块具体在什么位置,即软件重构点定位。
软件重构点定位是维护活动首先需要解决的问题,定位的质量直接影响后续的重构效果。将重构点称之为“坏味道”(Bad smell)。通过软件味道倾向性检测,有助于确定软件重构点位置。
实际工程应用中的复杂软件系统,其重构点数量庞大且类型繁多。依靠人工进行重构点识别分析困难重重,考虑到机器学习在数据分析与挖掘、模式识别等领域的优势,形成基于机器学习的软件味道检测方法。有助于高效、自动的进行软件味道倾向性检测,为软件重构点的确定奠定基础。
发明内容
为了解决上述问题,本发明提出一种基于机器学习的软件味道检测方法,。
一种基于机器学习的软件味道检测方法,包括以下步骤:
步骤1、确定待重构软件代码,选取所述待重构软件参与机器学习的软件代码味道类型;
步骤2、依据待重构软件模块特性,通过软件历史仓库抽取相应的相关软件模块,作为机器学习数据训练的源头;
步骤3、确定抽取的软件模块后,依据软件模块本身特性,选取软件度量指标,并进行标记;
步骤4、确定软件度量指标后,针对不同度量属性进行软件模块度量并标记结果形成分类器:具有代码味道或者不具备代码味道;
步骤5、待重构的新的软件模块选取步骤3中相应的软件度量指标,进行软件度量后并进行数据预处理;
步骤6、使用步骤5中数据预处理后结果,结合步骤4中的分类器,采用机器学习算法选取模型评价指标,并输出软件味道分类结果,为软件代码重构提供依据和定位。
优选的,所述代码味道类型包括但不限于Data class(数据类)、Large class(大类)、Feature envy(相恋情节)、Long method(长函数)。
优选的,所述软件度量指标包括但不限于复杂度、内聚、规模、耦合度。
优选的,所述待重构软件的模块特性分为文件、包、类和函数。
优选的,所述预处理包括但不限于噪音移除、数据归一化、降维。
优选的,所述模型评价指标包括但不限于准确率、查全率、查准率。
本发明的有益效果:
在软件使用维护重构开发背景下,针对工程实践中大型复杂系统软件重构点定位困难问题,结合机器学习和软件味道检测技术,形成基于机器学习的软件味道检测方法,有助于高效、自动识别软件重构点,提高软件维护重构开发的效率,具有较强的工程实用性。
附图说明
图1为本发明基于机器学习的软件味道检测方法流程示意图。
具体实施方式
现结合附图对本发明作进一步详细说明:
实施例1
本实施例提供一种基于机器学习的软件味道检测方法,包括以下步骤:
步骤1、确定目标(待重构软件代码),选取参与机器学习的代码味道类型,例如Data class(数据类),Large class(大类),Feature envy(相恋情节),Long method(长函数);
步骤2、依据待重构软件模块特性,可以按照软件模块颗粒度:文件、包、类、函数,通过软件历史仓库抽取相应的相关软件模块,作为机器学习数据训练的源头;
步骤3、确定抽取的软件模块后,依据软件模块本身特性,选取合适的度量指标,例如复杂度,内聚,规模,耦合度等并进行标记。如表1所示。
表1代码味道类型及度量属性说明
步骤4、确定软件度量后,针对不同度量属性进行相应计算软件模块度量并标记结果形成分类器:具有代码味道或者不具备代码味道;
步骤5、待重构的新的程序模块选取步骤3中相应的软件度量指标,进行软件度量并视情进行数据预处理:噪音移除、数据归一化、降维等;
步骤6、使用步骤5中数据预处理后结果,结合步骤4中的分类器,采用机器学习算法选取模型评价指标:准确率、查全率、查准率等,输出软件味道分类结果。形成坏味道预测模型,并输出不同软件味道分类结果:待重构的代码具备或者不具备某种代码味道倾向,为代码重构提供依据和定位,定位于所选择的软件模块:文件、包、类、函数等。
实施例2
本实施例提供一种基于机器学习的软件味道检测方法,包括以下步骤:
步骤1中,确定目标(待重构软件代码),选取进行机器学习的代码味道类型,例如Data class(数据类),Large class(大类),Feature envy(相恋情节),Long method(长函数)。
步骤2中,以软件味道倾向性设置检测目标,由软件历史仓库中抽取程序模块。挖掘面向对象软件系统历史仓库,从中提取软件模块。软件模块的粒度按照检测的目标可分为文件、包、类和函数,有助于检测软件味道倾向并定位。
步骤3中,对抽取的程序模块进行度量并标记。其中软件模块的度量属性包括函数、类、包和项目级别,比如复杂度、内聚、规模、耦合度等。
步骤4中,将步骤3中选取的软件度量作为机器学习的特征空间,并确定相应的阈值,具形成分类器:具备某种代码味道倾向或者不具有某种代码味道倾向。
步骤5中,针对待重构的程序模块,选择步骤3中同样的软件度量指标,并计算相应的度量,构建味道检测数据集,并进行数据预处理(噪音移除、数据归一化、降维等);
步骤6中,利用步骤5中味道检测数据集,并结合步骤4中的分类器,选取相应的评价指标:准确率、查准率、查全率等,输出软件味道预测结果,为代码重构提供依据和定位。同时考虑历史数据积累,完成预测后,将待重构代码添加至历史仓库,作为数据训练的素材。
综上所述,本发明在软件使用维护重构开发背景下,针对工程实践中大型复杂系统软件重构点定位困难问题,结合机器学习和软件味道检测技术,形成基于机器学习的软件味道检测方法,有助于高效、自动识别软件重构点,提高软件维护重构开发的效率,具有较强的工程实用性。是一种将机器学习方法与软件味道检测相结合,高效、自动进行程序重构点确定的方法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种基于机器学习的软件味道检测方法,其特征在于,包括以下步骤:
步骤1、确定待重构软件代码,选取所述待重构软件参与机器学习的软件代码味道类型;
步骤2、依据待重构软件模块特性,通过软件历史仓库抽取相应的相关软件模块,作为机器学习数据训练的源头;
步骤3、确定抽取的软件模块后,依据软件模块本身特性,选取软件度量指标,并进行标记;
步骤4、确定软件度量指标后,针对不同度量属性进行软件模块度量并标记结果形成分类器:具有代码味道或者不具备代码味道;
步骤5、待重构的新的软件模块选取步骤3中相应的软件度量指标,进行软件度量后并进行数据预处理;
步骤6、使用步骤5中数据预处理后结果,结合步骤4中的分类器,采用机器学习算法选取模型评价指标,并输出软件味道分类结果,为软件代码重构提供依据和定位。
2.根据权利要求1所述的一种基于机器学习的软件味道检测方法,所述代码味道类型包括但不限于Data class(数据类)、Large class(大类)、Feature envy(相恋情节)、Longmethod(长函数)。
3.根据权利要求1所述的一种基于机器学习的软件味道检测方法,所述软件度量指标包括但不限于复杂度、内聚、规模、耦合度。
4.根据权利要求1所述的一种基于机器学习的软件味道检测方法,所述待重构软件的模块特性分为文件、包、类和函数。
5.根据权利要求1所述的一种基于机器学习的软件味道检测方法,所述预处理包括但不限于噪音移除、数据归一化、降维。
6.根据权利要求1所述的一种基于机器学习的软件味道检测方法,所述模型评价指标包括但不限于准确率、查全率、查准率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010614287.2A CN111813442A (zh) | 2020-06-30 | 2020-06-30 | 一种基于机器学习的软件味道检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010614287.2A CN111813442A (zh) | 2020-06-30 | 2020-06-30 | 一种基于机器学习的软件味道检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111813442A true CN111813442A (zh) | 2020-10-23 |
Family
ID=72856524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010614287.2A Pending CN111813442A (zh) | 2020-06-30 | 2020-06-30 | 一种基于机器学习的软件味道检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111813442A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328479A (zh) * | 2020-11-03 | 2021-02-05 | 北京理工大学 | 一种基于深度特征交互网络的上帝类代码味道检测方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107678971A (zh) * | 2017-10-19 | 2018-02-09 | 扬州大学 | 代码味道驱动的基于克隆和耦合检测的代码缺陷预测方法 |
EP3623948A1 (en) * | 2018-09-14 | 2020-03-18 | Tata Consultancy Services Limited | Method and system for code analysis to identify causes of code smells |
-
2020
- 2020-06-30 CN CN202010614287.2A patent/CN111813442A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107678971A (zh) * | 2017-10-19 | 2018-02-09 | 扬州大学 | 代码味道驱动的基于克隆和耦合检测的代码缺陷预测方法 |
EP3623948A1 (en) * | 2018-09-14 | 2020-03-18 | Tata Consultancy Services Limited | Method and system for code analysis to identify causes of code smells |
Non-Patent Citations (1)
Title |
---|
YONGFENG YIN ET AL: "Software smell detection based on machine learning and its empirical study", 《SECOND TARGET RECOGNITION AND ARTIFICIAL INTELLIGENCE SUMMIT FORUM》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328479A (zh) * | 2020-11-03 | 2021-02-05 | 北京理工大学 | 一种基于深度特征交互网络的上帝类代码味道检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103605970A (zh) | 一种基于机器学习的图纸建筑元素识别方法及系统 | |
CN105373472B (zh) | 一种基于数据库的统计准确性的测试方法及测试系统 | |
CN106293891B (zh) | 多维投资指标监督方法 | |
CN109284372A (zh) | 用户操作行为分析方法、电子装置及计算机可读存储介质 | |
CN111796957A (zh) | 基于应用日志的交易异常根因分析方法及系统 | |
CN113807418A (zh) | 一种基于高斯混合模型的注塑机能耗异常检测方法及系统 | |
CN115879017A (zh) | 一种电力敏感数据自动化分类分级方法、装置及存储介质 | |
CN111159167A (zh) | 标注质量检测装置和方法 | |
CN111813442A (zh) | 一种基于机器学习的软件味道检测方法 | |
CN113391256B (zh) | 一种现场作业终端的电能表计量故障分析方法及系统 | |
CN112163132B (zh) | 一种数据标注方法、装置、存储介质及电子设备 | |
CN115034278A (zh) | 性能指标异常检测方法、装置、电子设备和存储介质 | |
CN110287114B (zh) | 一种数据库脚本性能测试的方法及装置 | |
CN105574081B (zh) | 一种基于无回路有向图的数据溯源方法 | |
CN111581296A (zh) | 数据相关性分析方法、装置、计算机系统及可读存储介质 | |
CN113780724B (zh) | 产品质量批次稳定性量化评估判据计算方法 | |
CN116910526A (zh) | 模型训练方法、装置、通信设备及可读存储介质 | |
CN113344696B (zh) | 一种头寸预报评估方法、装置、设备及存储介质 | |
CN114579391A (zh) | 异常数据的检测方法、系统、介质及终端 | |
CN112732549A (zh) | 基于聚类分析的测试程序分类方法 | |
CN116551466B (zh) | Cnc加工过程中的智能监控系统及其方法 | |
CN111913872A (zh) | 一种基于缺陷预测的软件静态检查警告排序优化方法 | |
CN112529038B (zh) | 一种主板物料的识别方法、装置及存储介质 | |
CN112765011B (zh) | 质控状态判定方法、装置及电子设备 | |
CN117909333A (zh) | 基于大数据结合人工智能实现数据的筛选方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201023 |