Refactoring Product Lines by Replaying Version Histories

Michael Ratzenböck, P. Grünbacher, W. K. Assunção, Alexander Egyed, L. Linsbauer
{"title":"Refactoring Product Lines by Replaying Version Histories","authors":"Michael Ratzenböck, P. Grünbacher, W. K. Assunção, Alexander Egyed, L. Linsbauer","doi":"10.1145/3510466.3510484","DOIUrl":null,"url":null,"abstract":"When evolving software product lines, new features are added over time and existing features are revised. Engineers also decide to merge different features or split features in other cases. Such refactoring tasks are difficult when using manually maintained feature-to-code mappings. Intensional version control systems such as ECCO overcome this issue with automatically computed feature-to-code mappings. Furthermore, they allow creating variants that have not been explicitly committed before. However, such systems are still rarely used compared to extensional version control systems like Git, which keep track of the evolution history by assigning revisions to states of a system. This paper presents an approach combining both extensional and intensional version control systems, which relies on the extensional version control system Git to store versions. Developers selectively tag existing versions to describe the evolution at the level of features. Our approach then automatically replays the evolution history to create a repository of the intensional variation control system ECCO. The approach contributes to research on refactoring features of existing product lines and migrating existing systems to product lines. We provide an initial evaluation of the approach regarding correctness and performance based on an existing system.","PeriodicalId":254559,"journal":{"name":"Proceedings of the 16th International Working Conference on Variability Modelling of Software-Intensive Systems","volume":"23 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2022-02-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 16th International Working Conference on Variability Modelling of Software-Intensive Systems","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3510466.3510484","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0

Abstract

When evolving software product lines, new features are added over time and existing features are revised. Engineers also decide to merge different features or split features in other cases. Such refactoring tasks are difficult when using manually maintained feature-to-code mappings. Intensional version control systems such as ECCO overcome this issue with automatically computed feature-to-code mappings. Furthermore, they allow creating variants that have not been explicitly committed before. However, such systems are still rarely used compared to extensional version control systems like Git, which keep track of the evolution history by assigning revisions to states of a system. This paper presents an approach combining both extensional and intensional version control systems, which relies on the extensional version control system Git to store versions. Developers selectively tag existing versions to describe the evolution at the level of features. Our approach then automatically replays the evolution history to create a repository of the intensional variation control system ECCO. The approach contributes to research on refactoring features of existing product lines and migrating existing systems to product lines. We provide an initial evaluation of the approach regarding correctness and performance based on an existing system.
通过重放版本历史重构产品线
在发展软件产品线时,随着时间的推移会添加新的特性,并且会修改现有的特性。在其他情况下,工程师也会决定合并不同的功能或拆分功能。当使用手动维护的特性到代码的映射时,这样的重构任务是困难的。像ECCO这样的版本控制系统通过自动计算功能到代码的映射来解决这个问题。此外,它们允许创建以前未显式提交的变体。然而,与Git这样的扩展版本控制系统相比,这样的系统仍然很少被使用,Git通过将修订分配给系统的状态来跟踪演化历史。本文提出了一种扩展版本控制系统和内部版本控制系统相结合的方法,该方法依赖于扩展版本控制系统Git来存储版本。开发人员有选择地标记现有版本,以描述特性级别的演变。然后,我们的方法自动重放进化历史,以创建一个内部变化控制系统ECCO的存储库。该方法有助于研究现有产品线的重构特性和将现有系统迁移到产品线。我们提供了基于现有系统的关于正确性和性能的方法的初步评估。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约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学术官方微信