Covariant conversions (coco): A design pattern for type-safe modular software evolution in object-oriented systems

Publikation: Bidrag til bog/antologi/rapportKonferencebidrag i proceedingsForskningfagfællebedømt

Standard

Covariant conversions (coco) : A design pattern for type-safe modular software evolution in object-oriented systems. / Bessai, Jan; Heineman, George T.; Düdder, Boris.

35th European Conference on Object-Oriented Programming, ECOOP 2021. red. / Anders Moller; Manu Sridharan. Schloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing, 2021. s. 1-25 4 (Leibniz International Proceedings in Informatics, LIPIcs, Bind 194).

Publikation: Bidrag til bog/antologi/rapportKonferencebidrag i proceedingsForskningfagfællebedømt

Harvard

Bessai, J, Heineman, GT & Düdder, B 2021, Covariant conversions (coco): A design pattern for type-safe modular software evolution in object-oriented systems. i A Moller & M Sridharan (red), 35th European Conference on Object-Oriented Programming, ECOOP 2021., 4, Schloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing, Leibniz International Proceedings in Informatics, LIPIcs, bind 194, s. 1-25, 35th European Conference on Object-Oriented Programming, ECOOP 2021, Virtual, Aarhus, Danmark, 11/07/2021. https://doi.org/10.4230/LIPIcs.ECOOP.2021.4

APA

Bessai, J., Heineman, G. T., & Düdder, B. (2021). Covariant conversions (coco): A design pattern for type-safe modular software evolution in object-oriented systems. I A. Moller, & M. Sridharan (red.), 35th European Conference on Object-Oriented Programming, ECOOP 2021 (s. 1-25). [4] Schloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing. Leibniz International Proceedings in Informatics, LIPIcs Bind 194 https://doi.org/10.4230/LIPIcs.ECOOP.2021.4

Vancouver

Bessai J, Heineman GT, Düdder B. Covariant conversions (coco): A design pattern for type-safe modular software evolution in object-oriented systems. I Moller A, Sridharan M, red., 35th European Conference on Object-Oriented Programming, ECOOP 2021. Schloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing. 2021. s. 1-25. 4. (Leibniz International Proceedings in Informatics, LIPIcs, Bind 194). https://doi.org/10.4230/LIPIcs.ECOOP.2021.4

Author

Bessai, Jan ; Heineman, George T. ; Düdder, Boris. / Covariant conversions (coco) : A design pattern for type-safe modular software evolution in object-oriented systems. 35th European Conference on Object-Oriented Programming, ECOOP 2021. red. / Anders Moller ; Manu Sridharan. Schloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing, 2021. s. 1-25 (Leibniz International Proceedings in Informatics, LIPIcs, Bind 194).

Bibtex

@inproceedings{3fe50f1201bb45f09024306a93ae0a39,
title = "Covariant conversions (coco): A design pattern for type-safe modular software evolution in object-oriented systems",
abstract = "Software evolution is an essential challenge for all software engineers, typically addressed solely using code versioning systems and language-specific code analysis tools. Most versioning systems view the evolution of a system as a directed acyclic graph of steps, with independent branches that could be merged. What these systems fail to provide is the ability to ensure stable APIs or that each subsequent evolution represents a cohesive extension yielding a valid system. Modular software evolution ensures that APIs remain stable, which is achieved by ensuring that only additional methods, fields, and data types are added, while treating existing modules through blackbox interfaces. Even with these restrictions, it must be possible to add new variations, fields, and methods without extensive duplication of prior module code. In contrast to most literature, our focus is on ensuring modular software evolution using mainstream object-oriented programming languages, instead of resorting to novel language extensions. We present a novel CoCo design pattern that supports type-safe covariantly overridden convert methods to transform earlier data type instances into their newest evolutionary representation to access operations that had been added later. CoCo supports both binary methods and producer methods. We validate and contrast our approach using a well-known compiler construction case study that other researchers have also investigated for modular evolution. Our resulting implementation relies on less boilerplate code, is completely type-safe, and allows clients to use normal object-oriented calling conventions. We also compare CoCo with existing approaches to the Expression Problem. We conclude by discussing how CoCo could change the direction of currently proposed Java language extensions to support closed-world assumptions about data types, as borrowed from functional programming.",
keywords = "Binary method, Expression problem, Producer method, Software evolution, Type safety",
author = "Jan Bessai and Heineman, {George T.} and Boris D{\"u}dder",
year = "2021",
month = jul,
day = "1",
doi = "10.4230/LIPIcs.ECOOP.2021.4",
language = "English",
series = "Leibniz International Proceedings in Informatics, LIPIcs",
publisher = "Schloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing",
pages = "1--25",
editor = "Anders Moller and Manu Sridharan",
booktitle = "35th European Conference on Object-Oriented Programming, ECOOP 2021",
note = "35th European Conference on Object-Oriented Programming, ECOOP 2021 ; Conference date: 11-07-2021 Through 17-07-2021",

}

RIS

TY - GEN

T1 - Covariant conversions (coco)

T2 - 35th European Conference on Object-Oriented Programming, ECOOP 2021

AU - Bessai, Jan

AU - Heineman, George T.

AU - Düdder, Boris

PY - 2021/7/1

Y1 - 2021/7/1

N2 - Software evolution is an essential challenge for all software engineers, typically addressed solely using code versioning systems and language-specific code analysis tools. Most versioning systems view the evolution of a system as a directed acyclic graph of steps, with independent branches that could be merged. What these systems fail to provide is the ability to ensure stable APIs or that each subsequent evolution represents a cohesive extension yielding a valid system. Modular software evolution ensures that APIs remain stable, which is achieved by ensuring that only additional methods, fields, and data types are added, while treating existing modules through blackbox interfaces. Even with these restrictions, it must be possible to add new variations, fields, and methods without extensive duplication of prior module code. In contrast to most literature, our focus is on ensuring modular software evolution using mainstream object-oriented programming languages, instead of resorting to novel language extensions. We present a novel CoCo design pattern that supports type-safe covariantly overridden convert methods to transform earlier data type instances into their newest evolutionary representation to access operations that had been added later. CoCo supports both binary methods and producer methods. We validate and contrast our approach using a well-known compiler construction case study that other researchers have also investigated for modular evolution. Our resulting implementation relies on less boilerplate code, is completely type-safe, and allows clients to use normal object-oriented calling conventions. We also compare CoCo with existing approaches to the Expression Problem. We conclude by discussing how CoCo could change the direction of currently proposed Java language extensions to support closed-world assumptions about data types, as borrowed from functional programming.

AB - Software evolution is an essential challenge for all software engineers, typically addressed solely using code versioning systems and language-specific code analysis tools. Most versioning systems view the evolution of a system as a directed acyclic graph of steps, with independent branches that could be merged. What these systems fail to provide is the ability to ensure stable APIs or that each subsequent evolution represents a cohesive extension yielding a valid system. Modular software evolution ensures that APIs remain stable, which is achieved by ensuring that only additional methods, fields, and data types are added, while treating existing modules through blackbox interfaces. Even with these restrictions, it must be possible to add new variations, fields, and methods without extensive duplication of prior module code. In contrast to most literature, our focus is on ensuring modular software evolution using mainstream object-oriented programming languages, instead of resorting to novel language extensions. We present a novel CoCo design pattern that supports type-safe covariantly overridden convert methods to transform earlier data type instances into their newest evolutionary representation to access operations that had been added later. CoCo supports both binary methods and producer methods. We validate and contrast our approach using a well-known compiler construction case study that other researchers have also investigated for modular evolution. Our resulting implementation relies on less boilerplate code, is completely type-safe, and allows clients to use normal object-oriented calling conventions. We also compare CoCo with existing approaches to the Expression Problem. We conclude by discussing how CoCo could change the direction of currently proposed Java language extensions to support closed-world assumptions about data types, as borrowed from functional programming.

KW - Binary method

KW - Expression problem

KW - Producer method

KW - Software evolution

KW - Type safety

UR - http://www.scopus.com/inward/record.url?scp=85115211259&partnerID=8YFLogxK

U2 - 10.4230/LIPIcs.ECOOP.2021.4

DO - 10.4230/LIPIcs.ECOOP.2021.4

M3 - Article in proceedings

AN - SCOPUS:85115211259

T3 - Leibniz International Proceedings in Informatics, LIPIcs

SP - 1

EP - 25

BT - 35th European Conference on Object-Oriented Programming, ECOOP 2021

A2 - Moller, Anders

A2 - Sridharan, Manu

PB - Schloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing

Y2 - 11 July 2021 through 17 July 2021

ER -

ID: 296248521