Non-Atomic Refactoring and Software Sustainability

Titus Winters
{"title":"Non-Atomic Refactoring and Software Sustainability","authors":"Titus Winters","doi":"10.1145/3194793.3194794","DOIUrl":null,"url":null,"abstract":"Sustainability is the ability of a project / codebase / organization to react to necessary changes over its expected lifespan. At a large enough scale, or with enough disconnect between dependencies, sustainability comes from application of both technical and non-technical approaches. On the technical side, I advocate for restraint among API providers on making arbitrary changes, and use of non-atomic refactoring techniques when more invasive changes are required; such techniques are employed in many Google projects, and in programming languages like Go and C++, to allow more flexible changes to language standards over time. On the non-technical side, I argue for a clear separation of responsibilities (providers need to do the bulk of the work for the update), as well as a growing need to document acceptable usage of an API, be it a library or programming language. In many languages, there are very few changes to an API that are provably safe without this idea: just because a user’s code currently works does not mean that it is supported and can be expected to continue to work indefinitely under maintenance. Taken together, these two approaches form what I believe to be a minimum set of requirements when approaching software sustainability.","PeriodicalId":164468,"journal":{"name":"2018 IEEE/ACM 2nd International Workshop on API Usage and Evolution (WAPI)","volume":"18 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2018-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"10","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"2018 IEEE/ACM 2nd International Workshop on API Usage and Evolution (WAPI)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3194793.3194794","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 10

Abstract

Sustainability is the ability of a project / codebase / organization to react to necessary changes over its expected lifespan. At a large enough scale, or with enough disconnect between dependencies, sustainability comes from application of both technical and non-technical approaches. On the technical side, I advocate for restraint among API providers on making arbitrary changes, and use of non-atomic refactoring techniques when more invasive changes are required; such techniques are employed in many Google projects, and in programming languages like Go and C++, to allow more flexible changes to language standards over time. On the non-technical side, I argue for a clear separation of responsibilities (providers need to do the bulk of the work for the update), as well as a growing need to document acceptable usage of an API, be it a library or programming language. In many languages, there are very few changes to an API that are provably safe without this idea: just because a user’s code currently works does not mean that it is supported and can be expected to continue to work indefinitely under maintenance. Taken together, these two approaches form what I believe to be a minimum set of requirements when approaching software sustainability.
非原子重构和软件可持续性
可持续性是项目/代码库/组织在其预期生命周期内对必要变更作出反应的能力。在足够大的范围内,或者在依赖关系之间有足够的脱节时,可持续性来自于技术和非技术方法的应用。在技术方面,我主张限制API提供者进行任意更改,并在需要进行更具侵入性的更改时使用非原子重构技术;许多Google项目以及Go和c++等编程语言都采用了这种技术,以便随着时间的推移对语言标准进行更灵活的更改。在非技术方面,我主张明确的责任分离(提供者需要为更新做大量的工作),以及越来越需要记录可接受的API用法,无论是库还是编程语言。在许多语言中,很少有API的变化可以证明是安全的,而没有这个想法:仅仅因为用户的代码目前可以工作并不意味着它得到了支持,并且可以期望它在维护期间无限期地继续工作。综上所述,这两种方法构成了我认为在接近软件可持续性时的最低要求集。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信