Afficher la notice abrégée

dc.contributor.authorMostowski, Wojciech
dc.contributor.authorUlbrich, Mattias
dc.date.accessioned2021-02-10T12:58:18Z
dc.date.issued2017
dc.date.submitted2020-03-18 13:36:15
dc.date.submitted2020-04-01T13:03:06Z
dc.date.submitted2018-03-03 23:55
dc.date.submitted2020-03-18 13:36:15
dc.date.submitted2020-04-01T13:03:06Z
dc.date.submitted2018-02-01 23:55:55
dc.date.submitted2020-03-18 13:36:15
dc.date.submitted2020-04-01T13:03:06Z
dc.identifier644831
dc.identifierOCN: 1030820407
dc.identifierhttp://library.oapen.org/handle/20.500.12657/30616
dc.identifier.urihttps://directory.doabooks.org/handle/20.500.12854/30241
dc.description.abstractDynamic method dispatch is a core feature of object-oriented programming by which the executed implementation for a polymorphic method is only chosen at runtime. In this paper, we present a specification and verification methodology which extends the concept of dynamic dispatch to design-by-contract specifications. The formal specification language JML has only rudimentary means for polymorphic abstraction in expressions. We promote these to fully flexible specification-only query methods called model methods that can, like ordinary methods, be overridden to give specifications a new semantics in subclasses in a transparent and modular fashion. Moreover, we allow them to refer to more than one program state which give us the possibility to fully abstract and encapsulate two-state specification contexts, i.e., history constraints and method postconditions. Finally, we provide an elegant and flexible mechanism to specify restrictions on specifications in subtypes. Thus behavioural subtyping can be enforced, yet it still allows for other specification paradigms. We provide the semantics for model methods by giving a translation into a first order logic and according proof obligations. We fully implemented this framework in the KeY program verifier and successfully verified relevant examples. We have also implemented an extension to KeY to support permission-based verification of concurrent Java programs. In this context model methods provide a modular specification method to treat code synchronisation through API methods.
dc.languageEnglish
dc.rightsopen access
dc.subject.otherdispatch
dc.subject.otherencapsulation
dc.subject.otherghost
dc.subject.otherdispatch
dc.subject.otherencapsulation
dc.subject.otherghost
dc.subject.otherBoolean data type
dc.subject.otherDynamic dispatch
dc.subject.otherFirst-order logic
dc.subject.otherInheritance (object-oriented programming)
dc.subject.otherJava Modeling Language
dc.subject.otherKeY
dc.subject.otherLiskov substitution principle
dc.subject.otherPostcondition
dc.subject.otherPredicate (mathematical logic)
dc.titleChapter Dynamic Dispatch for Method Contracts Through Abstract Predicates
dc.typechapter
oapen.identifier.doi10.1007/978-3-319-46969-0 7
oapen.relation.isPublishedBy9fa3421d-f917-4153-b9ab-fc337c396b5a
oapen.relation.isPartOfBookTransactions on Modularity and Composition I
oapen.relation.isFundedByFP7 Ideas: European Research Council
oapen.relation.isFundedBy7292b17b-f01a-4016-94d3-d7fb5ef9fb79
oapen.collectionEuropean Research Council (ERC)
oapen.collectionEU collection
oapen.pages30
oapen.grant.number258405
oapen.grant.programFP7
dc.relationisFundedBy7292b17b-f01a-4016-94d3-d7fb5ef9fb79
dc.chapternumber1
dc.subjectClassificationthema EDItEUR::U Computing and Information Technology


Fichier(s) constituant ce document

FichiersTailleFormatVue

Il n'y a pas de fichiers associés à ce document.

Ce document figure dans la(les) collection(s) suivante(s)

Afficher la notice abrégée

open access
Excepté là où spécifié autrement, la license de ce document est décrite en tant que open access