研究文章|开放获取
斯坦尼斯拉夫•彼得•Strečansky Chren,布鲁诺罗西, ”可维护性指数相比,团体法,SQALE技术债务识别”,科学的规划, 卷。2020年, 文章的ID2976564, 14 页面, 2020年。 https://doi.org/10.1155/2020/2976564
可维护性指数相比,团体法,SQALE技术债务识别
文摘
有许多的定义,提出了软件技术债务(TD)。虽然很多技术来测量TD出现在最近一段时间,仍然有不清楚地了解如何应用于软件项目时不同的技术比较。本文的目的是阐明这个方面,通过比较三种技术对TD识别,提出了随着时间的推移:(i)可维护性指数(MI),(2)团体TD模型,和(3)SQALE分析。考虑到20开源Python库,我们比较TD测量时间序列的进化趋势和根据不同的版本(大、小和微),看看从业者对TD进化的看法可能会受到影响。虽然所有方法报告一般TD的趋势不断发展,有不同的模式。SQALE报告更稳定状态的时期相比,心肌梗死和团体道明。MI是TD的报道更多的还款方法比其他方法。团体TD和心肌梗死的模型显示更多相似的方式TD发展,而SQALE和MI更相似。每个方法的影响是让稍微不同的看法TD进化。
1。介绍
技术债务(TD)是1993年由Ward Cunningham引入隐喻(1]。坎宁安比较差劲的决定和快捷键在软件开发经济债务。尽管这些决定可以帮助在短期内,如加快发展或释放过程中,有一个不可避免的成本,必须支付方面的长期重建和复杂性增加新功能的实现,更不用说可能的缺陷和失败。
这个比喻的基础,然而,是塑造了在80年代,当时雷曼兄弟介绍软件进化的规律(2]。第二定律指出:“随着系统的发展,其复杂性增加,除非工作完成维持或减少它”。尽管这隐喻创造了超过20年前(近40年过去了自定义软件的法律),在学术领域的重要性这个主题只能观察到在过去的8年里,当研究的数量已经大幅上涨(3]。
然而,直到今天,仍然没有清晰的定义究竟可以视为道明。大量的文章和研究报告发表TD,形状不同的定义(4]。来自该行业,TD现象首先在敏捷开发社区中已变得很流行。Kruchten等人指出,尽管TD隐喻主要是未使用的,而不是关注多年,TD的兴趣不断增加已经出现在敏捷方法的到来的同时,增加了兴趣在业内TD (4]。
一般来说,TD的影响可能非常相关的行业和开源社区5,6]。许多研究发现TD公司(金融都有消极影响7- - - - - -9]。每小时一个开发者的时间用于修复设计不佳或如何糟糕记录代码与其他模块而不是开发新特性可以被认为是一种浪费钱的公司的观点。(10]。像经济学一样,兴趣是出现在TD球体。坎宁安把兴趣描述为“每一分钟都花在代码并不完全正确“(1]。
本文的目的是比较三个主要技术TD识别,提出了随着时间的推移源代码TD标识:(i)可维护性指数(MI)(1994)是第一个(批评)试图衡量TD和仍在使用,(ii)团体TD模型(2011)中定义的搜索适当的代码度量TD测量,和(3)SQALE(2011)是一个框架,试图投入更多实际的指示ISO / IEC 9126软件质量标准(最近取代了ISO / IEC 25010: 2011)。
我们需要更多的探索性方法对先前的研究比较TD识别方法(例如,(11]);我们不看看收集的测量方法对常见软件质量量度(可以比较有用说明时间序列研究),而我们比较来自不同的方法,观察结果的趋势和条件的时间序列相似性多少一个方法可以与另一个。这种评价可以给我们一些见解的看法的TD项目从业者可以当应用一种方法。例如,不断增长趋势会导致不同的动作比渐进(甚至减少)TD演化趋势。
本文的结构如下。节2,我们提供关于TD背景:定义随着时间的推移,方法用于计算TD和相关研究试图比较TD方法。节3,我们提出三种方法比较摘要:MI,团体TD, SQALE。节4,我们将描述实验评价和结果:方法、项目使用,新兴应用的三种方法的差异。部分6总结了纸。
2。背景
2.1。随着时间的推移TD定义
TD的广泛定义之一是2008年从麦康奈尔:“设计或施工方法,短期的权宜之计,但创建一个技术背景相同的工作将晚于花费更多现在做成本(包括随时间增加的成本)“(12]。然而,即使他TD的分类通常是用于科学论文或技术博客,仍有一些点在社区内的冲突。最热门的问题是无意的债务被麦康奈尔形容为“一个设计方法是容易出错或初级程序员写坏的代码。“这是由马丁[批评等13)和支持诺顿(14]。
马丁形容TD短期工程取舍或次优设计适当的到日程表驱动的项目,只要债务的好处,例如,提前释放,驱动业务在未来偿还债务13]。甚至坎宁安之后指出,TD的原始定义是为了包含设计决策,而不是代码的质量,指出“偿还债务的能力[…取决于你编写足够干净的代码能够重构来理解你的问题”(15]。马丁和诺顿的信念相反,开发社区的许多成员认为坏和遗留代码和旧技术是TD的一部分。福勒(16和阿特伍德17都提到条款”快,脏,混乱的”指从坎宁安和马丁TD定义。
在研究背景下,有许多解释道明。道明为“郭等人提出了不完整、不成熟或工件在软件开发生命周期不足“(18]。Theodoropoulos提出了一种新的、更广泛的TD的定义:“技术债务是技术基础设施中的任何差距或实施实质性影响所需的质量水平”(19]。都提出了一个更广泛的TD的定义:“代码质量问题以外的功能/特性完整性“分为内在和外在质量问题(20.]。英镑也同意功能或特性完整性必须排除在TD定义因为即使上爬满了TD,应用程序应满足其用户满意度的最低标准(21]。
虽然有许多不同的解释TD隐喻在学术出版物,似乎有一种共识,即使糟糕的代码应该被视为道明。柯蒂斯意味着TD应该视为一切”必须解决”的观点的软件公司。然而,TD隐喻有其局限性。还有人注意到,因为它创造了超过20年前,它是现代开发技术不够充分时,如敏捷或极限编程(XP),使用(22]。在这些技术中,未完成交付的产品是故意,但TD发生这种方法控制和经常在下一次迭代偿还。
TD定义的最重要的一个缺点是,尚未有一个统一的计量单位(23]。它通常是复杂的量化的大多数形式的道明。由于TD的复杂性概念,试图将TD和整体框架的创建。汤姆et al。9技术债务划分为几个类别:代码的债务,设计和架构的债务,环境负债(连接到硬件软件生态系统),知识分布和文档的债务,测试的债务。TD识别技术提出了随着时间的推移,通常看的方面之一的组合成一个框架,用于测量几个方面。明显的类别,不同的指标需要考虑为每个类别。
最常见的方式量化源代码TD TD是跟踪代码,如代码味道(24)或类似的结构,不遵守约定和最佳实践的一个给定的语言。如果我们排除代码级债务从TD, TD的量化变得更加困难,例如,在架构级别(25]。
2.2。类比TD和金融债务
的基础软件TD的人气,有类比TD和金融债务9]。
2.2.1。货币成本
TD通常消极的金融影响公司(7- - - - - -9]。固定成本设计不良或严重记录代码可以被认为是一个浪费钱的公司的观点。等这些成本也可以间接的负面影响团队的士气(10]。
2.2.2。利息和本金
感兴趣的金融背景,概念也出现在TD的定义。在软件开发中,坎宁安形容的“每一分钟都花在不完全对代码”(1]。卡姆登这个定义进行扩展,添加的需求建立了债务的偿还(如支付本金,即借数量)(26]。在软件环境中,需要做出额外努力解决TD债务在一个项目中。这个额外的努力是必须支付的利息。
伊迪丝·汤姆指出的一个形式的利息成本也降低开发人员的生产力,它会导致更多的债务积累的形式较慢的发展速度(9]。一些作家,如里斯,报告称,并不是所有的债务都是平等的。的利率是不同的基于代码是否在使用。
2.2.3。还款和退出
偿还TD可以解释为重构之前的源代码解决方案。短期债务可以(也应该)得到偿还,最好在明年年初发布。然而,它更容易招致TD无意中而不是有意识地和“就更难跟踪和管理“(12]。类似的金融背景下,麦康奈尔表明信用评级理论,可与TD的撤军。他描述了一个团队的信用等级为“一个团队的能力偿还技术债务发生后“(12]。这种能力可能会考虑各种因素,尤其是如果发展速度开始下降TD演化的结果。基于多种还款,不同形式的TD可以定义。其中一个例子是TD的可见性(例如,因为债务的规模相比,整个系统分级),因此它需要额外的工作来识别需要偿还的12]。
2.2.4。破产
储备的TD最终都会导致破产。与金融破产,在软件开发中,破产意味着任何进一步发展是不可能的了,一个完整的代码重写是必要的。当有必要申请破产可以在不同的项目和不同的开发人员不同。TD是很常见的现象,破产中专家的定义是不同的。应用程序可以被视为破产时的成本改善现有代码在应用程序可能确实大于重写它的成本”(27]。相反,希尔顿描述破产的时刻,“你要么暂停所有功能开发偿还所有的债务,或者你将不得不重写整个应用程序”(28]。汤姆等人描述了破产在西南开发“战术时,增量,无意的形式的技术债务(没有长期的观点)剩下的非托管没有任何控制”(9]。尽管确切的破产的定义是不同的,所有的这些理论有一些共同点。破产的最严重的后果是整个必要重写软件,基本上停止任何进一步的发展,导致更多的时间和金钱的损失。
2.2.5。利用
杠杆是蓄意而为的TD的原因之一加入到代码库。节省时间的发展会导致早期的版本中,可以是至关重要的,例如,对于初创企业。一定量的TD不必一定是一件坏事时管理和限制到特定的限制。McConnell指出,有必要管理TD在一个合理的水平,因为它可以减缓开发速度在未来。因为这个原因,公司必须投入时间在管理和偿还TD而不是积累TD (12]。提到的类似的想法是福勒:“之前你需要送货你达到设计的线给你任何机会的获得你的债务…甚至低于这条线,你必须权衡的价值从早产对分期支付利息和本金,你会招致“(16]。
3所示。三个指标测量道明
许多方法被道明身份(29日- - - - - -33]。在本文中,我们专注于三个可选的方法是随着时间的推移,用于TD标识:(i)可维护性指数(MI),(2)团体TD模型,和(3)SQALE分析。这些方法的选择有多种原因。一方面,这些都是受欢迎的方法,提出了随着时间的推移,但没有进行比较。另一方面,这些方法(或改编)都是参数标准所以他们认为类似的努力收集必要的数据。此外,他们可以在代码编辑器和由专业人员目前可以使用,所以比较可以有用的理解差异,是可维护性指数提出的第一个模型。
3.1。可维护性指数(MI)
在软件维护国际会议上,1992年,阿曼和Hagemeister介绍一篇文章,收集60指标测量软件可维护性(34]。其中的几个指标很难计算,主要是因为他们中的大多数需要历史或主观数据。他们的目标是来轻松地计算需求的最小集合,基于它可能预测软件的可维护性。精炼和发表文章,1994年,他们介绍了可维护性指数(MI) [35]。
找到一种简单、适用的模型是通用的足够广泛的软件,一系列50统计回归测试。3模型的测试额外的测试套件(连同另一个问卷),基于Halstead four-metric多项式体积,麦凯布圈复杂度,行代码,和线条的评论被选为一个可维护性索引。MI的原始公式定义如下: 高压平均每个模块Halstead体积,CC是平均每个模块圈复杂度,LoC平均每个模块的代码行,每个模块和CMT平均线的评论。
尽管可维护性指数的流行,它仍然被视为一个有争议的指标。批评由于各种原因,如不清楚解释公式的,平均每个文件的使用,从1994年开始,使用相同的公式,可能一些模棱两可的结果连接到特定源代码指标(36]。
然而,MI的导数公式仍用于一些流行的代码编辑器(例如,Microsoft Visual Studio),所以相对容易通过从业者TD检测项目。在我们的分析中,我们使用它作为比较的基准指标之一,看到这样的度量与最近的指标。
在实验评价中,我们使用Microsoft Visual Studio中采用的导数公式,使心肌梗死范围(0,100),与原有的171年相比,一个无界的负数,困难的解释能力:
3.2。SIG TD模型
软件改进集团(SIG)的定义,在2011年,一个模型,该模型基于一个量化TD估计修理工作和估计的维护工作,它提供了一个明确的成本维修,其好处,和预期的投资回收期33]。模型是基于SIG可维护性模型和计算技术债务和利息基于定义的经验值和度量。
团体可维护性模型是基于一组最小需求基础上的局限性等其他指标可维护性指数(37]。模型地图系统特性(从ISO 9126)到源代码的属性。可以评估每个源代码属性可以轻松买到,语言的指标:体积:行代码通过功能点或人年。复杂性单位:McCabe的圈复杂度。一个单元是最小的独立可执行代码对于一个给定的语言的和可测试的子集。重复:比例的重复代码块(超过6行)。产品尺寸:单位的代码行。单元测试:单元测试覆盖率或断言语句的数量。
这些指标评分在5点量表基于它们的值(37]。系统特征的总体成绩,我们必须计算源代码的圆形的平均属性映射到特定系统的特点。例如,analysability等级,我们需要体积的平均值,重复、单元大小,单元测试(见表1)。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
这个模型使用团体可维护性的分级规模模型。它提出了项目的总体成绩平均系统的特点。可维护性的单位是一个“明星”,如果系统特征的平均值是例如5,他们把它作为一个五星级项目。
量化TD的项目执行几个步骤,需要计算三种不同的变量:重建价值(RV)、返工分数(RF),(重新)和修复工作。
重建价值被定义为一个估计的工作量(人像)需要使用特定技术用于重建一个系统。计算这个值,使用下面的公式: SS系统大小的代码行和TF是技术因素,这是一个常数,代表语言生产力因素(38,39]。
返工率被定义为估计%的LoC被改变以提高质量水平。射频的值定义在两个质量水平经验(33]。
最后,修复工作返工分数乘法的计算和修复工作。重构可以乘以调整(RA)指标,显示外部,代表一个项目的上下文相关的方面折扣在整个技术债务的项目:
3.3。SQALE
软件质量提高(SQALE)集中在ISO 9126的操作化软件质量标准,通过一些代码度量与ISO 9126中定义的分类(31日]。模仿的ISO 9126标准,SQALE一级定义特征(例如,可测试性),进一步subcharacteristics(例如,单元测试可测试性),并进一步源代码级别要求。一个例子可以可测试性特征,是有多少测试系统,可分为单元测试集成测试可测试性和可测试性subcharacteristic。源代码的需求,例如,一个对象(CBO)之间的耦合度量< 7和参数的数量在一个模块调用(NOP) < 6。图1给出一个示例的特点和subcharacteristics和代码质量指标之间的联系。最后,然后源代码需求映射到补救索引所需的翻译时间/精力来解决问题。聚合的特点给出了整体道明。
TD的计算,可以使用SQALE计算所谓的“补救成本(RC),代表的成本解决违反的规则为每个类别定义(40]:
SQALE,我们采用了SonarQube实现:使用一个默认的规则集,声称是最佳实践,最低的规则集评估技术债务。
4所示。实验评价
实验评价的定义,我们定义以下目标:分析技术债务评价技术(MI、SQALE和团体TD)为目的的比较相似的趋势和演变的角度测量的从业人员针对测量道明。
目的是细化为三个主要研究问题(rq):RQ1:测量的趋势所提供的三个方法可比?度量:皮尔逊相关性时间序列的趋势。RQ2: TD趋势比较不同版本类型?度量:比较的趋势发布类型。RQ3:一种方法可以用来预测另一个吗?度量:时间序列之间的格兰杰因果关系。
4.1。数据集
测试包从列表中随机选择5000年最流行的Python库(https://hugovk.github.io/top-pypi-packages/手稿提交ACM)。然而,我们定义了一些标准由于需要计算的度量标准和实施必要措施的分析:在GitHub库可供开采至少5版本发表在Python 3内的存储库传统的主要版本。次要版本。号码微发布符号通过设置工具库打包可以通过设置运行单元测试。py命令
而几乎所有选定的包在GitHub库,少一些,尤其是流行包太少发布版本。此外,如果所选的库是在Python 2只写的。xversion, it was not considered, as the analysis was implemented in Python 3.6 and the incompatibilities could affect the results. Similarly, the vast majority of the packages used standard Major.Minor.Micro release notation. However, according to Python Enhancement Proposal (PEP) 481, date-based release segments are also permitted [41]。等简单和统一的版本控制,图书馆是省略了从列表中可能的候选项目。总的来说,20个项目选择:P1。信号灯,P2。彩色光,P3。CSVKit,P4。Dateparser,P5。装饰,P6。弃用,第七页。控制,P8。ISODate,票数。JmesPath,P10。密匙环,侯。麦凯布,P12 Pyasn,P13。PyFlakes,P14.PythonISO3166,P15。TinyCSS2,P16。Yamllint,P17.Yapf,P18。Fakeredis,P19。influxdb-python,P20。pylint(完整列表也可以发现在桌子上2,在(42])。这些都是Python库,用于为其他应用程序提供功能,如csvkit,有用的csv格式为管理提供支持。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4.2。基本原理和方法
比较三种方法,我们看时间序列的所有三种方法收集的措施。对于每个项目,我们实现方法进行分析,我们汇总所有措施的发布日期,并建造每一个指标的时间序列,我们用作运行基准分析。每个TD的识别方法有不同的尺度,很难直接比较,我们看趋势和时间序列的行为造成的所有方法的应用。
我们定义了一个时间序列 ,组成的数据点TD的每个版本 ,作为 。三种方法的时间序列的一个例子认为图中可以看到2,我们策划发布和TD测量xmllint项目。可以看到,MI测量是一个逆的其他措施,如给的项目的可维护性(更糟)越低,而TD积累的其他方法给指示(越高更糟)。其他部分的分析,比较时间序列,我们扭转了MI指数,使它与其他方法(如相关的趋势)。RQ1趋势的测量,我们计算TDΔ测量两个版本之间的每个项目。
(一)
(b)
(c)
发布 , 定义如下:
然后我们计算的所有点之间的皮尔逊相关性的比较方法。的结果为每个时间序列也是一种聚合所示箱线图。TD测量的变化趋势,比较之间的箱线图可以展示的差异趋势三个TD识别方法。
RQ2,我们深入研究趋势为不同类型的项目版本:主要(如0.7.3,1.0.0,2.0.0)、小(例如,0.7.3、0.8.0 0.9.0),和微观(如0.9.0,0.9.1,0.9.2)版本中,看是否考虑不同类型的版本可以影响结果的所有方法。回答研究问题,我们看看TD的Δ↑增加趋势,Δ↓下降趋势,和在时期Δ0版本TD并未改变,分类的类别:
RQ3,我们看看有多少人可以使用三种方法预测的结果从另一个方法。
我们考虑时间序列测量的三种方法(MI、团体TD和SQALE),和我们在对计算方法之间的格兰杰因果关系。
格兰杰因果关系检验,克莱夫·格兰杰在1969年首次提出,是一种统计假设测试用于确定一个时间序列可用于预测其他时间序列值(43]。更准确地说,我们可以报告”格兰杰原因” ,如果落后(例如, )可以提供预测能力超出了允许的考虑到自己的滞后 。
零假设是T2不Granger-cause T1的时间序列。我们采用了标准SSR-based方差齐性检验。如果概率值小于0.05,可以得出结论,T2 Granger-causes T1。
4.3。结果
4.3.1。RQ1:测量的趋势所提供的三个方法可比?
比较不同技术TD之间随着时间的推移,使用皮尔逊相关性。二元皮尔逊相关措施的强度和方向(−1.0,+ 1.0)对变量之间的线性关系。
图3报告的箱线图为每个版本之间的相关趋势( )。箱线图中的每个数据点构成了一个项目的相关性。三箱线图提出比较SQALE-SIG(中间值:0.74),SQALE-MI(中间值:0.57),和SIG-MI(中间值:0.67)。
图显示SQALE和MI是最类似的方法,拥有最多的负相关,比其他模型相比更广泛的变化。SQALE团体和团体和MI显示类似的分布的相关性,稍微支持团体和MI,还具有更少的负相关性和降低方差。如果这种差异显著,我们运行Wilcoxon符号秩测试和配对差异测试评估意味着等级差异的相关性。差异不具有统计学意义SQALE-MI与SIG-MI (值0.2801,≥0.05,双尾)和SQALE-SIG vs SQALE-MI不显著(值0.496,≥0.05,双尾)。
当我们看趋势后每两个版本之间的比较(表3),这一趋势是相似的团体和MI(以前的相关性讨论),有轻微差异下降趋势。这似乎表明,根据MI, TD往往是偿还更多团体。在SQALE,不过,我们可以观察到TD是更稳定的不同版本(见表3)。我们可以进一步看到道明身份为所有项目的变化趋势图4。对于每个项目,我们情节的箱线图趋势TD每连续两个版本之间的差异。例如,我们可以看到P1信号灯只有0到+ 35%的增长趋势(如局外人),在吗P2彩色光不仅积极趋势+ 7.5%也是时间的负面趋势−12.5%,TD的减少。看着P1信号灯项目中,我们可以看到,SQALE有着更多的变化趋势与MI比其他两种方法有更低的变化趋势。看的比较,我们可以看到,一些项目有减少的趋势,尽管这些变化是相当有限的,确认TD通常报道所增加的所有方法。每个项目也是相当具体,比如isodate,报道大量变异的MI的趋势,而一般MI测量是用更少的其他项目的变化趋势。
|
||||||||||||||||||||||||||||
RQ1发现:考虑TD版本之间的变化趋势之间的关系,团体TD和MI是显示更多的模型相似性的TD的趋势变化的相关性。SQALE和团体TD显示更少的相似之处。一般来说,SQALE和心肌梗死模型显示低趋势在20项目相关考虑。SQALE也是模型显示更加稳定时期的债务相比其他方法。
4.3.2。RQ2: TD趋势比较不同版本类型?
这RQ RQ1类似,但在RQ2,我们看一下比较基于发布类型,也就是说,如果主要,次要,microreleases物质TD的差异识别三种方法之一。
之间的比较单纯主要释放带来了有趣的结果(表4),类似于在所有版本的结果。所有的比较,大多数主要为每个分析释放引起TD上升。SQALE再次最多的还是趋势和最TD偿还与MI(下降趋势)记录。
|
||||||||||||||||||||||||||||
TD的上升更强小团体TD和SQALE版本级别上,遇到的每个方法相比,上升趋势的兴起主要版本(见表5)。SQALE增长也呈现出一定的下降趋势。与前面的情况下,SQALE记录一段稳定的TD,最还款和MI TD(在更大程度上比团体TD和SQALE)。
|
||||||||||||||||||||||||||||
最后进行比较微版本。同样的趋势也观察到在这个级别:绝大多数版本引入更多团体和MI的TD,同时考虑SQALE大多数版本并没有改变TD(见表6)。MI是报告的方法更多TD还款(21.99%)。
|
||||||||||||||||||||||||||||
RQ2发现:考虑大,小,和微版本中,心肌梗死和团体TD显示主要是大部分的增长趋势。SQALE显示了TD的最稳定的状态,而MI显示更大的TD偿还期限比其他方法。这些模式似乎是一致的大,小,和微版本。他们表明,选择一个特定的方法可以产生影响的感知技术债务的存在在一个项目。
4.3.3。RQ3:一种方法可以用来预测另一个吗?
一个时间序列可以说Granger-cause另一个时间序列如果正确的概率预测 ,与 ,增加了包括信息除了信息包含在一个人。的三种方法,这意味着从一个测量方法(例如,SQALE)可以一起使用另一种方法的测量(例如,MI),以提供更好的预测未来值的补充方法(例如,MI)。聚合所有项目关于格兰杰因果检验的结果可以给我们指示多少时间序列结果TD识别技术可以帮助预测时间序列的其他方法。
要注意,格兰杰因果关系,不同于相关性,通常是一个不对称的性质,也就是说,这一事实,在一个项目的时间序列SQALE Granger-causes团体TD模型并不意味着团体TD模型Granger-causes SQALE结果。出于这个原因,我们提供的所有组合结果与计数器多少次结果积极根据野生考虑所有的20个项目分析(表7)。
|
||||||||||||||||||||||||||||||||||||||||
但值得一提的是,在两个测试库,TD的线性趋势SQALE造成测试结束的错误因为格兰杰因果检验不捕捉瞬时和非线性因果关系。一般来说,SQALE-MI SQALE-SIG TD和f统计量显著约1/3的项目(30%),而在大多数的其他情况下格兰杰因果是负面的。这些结果可以表明,在一些结果,考虑SQALE的滞后值时间序列的结果,我们可以得到更好的预测中的值的MI和团体TD系列。
RQ3发现:格兰杰因果的结果表明,有一个有限的关系不同的方法比较,表明TD识别测量,而独立。只有SQALE时间序列Granger-causes MI和团体TD 1/3的项目,与SQALE-SIG SIG-SQALE附近也积极的格兰杰因果关系。对于其他方法,主要是没有格兰杰因果关系。
4.3.4。可复制性
分析实施和运行使用Python 3.6.3版本。一阶导数氡库使用(https://radon.readthedocs.io/en/latest/index.html)。氡是一个Python包计算各种源代码指标,如McCabe的圈复杂度,霍氏度规,原始指标(代码行和行注释),和MI。sonar-python插件(https://docs.sonarqube.org/display/PLUG/SonarPython)是用于SQALE分析。统计模型库是用于计算格兰杰因果检验。脚本可以运行运行、聚合和半自动的方式所有的结果。
复制包包含所有指标的收集的所有版本的分析项目,连同原料分析、图和源代码用于分析(44]。
4.4。威胁的有效性
4.1.1。外部效度
外部效度威胁相关的普遍性研究[45]。20日进行了实证评价Python项目从大量样本中提取。结果在其他的项目可能会有所不同,也Python项目可能扮演一个角色的特点。包括所有小Python库的项目有用的其他Python应用程序的功能。即使这些小库,我们跟着随时间的演变和所有提交执行重建大项目集进行数据分析。
10/24/11。内部效度
内部效度威胁相关实验错误和偏见(45]。数据收集过程进行了使它尽可能多的复制:通过运行一些脚本可以开始收集过程,计算TD测量,然后聚合结果的视觉和文本形式。一个问题是,计算项目的报道(团体保险措施的TD模型)意味着项目建成并测试。这引入了一个半自动的阶段,项目不能建造需要固定或不能包含在项目的样本集。另一个内部效度威胁的实现方法。小姐,我们使用的实现氡图书馆,SQALE,我们通过SonarQube处理实现sonar-python插件。团体TD模型被重新实现基于信息在报纸上刊登的模型(例如,(33])。在我们或采用的实现,可能会有一些矛盾或问题的计算指标,很难有一些测试TD地面真理(46]。
4.4.3。建构效度
建构效度威胁与多少代表研究人员使用的措施旨在调查(45,47]。在我们的例子中,我们认为黑盒分析基于进化的趋势提供的测量三个TD识别技术。趋势的定义是连接到软件版本(大,小,和微),我们认为适当的设置的研究问题。目前的研究更多的是探索寻找新兴模式,进一步的研究可以考虑更多的解释方面。
5。相关的工作
在文献中,TD从各种角度研究[9,48)和许多不同的方法提出了TD识别和管理(49]。
然而,研究并不多,比较另类TD识别方法。其中一个原因可能是复杂性/时间实现方法和第二个原因所需的相似性度量定义。此外,伊苏列塔等。46)注意,很难比较另类TD测量方法由于缺少地面真理和测量过程的不确定性。最早的研究比较指标TD识别是研究Zazworka et al。11),比较四个不同版本的Apache Hadoop替代方法:(a)模块化侵犯,(b)设计模式污垢积聚,源代码(c)气味,和(d)静态代码分析。重点是比较这些方法如何在类级别。TD识别技术的研究结果表明不同类型的问题,没有很多方法之间的重叠。
格里菲斯et al。50)十个版本的十个开源系统相比有三个TD方法识别((i) SonarQube TD插件,(2)基于TD识别方法使用基于发现违规的成本模型,和(3)和一个方法定义设计不和谐获得质量问题)。这些方法对软件质量模型进行了比较。作者发现,只有一个方法有很强的相关质量属性的可重用性和可理解性。
娃等。40TD]提出了一种基准模型计算。模型的目的是允许的比较项目的TD值与基线值基于一组参考项目。在他们的工作,作者还提出一个总体分类方案技术债务计算方法。此外,作者比较3种不同TD计算方法:演员,SQALE和团体质量模型。比较的基础上,作者得出要求的基准模型。比较关注高级定性属性,比如数据源、目标水平,生产力因素而不是定量比较在给定的一组项目。
Oppedijk [51]相比结果的统计相关性从应用程序的可维护性指数和团体可维护性模型73软件项目:52专有软件系统和21开源系统。19个系统用C编程语言编写的,11在c++中,用Java 43。总的来说,这两个模型有一个温和的显著正相关的C编程语言(0.494或0.476取决于心肌梗死模型应用),以及Java(0.459和0.500),而对于c++结果不重要,主要是由于样本量较低(0.365和0.423)。总的来说,预期两个模型之间的相关性更高水平。另一个有趣的发现是两个模型的不同组件的共线性,表明一些组件有太多的共线性(也就是说,可变性和analysability和团体可维护性的可变性和可测试性模型,平均Halstead体积,扩展圈复杂度、平均和平均单位大小MI)。这表明,一些模型可以提高通过删除一些组件,在维护全球指数的计算。
格里菲斯et al。52)引入了一个概念模型的离散事件仿真Scrum敏捷过程包括缺陷和TD创造。仿真是用于研究的集成多个TD在敏捷开发流程管理策略。评估TD管理战略之间的区别,作者使用五个指标:完成项目成本(CC),计算完成的工作项(WC),成本有效的技术债务(等),潜在的技术债务(输配电),成本和总成本技术债务(CTD)。CC,要领、输配电和TD表达的源行代码(SLOC)。
李等人。53]分析了13开源项目有多个版本他们每个人专注于评估建筑技术债务(ATD)。ATD是测量每提交修改组件的平均数量(ANMCC)。在案例研究中,作者调查了ANMCC和源基于代码模块化指标之间的相关性,如包(IPCI)变化的影响,指数指数Inter-Package扩展(IIPE),或索引包的目标焦点(IPGF)。研究表明IPCI和ANMCC IPGF有很强的负相关,因此可以作为一个ATD指标。尽管多个指标比较,作者没有直接关注现有TD措施的比较,他们也只关注ATD而不是一般的道明。
科斯等人。54TD的区分两类方法:方法赚钱的TD度量(如SQALE)和方法,提供代理TD指标与结构指标(例如,类似于[53])。在他们的工作中,作者比较SQALE指标之间的相关性和20结构从两个度量面向对象度量套件(55,56]。这是在20日开源项目进行案例研究。结果表明,几个指标可以用来量化TD因为他们和SQALE指标一一对应。虽然,作者包括大量的指标比较,他们只关注SQALE直接道明指示器和他们只调查指标之间的相关性。
Zazworka et al。57)研究和比较人类启发的TD自动化TD识别。自动TD识别,作者使用代码味道检测工具以及常见结构指标。
尽管不同类型的TD被认为,没有提供详细的量化结果。
6。结论
本文的目的是比较三个主要技术TD识别,提出了随着时间的推移:(i)可维护性指数(MI),(2)团体TD模型和(iii) SQALE。我们比较实验的三种方法在一组20日Python项目。
一般来说,所有方法越来越趋势TD的工程报告,但是有不同的模式在最后的测量时间序列的进化。MI和团体TD报告更增长趋势TD SQALE相比,它显示了更多稳定的TD的时期。MI是报告的方法很大程度上更多的还款TD相比其他方法。团体TD和心肌梗死的模型显示更多相似的方式TD发展,而SQALE和MI是比较相似的。所有项目和组合的格兰杰因果之间的依赖关系的方法表明,有一个有限的时间序列表示的进化TD测量。不过,我们可以找到一些SQALE和MI和SQALE之间的关系和团体TD模型,在某种意义上,以前的落后SQALE时间序列的其他模型可以用来改进预测项目的1/3。
虽然在本质上探索,通过运行分析一组不同的方法,我们发现与之前的研究(11]。似乎有有限的重叠TD识别不同的方法,可能由于multifaced TD的定义。从业者的一个后果是,采用一个或其他方法可能得到不同的看法关于项目的状态。从我们的分析可以看出,当一些模型在TD报告没有变化,而其他更大的还款。学到一个教训的分析是使用多个方法可以提供更多的见解关于TD在软件项目中真实存在的。通过观察模式的替代方法,可以更好地理解如果TD是生长在一个不受控制的方式。
未来的工作将进入分析扩展到更大的规模和获得更多的解释性的见解,例如看关系模型与常见的软件质量度量。
数据可用性
挖掘数据集,实验结果图和源代码,支持本研究的发现已经存入Figshare库(DOI: 10.6084 / m9.figshare.11576040.v2) [44]。
信息披露
本文是一个扩展的版本Strečansky et al。58]。背景技术债务是扩展,再描述的方法和结果提供更多的分析项目,一个新的相关工作部分,延长引用列表。
的利益冲突
作者宣称没有利益冲突。
确认
ERDF /支持的工作是养“网络安全、网络犯罪和关键信息基础设施卓越中心”(没有。CZ.02.1.01/0.0/0.0/16_019/0000822)。
引用
- w·坎宁安,”WyCash组合管理系统”,ACM SIGPLAN哦信使,4卷,不。2、29 - 30日,1993页。视图:出版商的网站|谷歌学术搜索
- m·m·雷曼”项目、生命周期以及软件进化的法则,“IEEE学报》,卷68,不。9日,第1076 - 1060页,1980年。视图:出版商的网站|谷歌学术搜索
- p . Avgeriou z . Li, p .梁”系统的映射技术债务及其管理研究,“系统和软件杂志》上卷,101年,第220 - 193页,2015年。视图:出版商的网站|谷歌学术搜索
- p . Kruchten r . l .北部、i Ozkaya和d . Falessi“技术债务:对保鲜储藏格定义报告在第四届国际研讨会管理技术债务,”ACM SIGSOFT软件工程,38卷,不。5,51-54,2013页。视图:出版商的网站|谷歌学术搜索
- b·罗西,b . Russo g .液”造型失败出现的开源软件可靠性增长,”学报联合会国际会议上开源系统施普林格,页268 - 280年,巴黎圣母院,2010年5月,美国。视图:出版商的网站|谷歌学术搜索
- n . k . s .罗伊·b·罗西,“缺陷严重程度分类,对改善”40 EUROMICRO会议程序软件工程和先进的应用程序IEEE,页269 - 276年,维罗纳,意大利,2014年8月。视图:出版商的网站|谷歌学术搜索
- b·柯蒂斯j . Sappidi, a . Szynkarski”估计规模、成本和类型的技术债务,”诉讼的第三国际研讨会管理技术债务(MTD的12)调查卷,IEEE出版社,苏黎世瑞士,2012年6月。视图:出版商的网站|谷歌学术搜索
- k .权力,“理解技术债务的影响在团队和组织的能力和速度:查看团队和组织能力作为实物期权的投资组合,”第四届国际研讨会管理学报》技术债务(MTD)旧金山,页28-31、钙、美国,2013年5月。视图:出版商的网站|谷歌学术搜索
- e .汤姆,兰姆,r . Vidgen“技术债务的一种探索,”系统和软件杂志》上,卷86,不。6,1498 - 1516年,2013页。视图:出版商的网站|谷歌学术搜索
- d . Laribee”代码cleanup-using敏捷技术偿还技术债务,”2009年,https://msdn.microsoft.com/en-us/magazine/ee819135.aspx。视图:谷歌学术搜索
- n . Zazworka a Vetro’, c .伊苏列塔et al .,“四个技术债务识别方法相比,软件质量日报,22卷,不。3、403 - 426年,2014页。视图:出版商的网站|谷歌学术搜索
- 麦康奈尔,“管理技术债务,”科技。代表,内软件,贝尔维尤,佤邦,美国,2008年,https://www.construx.com/developer-resources/whitepaper-managing-technical-debt/技术报告。视图:谷歌学术搜索
- r·c·马丁“一团糟”不是一个技术债务,2009年,https://sites.google.com/site/unclebobconsultingllc/a-mess-is-not-a-technical-debt。视图:谷歌学术搜索
- d·诺顿“混乱的代码不是技术债务,”2009年,http://docondev.com/blog/2009/08/messy-code-is-not-technical-debt。视图:谷歌学术搜索
- w·坎宁安,“债务隐喻,”2009年,https://www.youtube.com/watch?v=pqeJFYwnkjE。视图:谷歌学术搜索
- m·福勒,“技术债务”,2003年,https://martinfowler.com/bliki/TechnicalDebt.html。视图:谷歌学术搜索
- j·阿特伍德,”偿还技术债务,”2009年,https://blog.codinghorror.com/paying-down-your-technical-debt/。视图:谷歌学术搜索
- 郭y, r·奥利维拉Spinola和c·希曼”探索技术债务的成本——案例研究中,“经验软件工程,21卷,不。1,第182 - 159页,2016。视图:出版商的网站|谷歌学术搜索
- t . Theodoropoulos m . Hofberg d·克恩,“技术债务从利益相关者的角度来看,”学报第二车间管理技术债务(MTD的11)页,43-46 ACM,纽约,纽约,美国,2011年。视图:出版商的网站|谷歌学术搜索
- 手枪,“技术债务:技术债务:评估和减少,”2011年,https://agilealliance.org/wp-content/uploads/2016/01/Technical_Debt_Workshop_Gat.pdf。视图:谷歌学术搜索
- c .英镑管理软件债务:建筑不可避免的变化美国,addison - wesley专业,波士顿,MA,第1版,2010年版。
- d·鲁尼,“技术债务:具有挑战性的隐喻,”刀这杂志,23卷,不。10日,16 - 2010页。视图:谷歌学术搜索
- k·施密德,“技术债务的极限超越比喻一些指导,”第四届国际研讨会管理学报》技术债务(MTD)旧金山,页63 - 66年,CA,美国,2013年5月。视图:出版商的网站|谷歌学术搜索
- m·福勒重构:改善既有代码的设计美国,addison - wesley,波士顿,MA, 1999。
- r . l .北部、i Ozkaya p . Kruchten和m . Gonzalez-Rojas”寻找一个度量管理架构技术债务,”学报2012联合工作IEEE /联合会会议上软件架构和欧洲会议软件架构赫尔辛基,页91 - 100年,芬兰,2012年8月。视图:出版商的网站|谷歌学术搜索
- 卡姆登,“避免埋在技术债务,”2011年,https://www.techrepublic.com/blog/software-engineer/avoid-getting-buried-in-technical-debt/。视图:谷歌学术搜索
- j .榆树“设计债经济学:一个词汇来描述原因,成本,和治疗软件可维护性问题,“2009年,http://www.startuplessonslearned.com/2009/07/embrace-technical-debt.html。视图:谷歌学术搜索
- r·希尔顿“当技术债务,”2011年,http://www.nomachetejuggling.com/2011/07/22/when-to-work-on-technical-debt/。视图:谷歌学术搜索
- b·柯蒂斯j . Sappidi, a . Szynkarski”估计的主要应用程序的技术债务,”IEEE软件卷,29号6,34-42,2012页。视图:出版商的网站|谷歌学术搜索
- e da Silva Maldonado、大肠Shihab和n . Tsantalis”使用自然语言处理自动检测self-admitted技术债务,”IEEE软件工程,43卷,不。11日,第1062 - 1044页,2017年。视图:出版商的网站|谷歌学术搜索
- J.-L。Letouzey”SQALE方法评估技术债务,”诉讼的第三国际研讨会管理技术债务(MTD)卷,31-36 IEEE,苏黎世瑞士,2012年6月。视图:出版商的网站|谷歌学术搜索
- r . Marinescu”评估技术债务通过识别软件系统设计缺陷,”IBM杂志》上的研究和发展卷,56号5,页9:1 - 9:13日,2012年。视图:出版商的网站|谷歌学术搜索
- a·努哥鲁,j·维瑟和t . Kuipers,“技术债务和利息的实证模型,”学报第二车间管理技术债务(MTD的11),1 - 8卷,ACM,纽约,纽约,美国,2011年。视图:出版商的网站|谷歌学术搜索
- p .阿曼和j . Hagemeister”指标来评估软件系统的可维护性,”会议的程序软件维护奥兰多,页337 - 344,美国1992年11月。视图:出版商的网站|谷歌学术搜索
- o .保罗和j . Hagemeister”建设和测试多项式预测软件的可维护性,”系统和软件杂志》上,24卷,不。3、251 - 266年,1994页。视图:出版商的网站|谷歌学术搜索
- s . s . Counsell x Liu Eldh et al .,”和“可维护性指数”指标从面向对象的角度来看,“美国第41 Euromicro会议软件工程和先进的应用程序IEEE,页84 - 87年,丰沙尔,葡萄牙,2015年8月。视图:出版商的网站|谷歌学术搜索
- Heitlager, t . Kuipers, j·维瑟,“实际测量模型可维护性,”学报第六届国际会议上的质量信息和通信技术(QUATIC 2007)30—39页,葡萄牙里斯本,2007年9月。视图:出版商的网站|谷歌学术搜索
- c·琼斯,“爆胎:将行代码转换为功能点,”电脑,28卷,不。11日,第88 - 87页,1995年。视图:出版商的网站|谷歌学术搜索
- LLC。软件生产率的研究,表版本SPR的编程语言。PLT2007c,LLC。软件生产率研究,米尔福德,CT,美国,2007年。
- 答:娃,r . Plosch和c . Korner“技术债务的benchmarking-based模型计算,”第14届国际会议质量的软件学报》上IEEE,页305 - 314年,达拉斯,得克萨斯州,2014年10月美国。视图:出版商的网站|谷歌学术搜索
- d . s . N Coghlan”PEP 440 -版本标识和依赖规范,”2013年,https://www.python.org/dev/peps/pep-0440/。视图:谷歌学术搜索
- 彼得,“处理软件开发技术债务,”马萨里克大学,布尔诺,捷克共和国,2019年,https://is.muni.cz/auth/th/x0boz/master_thesis_digital.pdf。视图:谷歌学术搜索
- c·w·j·格兰杰,”研究因果关系的计量经济模型和交叉谱方法,”费雪,37卷,不。3、424 - 438年,1969页。视图:出版商的网站|谷歌学术搜索
- s . Peter s Chren b·罗西,“可维护性指数相比,团体方法,SQALE识别技术债务,”第35届ACM学报》研讨会上应用计算2020年3月,捷克布尔诺。视图:出版商的网站|谷歌学术搜索
- p . Runeson和m .主机”准则和报告案例研究在软件工程中,“经验软件工程,14卷,不。2、131 - 164年,2009页。视图:出版商的网站|谷歌学术搜索
- c .伊苏列塔格里菲斯,d . Reimanis, r . Luhr“技术债务的不确定性测量,”国际会议信息科学和应用程序的程序(ICISA),1 - 4卷,IEEE,韩国水原韩国,2013年6月。视图:出版商的网站|谷歌学术搜索
- c·沃林表示p . Runeson m .主机,m·c·欧胜b . Regnell和w·安德斯软件工程实验施普林格科学与商业媒体,柏林,德国,2012年。
- c . Fernandez-Sanchez j .约a . Yague和j·佩雷斯,“识别和分析管理技术债务所需的元素通过一个系统的映射研究中,“系统和软件杂志》上卷。124年,22-38,2017页。视图:出版商的网站|谷歌学术搜索
- w . n . Behutiye·罗德里格斯m . Oivo和a . Tosun”分析技术债务的概念在敏捷软件开发的背景下:一个系统的文献回顾,“信息与软件技术卷,82年,第158 - 139页,2017年。视图:出版商的网站|谷歌学术搜索
- 格里菲斯,d . Reimanis c .伊苏列塔z Codabux, a .托和b·威廉姆斯,“技术债务之间的通信软件质量模型和估计方法,”程序管理技术债务的第六届国际研讨会公元前,页19-26,维多利亚,加拿大,2014年9月。视图:出版商的网站|谷歌学术搜索
- f·r·Oppedijk”比较团体的可维护性和可维护性指数模型,“大学阿姆斯特丹,阿姆斯特丹,荷兰,2008年博士论文。硕士论文。视图:谷歌学术搜索
- 格里菲斯,h·Taffahi、c .伊苏列塔和d·克劳迪奥·“实用方法的模拟研究敏捷软件开发,技术债务管理”2014年冬季模拟研讨会论文集Savanah,页1014 - 1025年,乔治亚州,美国,2014年12月。视图:出版商的网站|谷歌学术搜索
- z,梁p, p . Avgeriou n . Guelfi和a . Ampatzoglou“模块化指标的实证调查表明建筑技术债务,”学报第十届国际ACM Sigsoft会议质量的软件架构(QoSA 14)卷,119 - 128计算机协会,纽约,纽约,美国,2014年。视图:出版商的网站|谷歌学术搜索
- m . v .科a . Ampatzoglou a . Chatzigeorgiou g .雅典娜Stamelos,和l .旧金山“技术债务主要通过结构性指标,评估”美国第43 Euromicro会议软件工程和先进的应用程序(SEAA),第333 - 329页,维也纳,奥地利,2017年8月。视图:出版商的网站|谷歌学术搜索
- j . Bansiya c·g·戴维斯,“面向对象的设计质量评价的层次结构模型,”IEEE软件工程,28卷,不。1,4-17,2002页。视图:出版商的网站|谷歌学术搜索
- w·李和亨利,“面向对象的指标,预测可维护性,”系统和软件杂志》上,23卷,不。2、111 - 122年,1993页。视图:出版商的网站|谷歌学术搜索
- n . Zazworka r . o . Spinola A Vetro”,和c f . Shull水手,”有效地识别技术债务,一个案例研究”学报》第17届国际会议上评估和评估在软件工程(缓解13)计算机协会,页42-47,纽约,纽约,美国,2013年4月。视图:出版商的网站|谷歌学术搜索
- e . Truyen d . Van Landuyt b . Lagaisse和w·Joosen”性能开销集装箱编配框架对于多租户数据库管理的部署,”学报35 ACM / SIGAPP研讨会上应用计算(SAC 20)5卷,计算机协会,纽约,纽约,美国,2020年4月。视图:出版商的网站|谷歌学术搜索
版权
版权©2020年彼得Strečansky et al。这是一个开放的分布式下文章知识共享归属许可,它允许无限制的使用、分配和复制在任何媒介,提供最初的工作是正确引用。