Deep Semantic Versioning for Evolution and Variability

被引:3
作者
Carvalho, Luis [1 ]
Seco, Joao Costa [1 ]
机构
[1] NOVA Univ Lisbon, NOVA LINCS, Lisbon, Portugal
来源
PROCEEDINGS OF THE 23RD INTERNATIONAL SYMPOSIUM ON PRINCIPLES AND PRACTICE OF DECLARATIVE PROGRAMMING, PPDP 2021 | 2021年
关键词
Type system; Program evolution; Program versioning;
D O I
10.1145/3479394.3479416
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
The development cycles in the software industry are shrinking due to the increasing demands for shorter time to market and the incremental development style of agile methodologies. Pragmatic software engineering approaches rely on careful product management, a strong versioning discipline, and a feature development strategy to avoid that newly merged code disrupts existing systems. Versioning is critical when managing software product lines and ensuring that all their variants are kept in operation amidst all the performed changes. Such methodologies enforce functional correctness through strong efforts in regression testing, with the associated exponential growth in complexity. In this paper, we propose a language-based approach to software versioning. Unlike the traditional approach of mainstream VCS, where each evolution step is represented by a textual diff, we treat versions as first-class citizens. Each evolution step, merge operation, and version relationship, is represented as code in the program. We extend prior work, Versioned Featherweight Java, to support a full-fledged version control system. First, we introduce multi-branching and merge operations, which allow for more advanced workflows. We also present a slicing procedure implemented in a compile-time tool that extracts well-typed Featherweight Java code for any single version out of a versioned codebase. We present formal soundness results that ensure that the sliced code for any version is well-behaved and has the same behaviour as the multi-version source code. We believe that our developments effectively model relevant domains of software evolution, such as feature-oriented programming, software product lines, and continuous delivery scenarios. By lifting the versioning aspect, usually represented by text diffs, to the language level, we pave the way for tools that interact with software repositories (e.g. CI/CD, GitHub Actions) to have more insight regarding the evolution of the software semantics.
引用
收藏
页数:13
相关论文
共 37 条
  • [1] Amsden Edward, 2014, INT S IMPL APPL FUNC
  • [2] [Anonymous], 2006, P 2006 INT WORKSH MI, DOI DOI 10.1145/1137983.1137999
  • [3] [Anonymous], Semantic Release
  • [4] [Anonymous], Semantic Versioning
  • [5] A Calculus for Uniform Feature Composition
    Apel, Sven
    Hutchins, Delesley
    [J]. ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2010, 32 (05):
  • [6] Oops, My Tests Broke the Build: An Explorative Analysis of Travis CI with GitHub
    Beller, Moritz
    Gousios, Georgios
    Zaidman, Andy
    [J]. 2017 IEEE/ACM 14TH INTERNATIONAL CONFERENCE ON MINING SOFTWARE REPOSITORIES (MSR 2017), 2017, : 356 - 367
  • [7] Bennett KH, 2000, P C FUT SOFTW ENG, P73
  • [8] Software Evolution with a Typeful Version Control System
    Carvalho, Luis
    Seco, Joao Costa
    [J]. SOFTWARE ENGINEERING AND FORMAL METHODS (SEFM 2019), 2019, 11724 : 145 - 161
  • [9] Domingues M., 2015, WORKSH REACT EV BAS
  • [10] Does code decay? Assessing the evidence from change management data
    Eick, SG
    Graves, TL
    Karr, AF
    Marron, JS
    Mockus, A
    [J]. IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2001, 27 (01) : 1 - 12