CN103985003A - 一种支持软件工程质量自动监控的新方法及其装置 - Google Patents
一种支持软件工程质量自动监控的新方法及其装置 Download PDFInfo
- Publication number
- CN103985003A CN103985003A CN201310736877.2A CN201310736877A CN103985003A CN 103985003 A CN103985003 A CN 103985003A CN 201310736877 A CN201310736877 A CN 201310736877A CN 103985003 A CN103985003 A CN 103985003A
- Authority
- CN
- China
- Prior art keywords
- quality
- code
- monitoring
- analysis
- detection
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种支持软件工程质量自动监测的新方法。该方法包括:直接连接待监控的软件工程源代码的SVN,读取版本信息并进行核对;提取其源代码的结构和功能进行必要的分析,并在代码层面进行全面的检查;展示代码质量的变化以及对开发者每次犯错时的预报错;经过质量分析,还会给开发者反馈一个关于如何提高代码质量的说明。这4个步骤在系统中由多个模块并行处理,同时运行,并且不停的运转从而达到无人参与下的系统自动监测。通过本发明解决了现有技术中存在的不能及时、自动地实现软件质量监控的问题。
Description
技术领域
本发明涉及代码审核领域,涉及一种软件工程质量自动监控的新方法
背景技术
面向对象的大型软件系统在我们的社会现在无孔不入,他们在我们的日常生活中发挥了至关重要的作用,也越来越多,越来越复杂。因此,它们的质量如何具有重大意义。此外,外包开发和维护需要的衡量质量的手段很详细,并正在演变成为目前的趋势。因为代码在地理上分散开发,整个系统在开发中,通常有一个有限的认识,当改变部分代码时,无效的原始设计的系统会导致设计效率降低,因此负面影响总体系统的质量。
随着项目经验的累积,后期维护的成本将越来越被重视。而开发过程中的代码质量直接影响着维护的成本。规范的代码会大大提高程序的可读性,可读性高的代码维护成本必然会大大降低。
但是,维护工作不仅仅是读懂原有代码,而是需要在原有代码基础上作出修改。统一的风格有利于长期的维护。另外,好的代码规范会对方法的度量、类的度量以及程序耦合性作出约束。这样不会出现需要修改一个上千行的方法或者去扩展一个没有接口的类的情况。规范的代码对程序的扩展性提高,亦能减少维护人员无谓的工作量。
代码规范比比皆是,但是很少有真正做到做好代码规范。相比于国外的项目,国内的软件质量是有很大差距。从代码审查的角度来看,这样可以及时纠正一些错误,而且可以对开发人员的代码规范作出监督。团队的代码审查同时也是一个很好的学习机会,对成员的进步也很有益。但是开发随意,加重的代码审查的工作量及难度,并且使得代码审查工作没有根据,浪费了大量的时间却收效甚微。代码规范不仅使得开发统一,减少审查拿督,而且让代码审查有 据可查,大大提高了审查效率和效果,同时代码审查也有助于代码规范的实施。
因此,一个能够监控系统的部分的质量开发工作,并提供快速的反馈,以控制和提高质量的系统是必不可少的。像Pfleeger一类的许多软件工程倾向于更多的时间花在与正在系统开发中的每个人沟通,因为做同一件工作的人需要知道他们这一块如何融入整个架构。尽早检测代码中的缺陷以降低软件开发成本非常重要。
开源社区已经提出的一些质量评估工具,如Sonar、Squale,是最成熟的项目。Sonar使用各种静态代码分析工具,例如使用CheckStyle,PMD,FindBugs以及Clover来提取软件质量评估指标并使用这些可视化工具来提供质量检测的信息及结果。Squale实现了根据现有的标准质量模式的检测,如ISO/IEC9126,McCall并使用天气作为比喻来反映系统的质量。虽然这些工具可以适用于系统并评估他们的质量,但他们不能提供连续化的质量评价手段。此外,相比于SQUANER可以便利的直接访问源代码SVN库,Solar和Squale需要事先培训一些开发者和质量管理人员使用相应的工具才能充分发挥作用,这无疑是复杂且麻烦的。
这里,我们提出SQUANER(软件质量分析系统),一个针对面向对象的软件工程的质量监测系统。SQUANER的贡献与其他的质量评价工具,如Squale和Sonar比较,它的优点是持续评估正在开发的系统,还有它依据特殊技术的独立性,类似Maven:它直接连接到SVN的系统,提取源代码,以设计模式,反模式执行代码嗅探等功能,进行质量评估和故障预测,并每次由开发人员提交。质量分析后,会给开发人员提供反馈,说明如何提高自己的代码。与Sonar相反,SQUANER是不依赖Maven的,甚至可以扩展分析Maven项目。
凭借其专注于早期的缺陷检测和质量评估,SQUANER将有助于减少大量系统的预算,并节省开发时间。在分布式的开发方案中,SQUANER提供开发系统中的所有部分开发人员这个技术,从而返回一个基于整体的反馈;这样可以提高对系统整体的认知,并实现有效的质量控制。
有了SQUANER,社会将会从这个进化研究的新工具中受益。其持续的质量评估设计模式和设计的代码嗅探会提供可能进行的有趣的研究,如:分析系统衰变,质量分析工具的有效性,或他们对开发商的行为和软件开发的影响的算法。
发明内容
本发明实施例提供的一种支持软件工程质量自动监测的新方法,用以解决现有技术存在的现有技术中存在的不能及时、自动地监测软件工程质量的问题。
一种支持软件工程质量自动监测的新方法包括:
该方法从逻辑上划分为业务管理层和数据处理层。业务层(即前台管理端)和SVN直连,用web网页界面展示功能设置与选项,提供监控模式选择等功能;支撑层(即后台数据端)负责核心的逻辑处理,服务器与SVN并行,读取其数据并按前台设置进行处理。具体的监控方式有嗅探检测与模式匹配检测,而数据处理采用并行计算的处理方式。
支撑层只负责支撑业务层各功能模块的运作,由业务层与SVN连接,承担各种正常业务,同时也负责代码分析、修复建议的功能。后台数据库的分析和处理模块以某种分工协作的机制,完成上述功能。
SQUANER是一个分层构建的框架。每个开发者上传到SVN仓库后,SQUANER自动检测的新变化并下载新的代码。然后通过执行所描述的各组成部分,对此源代码进行一系列分析。SQUANER会根据由开发者或者质量管理系统预先设置的配置进行分析。配置包括选择检测目标,质量模型,分析所占检测比例和分析频率,以及设计模式和设计缺陷。业务层和SVN直连,用web网页界面展示功能设置与选项,提供监控模式选择等功能;支撑层负责核心的逻辑处理,服务器与SVN并行,读取其数据并按前台设置进行处理。不仅在前端展示结果,还能以电子邮件的形式将关于软件代码质量的评论和建议发给开发者或者质量分析人员。
附图说明
图1为该系统的分析模块功能示意图;
图2为该系统的体系结构示意图;
图3为产生质量反馈的电子邮件的示例图;
图4为系统业务端可视化web界面示意图;
具体实施方式
前文已经论述,一个能够监控系统的部分的质量开发工作,并提供快速的反馈,以控制和提高质量的系统是必不可少的。针对现有技术存在的现有技术中存在的不能系统化、实时化的实现软件工程质量监测的问题,本发明实施构建一个可靠有效的方法支撑代码分析环境,作为支撑层。在此支撑平台之上,创造出一个功能展示与交互界面,作为业务层。
支撑层只负责支撑业务层各功能模块的运作,由业务层与SVN连接,承担各种正常业务,同时也负责代码分析、修复建议的功能。后台数据库的分析和处理模块以某种分工协作的机制,完成上述功能。
SQUANER是一个分层构建的框架。图1描述了SQUANER的分析功能模块,图2给出了一个概述SQUANER的体系结构.
一旦向SVN提交一个项目,源代码会检查PADL的创造者用于建立一个PADL的系统模型的解析器。PADL的创造者是根据PADL的元模型,并根据C#,C++和Java的解析器建造的。度量值的计算是通过这个模型中的系统与POM组件来实行的。POM提供超过60种不同的度量文学类方法的框架,包括进口和出口耦合;对象之间的耦合(CBO)和加权方法计数(WMC);缺乏凝聚的方法(LCOM5);“C”一类的连通性;新的数字继承和覆盖方法和计算总数的方法;循环的clomatic复杂度公制(CC);分层数低于一类和叶类深度水平。
模式检测模块负责设计模式检测。这个组件是基于由gueheneuc和Antoniol实现了检测方法DeMIMA并且由Kaczor等人实施的PTIDEJ,结合这些方法,PTIDEJ能够探测到所有既有的设计模型。
嗅探模块是负责反模式和代码嗅探。该组件由摸哈等人实现了DECOR(修正缺陷检测),以此来指定和识别反模式和代码嗅探。DECOR是一种基于检测方法的基础上,在整个域间通过文字分析代码嗅探和反模式的;在其上的分析是基于域的特定语言。DECOR能够检测到后续的反模式,这些反模式是代表设计和实施的概率数据的复杂性、大小、以及由类提供的特性。
SQUANER模型组件考虑系统的历史的一个超模型作为一个明确实体,类似于Hismo。这个超模型建造在我们的现有超模型PADL上的信息的描述结构。SQUANER模型也可以分析专家项目,因此能集成和提供声纳模块。
Qmood组件由Bansiya和戴维斯实现质量模型QMOOD。QMOOD由六个方程建立六个面向对象的设计质量特性(可重用性,灵活性,可理解性,功能性,扩展性,和有效性)和确定其中的面向对象的结构设计特性:封装,耦合,多态性,数据之间的关系抽象和层次结构。QMOOD是在目前研究中最常用和最有参考价值的模型之一。
Pqmod由Khomh Gu′eh′eneuc实现质量的模型PQMOD。这个质量模型是由7个系统的质量评价规则,考虑到他们的设计。这些规则被定义为在运行时的可扩展性,通用性,模块化,模块化,可理解性,可重用性,可扩展性。
Squad组件实现两个BBNs,模型考虑其量值进行预测的系统故障类来设计其嗅探和设计模式。
该方法具体场景描述如下:
每个开发者上传到SVN仓库后,SQUANER自动检测的新变化并下载新的代码。然后通过执行所描述的各组成部分,对此源代码进行一系列分析。SQUANER会根据由开发者或者质量管理系统预先设置的配置进行分析。配置包括选择检测目标,质量模型,分析所占检测比例和分析频率,以及设计 模式和设计缺陷。
系统分析后,会把结果进行总结并以电子邮件的形式发送给开发团队,并将危险的类和提供关于如何提高代码的咨询意见的部分高亮。通过这些电子邮件,开发者可以对代码相比上一个版本的变化有个整体的概念。此外,整个开发团队会知道对系统的整体质量有影响的到底是什么。所有的分析结果都被存储在SQUANER数据库,监测软件质量的变化过程。
SQUANER提供两种方式来访问数据库里的信息:一是通过系统提供的Web界面,开发人员和质量分析人员可以通过浏览可视化系统来了解不同质量特性的详细数据。第二,开发者和质量分析人员可以使用Web服务计划定期自动执行质量评估或访问存储在数据库中的质量系统信息。他们还可以使用Web服务把对代码修改行为的建议或评论作为反馈发送给其他开发人员,例如,当他们找出问题却因为他们不适合他们的技能和知识而解决不了。
综上所述,在本文中,我们提出了SQUANER:一个针对面向对象的软件工程的质量监测系统。SQUANER直接连接到一个系统的SVN,提取源代码,执行设计模式、逆向模式和代码嗅探检测模式的监测,对开发人员每一次的更新代码和上传都进行质量评估和故障预测。经过质量分析,SQUANER反馈提供给开发人员的关于如何提高代码质量的提示。有了SQUANER,开发者和质量分析人员还可以使用Web服务安排定期自动质量评估,对通过访问存储在数据库的系统质量信息对一些代码的变化行为给出建议或评论,并作为反馈发送给其他开发者。,在SQUANER的帮助下,软件开发可大大节省人力,解决了现有技术中存在的不能系统化、自动化地实现软件工程质量监测的问题。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (7)
1.一种支持软件工程质量自动监测的新方法,其特征在于,该方法包括:
提供了一种在源代码层面实时监控软件工程质量的方法,该系统从逻辑上划分为业务管理层和数据处理层:
业务层(即前台管理端)和SVN直连,用web网页界面展示功能设置与选项,提供监控模式选择等功能;
支撑层(即后台数据端)负责核心的逻辑处理,服务器与SVN并行,读取其数据并按前台设置进行处理。具体的监控方式有嗅探检测与模式匹配检测,而数据监测处理采用并行计算的处理方式。
2.如权利要求1所述的方法,其特征在于,所述业务层的处理方法,具体包括:
业务层节点主要分为采集节点与决策结点;
根据采集到的源代码特征信息确定所述的决策结点做出处理方法。
3.如权利要求1所述的方法,其特征在于,进行代码检测和代码分析的方法,包括特征采集、分析决策、指令执行的流程,以及决策选择、个性化配置的方法。
4.如权利要求1所述的方法,其特征在于,支撑层对代码质量的监控机制建立在国际标准上,模式检测的组件是基于由gueheneuc和Antoniol实现的检测方法DeMIMA,并且由Kaczor等人实施的PTIDEJ。
5.如权利要求1所述的方法,其特征在于,代码分析模块的具体方法是:
把代码分析配置成几个模块,可以从发现原理、检测手段等角度选择性处理,从而提高处理效率,而且更有针对性。
支撑层的监测模式分为两模块:一是嗅探模式,负责反模式和代码嗅探。该组件由摸哈等人实现了DECOR(修正缺陷检测),以此来指定和识别反模式和代码嗅探;二是Qmood模式(由Bansiya和戴维斯实现质量模型QMOOD)。QMOOD由六个方程建立的六个面向对象的设计,由质量特性确定其中的面向对象的结构设计特性。
6.一种支持软件工程质量自动监测的新方法,其特征在于,该方法包括:
业务层模块,用于运行着各种应用,例如Web界面展示、使用配置、功能模式选择。支撑层模块,具体的监控方式有嗅探检测与模式匹配检测,数据监测处理采用并行计算的处理方式。
7.如权利要求6所述的方法,其特征在于,所述支持软件工程质量自动监测的方法还包括:
支撑层模块提供两种方式来访问数据库里的信息:一是通过系统提供的Web界面,开发人员和质量分析人员可以通过浏览可视化系统来了解不同质量特性的详细数据。第二,开发者和质量分析人员可以使用Web服务计划定期自动执行质量评估或访问存储在数据库中的质量系统信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310736877.2A CN103985003A (zh) | 2013-12-25 | 2013-12-25 | 一种支持软件工程质量自动监控的新方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310736877.2A CN103985003A (zh) | 2013-12-25 | 2013-12-25 | 一种支持软件工程质量自动监控的新方法及其装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103985003A true CN103985003A (zh) | 2014-08-13 |
Family
ID=51276964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310736877.2A Pending CN103985003A (zh) | 2013-12-25 | 2013-12-25 | 一种支持软件工程质量自动监控的新方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103985003A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159831A (zh) * | 2015-08-31 | 2015-12-16 | 浪潮集团有限公司 | 一种软件代码质量自动监控方法 |
CN107357559A (zh) * | 2016-05-10 | 2017-11-17 | 北京京东尚科信息技术有限公司 | 远端执行服务器的信息控制方法和装置 |
CN111240721A (zh) * | 2020-04-26 | 2020-06-05 | 北京全路通信信号研究设计院集团有限公司 | 一种高速铁路设备软件版本监控方法及系统 |
CN111309369A (zh) * | 2018-12-12 | 2020-06-19 | 北京奇虎科技有限公司 | 基于Git代码仓库的代码管理方法及装置 |
CN112698836A (zh) * | 2021-01-18 | 2021-04-23 | 昆明理工大学 | 一种针对复杂用户评论的代码质量属性判断方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102035892A (zh) * | 2010-12-23 | 2011-04-27 | 中科方德软件有限公司 | 操作系统版本自动发布和软件包自动更新的系统及方法 |
CN103309804A (zh) * | 2013-04-08 | 2013-09-18 | 中国电子科技集团公司第十研究所 | 自动化代码规则检查平台 |
-
2013
- 2013-12-25 CN CN201310736877.2A patent/CN103985003A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102035892A (zh) * | 2010-12-23 | 2011-04-27 | 中科方德软件有限公司 | 操作系统版本自动发布和软件包自动更新的系统及方法 |
CN103309804A (zh) * | 2013-04-08 | 2013-09-18 | 中国电子科技集团公司第十研究所 | 自动化代码规则检查平台 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159831A (zh) * | 2015-08-31 | 2015-12-16 | 浪潮集团有限公司 | 一种软件代码质量自动监控方法 |
CN107357559A (zh) * | 2016-05-10 | 2017-11-17 | 北京京东尚科信息技术有限公司 | 远端执行服务器的信息控制方法和装置 |
CN107357559B (zh) * | 2016-05-10 | 2021-05-25 | 北京京东尚科信息技术有限公司 | 远端执行服务器的信息控制方法和装置 |
CN111309369A (zh) * | 2018-12-12 | 2020-06-19 | 北京奇虎科技有限公司 | 基于Git代码仓库的代码管理方法及装置 |
CN111309369B (zh) * | 2018-12-12 | 2024-03-29 | 北京奇虎科技有限公司 | 基于Git代码仓库的代码管理方法及装置 |
CN111240721A (zh) * | 2020-04-26 | 2020-06-05 | 北京全路通信信号研究设计院集团有限公司 | 一种高速铁路设备软件版本监控方法及系统 |
CN111240721B (zh) * | 2020-04-26 | 2020-09-08 | 北京全路通信信号研究设计院集团有限公司 | 一种高速铁路设备软件版本监控方法及系统 |
CN112698836A (zh) * | 2021-01-18 | 2021-04-23 | 昆明理工大学 | 一种针对复杂用户评论的代码质量属性判断方法 |
CN112698836B (zh) * | 2021-01-18 | 2022-05-17 | 昆明理工大学 | 一种针对复杂用户评论的代码质量属性判断方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10423403B1 (en) | Utilizing a machine learning model to predict metrics for an application development process | |
CN103310083B (zh) | 一种传染病聚集性探测与早期预警系统 | |
JP6538980B2 (ja) | 異種混成ログストリームにおける自動化された異常検出サービス | |
Ampatzoglou et al. | The effect of GoF design patterns on stability: a case study | |
CN103985003A (zh) | 一种支持软件工程质量自动监控的新方法及其装置 | |
US11907184B1 (en) | Collaborative data mapping system | |
CN116882038B (zh) | 一种基于bim技术的机电施工方法及系统 | |
Ren et al. | Semantic rule-based construction procedural information extraction to guide jobsite sensing and monitoring | |
CN103810493A (zh) | 识别数学公式的方法和设备 | |
CN114282752A (zh) | 流程任务的生成方法、装置、电子设备及存储介质 | |
Mancebo et al. | A process for analysing the energy efficiency of software | |
Saad et al. | Trends in BIM-based plugins development for construction activities: a systematic review | |
CN103955429B (zh) | 确定回归测试范围的方法及装置 | |
CN114997263B (zh) | 基于机器学习的结训率分析方法、装置、设备及存储介质 | |
CN113139743A (zh) | 污水排放指标分析方法、装置、电子设备及存储介质 | |
CN111985545A (zh) | 基于人工智能的目标数据检测方法、装置、设备及介质 | |
JP2017068293A (ja) | テストdbデータ生成方法及び装置 | |
Pan et al. | Class structure refactoring of object-oriented softwares using community detection in dependency networks | |
CN112052310A (zh) | 基于大数据的信息获取方法、装置、设备及存储介质 | |
CN112148566A (zh) | 计算引擎的监控方法、装置、电子设备及存储介质 | |
US20160209908A1 (en) | Cloud-based integrated system for developing and evaluating energy efficient software | |
CN113127460A (zh) | 数据清洗框架的评估方法及其装置、设备及存储介质 | |
CN114936111A (zh) | 前端变量异常检测及修复方法、装置、设备及存储介质 | |
CN109947466A (zh) | 一种逆向获取ue4全局对象表的方法及其装置 | |
CN114201328A (zh) | 基于人工智能的故障处理方法、装置、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140813 |
|
WD01 | Invention patent application deemed withdrawn after publication |