Covariant Conversions (CoCo): A Design Pattern for Type-Safe Modular Software Evolution in Object-Oriented Systems (Artifact)

Authors Jan Bessai, George T. Heineman, Boris Düdder



PDF
Thumbnail PDF

Artifact Description

DARTS.7.2.4.pdf
  • Filesize: 0.54 MB
  • 4 pages

Document Identifiers

Author Details

Jan Bessai
  • Technische Universität Dortmund, Germany
George T. Heineman
  • Worcester Polytechnic Institute, MA, USA
Boris Düdder
  • University of Copenhagen, Denmark

Acknowledgements

Creating the live image would have been impossible without the marvelous instructions by Will Haley [Will Haley, 2020].

Cite AsGet BibTex

Jan Bessai, George T. Heineman, and Boris Düdder. Covariant Conversions (CoCo): A Design Pattern for Type-Safe Modular Software Evolution in Object-Oriented Systems (Artifact). In Special Issue of the 35th European Conference on Object-Oriented Programming (ECOOP 2021). Dagstuhl Artifacts Series (DARTS), Volume 7, Issue 2, pp. 4:1-4:4, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2021)
https://doi.org/10.4230/DARTS.7.2.4

Artifact

Abstract

This artifact contains code illustrating the Covariant Conversions (CoCo) design pattern in Java, Scala, and C#. The CoCo pattern shows how to solve the expression problem in modern object-oriented languages without the need for language extensions. It structures code so that adding new classes and new methods is possible without changes to existing implementations. The artifact is a live image of a Linux machine for archival purposes. It allows to boot into an environment which has an IDE installed to inspect the code. Build infrastructure to compile, run, test, and benchmark the code without internet access is also included.

Subject Classification

ACM Subject Classification
  • Software and its engineering → Software evolution
  • Software and its engineering → Design patterns
  • Software and its engineering → Abstraction, modeling and modularity
Keywords
  • Expression problem
  • software evolution
  • type safety
  • producer method
  • binary method

Metrics

  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    0
    PDF Downloads

References

  1. Jan Bessai, George T. Heineman, and Boris Düdder. Covariant conversions (coco): A design pattern for type-safe modular software evolution in object-oriented systems (artifact), 2021. URL: https://doi.org/10.5281/zenodo.4756838.
  2. Jan Bessai, George T. Heineman, and Boris Düdder. Github repository for this artifact, 2021. URL: https://github.com/JanBessai/ecoop2021artifacts.
  3. Devuan GNU+Linux, 2021. URL: https://www.devuan.org/.
  4. Will Haley. Create a custom debian live environment (CD or USB), 2020. URL: https://willhaley.com/blog/custom-debian-live-environment/.
  5. Linux software repository for microsoft products, 2021. URL: https://docs.microsoft.com/en-us/windows-server/administration/linux-package-repository-for-microsoft-software.
  6. Benjamin C. Pierce. Types and programming languages. MIT Press, 2002. URL: https://www.cis.upenn.edu/~bcpierce/tapl/.
  7. Pavlo Rudy. VSCodium Repository, 2021. URL: https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo.
  8. Philip Wadler. The expression problem, 1998. E-Mail to the Java Genericity Mailing List. URL: http://homepages.inf.ed.ac.uk/wadler/papers/expression/expression.txt.
  9. Weixin Zhang and Bruno C. d. S. Oliveira. EVF: an extensible and expressive visitor framework for programming language reuse. In Peter Müller, editor, 31st European Conference on Object-Oriented Programming, ECOOP 2017, June 19-23, 2017, Barcelona, Spain, volume 74 of LIPIcs, pages 29:1-29:32. Schloss Dagstuhl - Leibniz-Zentrum für Informatik, 2017. URL: https://doi.org/10.4230/LIPIcs.ECOOP.2017.29.
  10. Weixin Zhang and Bruno C. d. S. Oliveira. CASTOR: Programming with extensible generative visitors. Sci. Comput. Program., 193:102449, 2020. URL: https://doi.org/10.1016/j.scico.2020.102449.
Questions / Remarks / Feedback
X

Feedback for Dagstuhl Publishing


Thanks for your feedback!

Feedback submitted

Could not send message

Please try again later or send an E-mail