Write a Blog >>
ECOOP 2021
Sun 11 - Sat 17 July 2021 Online
co-located with ECOOP and ISSTA 2021
Wed 14 Jul 2021 20:00 - 20:20 at ECOOP 1 - Modular Programming / Types (time band 1) Chair(s): Alexander J. Summers
Thu 15 Jul 2021 10:50 - 11:10 at ECOOP 2 - Modular Programming / Types (time band 3) Chair(s): Eelco Visser

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.

Wed 14 Jul

Displayed time zone: Brussels, Copenhagen, Madrid, Paris change

19:40 - 20:40
Modular Programming / Types (time band 1)ECOOP Technical Papers at ECOOP 1
Chair(s): Alexander J. Summers University of British Columbia (UBC)
19:40
20m
Talk
Compositional ProgrammingTOPLAS Journal-First
ECOOP Technical Papers
Weixin Zhang University of Bristol, UK, Yaozhu Sun University of Hong Kong, Bruno C. d. S. Oliveira University of Hong Kong
Pre-print Media Attached
20:00
20m
Talk
Covariant Conversions (CoCo): A Design Pattern for Type-Safe Modular Software Evolution in Object-Oriented Systems
ECOOP Technical Papers
Jan Bessai Technical University Dortmund, George Heineman WPI, Boris Düdder University of Copenhagen
DOI
20:20
20m
Talk
A Dependently Typed Calculus with Polymorphic SubtypingSCICO Journal-First
ECOOP Technical Papers
Mingqi Xue , Bruno C. d. S. Oliveira University of Hong Kong
DOI

Thu 15 Jul

Displayed time zone: Brussels, Copenhagen, Madrid, Paris change

10:10 - 11:10
Modular Programming / Types (time band 3)ECOOP Technical Papers at ECOOP 2
Chair(s): Eelco Visser Delft University of Technology
10:10
20m
Talk
A Dependently Typed Calculus with Polymorphic SubtypingSCICO Journal-First
ECOOP Technical Papers
Mingqi Xue , Bruno C. d. S. Oliveira University of Hong Kong
DOI
10:30
20m
Talk
Compositional ProgrammingTOPLAS Journal-First
ECOOP Technical Papers
Weixin Zhang University of Bristol, UK, Yaozhu Sun University of Hong Kong, Bruno C. d. S. Oliveira University of Hong Kong
Pre-print Media Attached
10:50
20m
Talk
Covariant Conversions (CoCo): A Design Pattern for Type-Safe Modular Software Evolution in Object-Oriented Systems
ECOOP Technical Papers
Jan Bessai Technical University Dortmund, George Heineman WPI, Boris Düdder University of Copenhagen
DOI