Python动态特性对软件维护的影响研究

来源 :南京大学 | 被引量 : 0次 | 上传用户:sea0075
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
作为程序语言的重要组成部分,动态特性因其极大的灵活性和便利性深受语言设计者和开发人员的喜爱。不仅仅是动态语言才有动态特性,Java等面向对象的高级语言在发展过程中也逐渐添加了类似功能,譬如Java的自省机制。动态特性的使用方便开发人员在程序运行过程中追踪、观察或动态修改代码,包括其语义、语法和具体实现,从而能提高开发、测试效率。但是,也有人认为动态特性的使用会增加程序维护成本、对软件质量产生影响。研究动态特性与软件维护的关系具有重要意义,然而很少有研究关注这些问题,特别是针对Python语言。为了科学、具体的探讨动态特性使用与软件维护的关系,首先,本文挑选了7个具有4到7年维护时间的开源项目,通过实证研究的方法,静态分析了53个程序版本中动态特性与模块易变性的关系,以及动态特性与模块易错性的关系。特别的,本文使用Fisher精确检验、Mann-Whitney检验和逻辑回归模型分别探究:模块易变性和模块易错性与动态特性的使用是否相关;模块易变性和模块易错性与动态特性的使用次数是否相关;模块易变性和模块易错性与特定类型的动态特性是否更相关。在开源软件项目上的实验结果表明,1)使用了动态特性的模块更容易发生改变;2)使用动态特性越多的模块越容易发生改变;3)特定类型的动态特性,在某些项目中,比其他动态特性,与模块易变性更显著相关;4)同样的实验结果也适用于动态特性与模块易错性的关系。此外,文本通过数理统计方法分析了99个项目中动态特性在变化的代码片段中的使用分布情况,并且结合人工代码审查的方式走读了4个项目中的600个commit信息,调查了4种最常使用的动态特性在变化的代码片段中的使用情况。通过人工代码审查的方式,我们总结了一些动态特性在代码维护中的变化场景,并验证了Python专家关于动态特性使用的建议。总之,这一创新性的工作,对一直关注怎样使用动态特性、为什么使用动态特性的研究者具有启发意义,并为其他研究者提供了相关的参考信息。基于实验结论以及人工审查结果,我们建议开发人员,尤其是语言的初学者,谨慎使用动态特性,因为对动态特性的误用会造成更大的维护成本;建议维护人员在有限的时间内重点关注使用了动态特性的模块,提高工作效率。
其他文献
针对连续工业生产过程特点和过程控制目标,该研究报告提出并讨论过程鲁棒优化控制问题.针对过程鲁棒控制理论研究和应用现状,指出存在的问题,分析产生的原因,然后从几个方面
信息化社会中人们工作的特点是群体性、交互性、分布性和协作性.计算机支持的协同工作(CSCW:Computer Supported Co-operative Work)作为一种将人类合作行为模式与计算机技术
分类精度和学习速度是评价分类器性能的两个主要指标。现有多层感知器(Multilayer perceptrons, MLPs)及其学习算法能有效解决中、小规模即样本数、维数和样本类别均比较小的
随着计算机逐步的智能化,人机交互技术越发重要。手势交互技术是一种以手为核心的直观的人机交互技术。手作为人体最为灵活的部分之一,能够传递各种各样的信息。近些年来,基于视
随着当今社会信息化与全球化的飞速发展,人们在生活中不可避免会接触到大量的外文信息内容。在线机器翻译的出现及普及对人们理解外文提供了很大的帮助。统计机器翻译(SMT)是
该篇文章研究的是基于Petri网的离散事件动态系统的精炼操作与工具研制.全文共分为五章.第一章是概述,介绍了当前Petri网理论与应用的发展状况.第二章是基本概念.第三章是精
建筑物场景基于图象的造型和绘制研究,是以基于图象的造型和绘制技术为基础、以建筑场景的造型和绘制为研究内容的研究活动.首先,研究人员实现了相对焦距相机复原模块和多面
学位
该论文首先对HFC网的拓扑结构、体系结构、信道特点和网络业务等方面进行了充分研究,然后在对HFC协议充分研究的基础上,讨论了以太网和HFC网在CMTS中实现转化并互连的关系.论
乳腺癌是成年妇女中一种发病率高、威胁性大的疾病.每年,世界各地都有成千上万的妇女死于乳腺癌.因此乳腺癌的早期诊断尤为重要.数字红外热像图作为一种新型的医学影像技术,