Abstract
The essential rationale for subtype polymorphism is adherence to the 'Open/Closed Principle' [12]: the ability to write framework code in terms of superclasses and subsequently invoke it with any subclass that exhibits 'proper subtyping' via the Liskov Substitution Principle (LSP) [11]. Formally, the LSP states that if ø(t : T) is a provable property of objects t of type T, then ø(s) should be true for objects s of subtype S of T. In practice, such properties have typically been those expressible via 'Design by Contract' [12], specifically preconditions, postconditions and invariants. Such abstraction via subtype polymorphism is intended to insulate against requirements change. However, when new requirements do necessitate a change of contract, the maintenance consequences can be severe. In the (typical) absence of explicit language or tool support, enforcement of proper subtyping is laborious and error-prone: contractual changes typically require manual inspection/repair of the class hierarchy to determine/address violations of the LSP.
Original language | English |
---|---|
Title of host publication | Companion Proceedings for the ISSTA/ECOOP 2018 Workshops |
Place of Publication | New York, NY |
Publisher | ACM |
Pages | 14-16 |
Number of pages | 3 |
ISBN (Electronic) | 9781450359399 |
DOIs | |
Publication status | Published - 16 Jul 2018 |
Event | 2nd International Workshop on Machine Learning techniques for Programming Languages - Amsterdam, Netherlands Duration: 18 Jul 2018 → 18 Jul 2018 Conference number: 2 https://conf.researchr.org/track/ecoop-issta-2018/ML4PL-2018-papers |
Workshop
Workshop | 2nd International Workshop on Machine Learning techniques for Programming Languages |
---|---|
Abbreviated title | ML4PL |
Country/Territory | Netherlands |
City | Amsterdam |
Period | 18/07/18 → 18/07/18 |
Internet address |