Dynamic Dispatch for Method Contracts Through Abstract Predicates
Dynamic 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...
- Autores:
- Tipo de recurso:
- Part of book
- Fecha de publicación:
- 2019
- Institución:
- Universidad de Bogotá Jorge Tadeo Lozano
- Repositorio:
- Expeditio: repositorio UTadeo
- Idioma:
- eng
- OAI Identifier:
- oai:expeditiorepositorio.utadeo.edu.co:20.500.12010/17467
- Acceso en línea:
- https://directory.doabooks.org/handle/20.500.12854/30241
http://hdl.handle.net/20.500.12010/17467
- Palabra clave:
- Dispatch
Encapsulation
Ghost
Ciencia de la computación
Tecnología de la información
Sociedad de la información
- Rights
- License
- Abierto (Texto Completo)
id |
UTADEO2_ab7f93716318f8c7a4f27fde190d0056 |
---|---|
oai_identifier_str |
oai:expeditiorepositorio.utadeo.edu.co:20.500.12010/17467 |
network_acronym_str |
UTADEO2 |
network_name_str |
Expeditio: repositorio UTadeo |
repository_id_str |
|
dc.title.spa.fl_str_mv |
Dynamic Dispatch for Method Contracts Through Abstract Predicates |
title |
Dynamic Dispatch for Method Contracts Through Abstract Predicates |
spellingShingle |
Dynamic Dispatch for Method Contracts Through Abstract Predicates Dispatch Encapsulation Ghost Ciencia de la computación Tecnología de la información Sociedad de la información |
title_short |
Dynamic Dispatch for Method Contracts Through Abstract Predicates |
title_full |
Dynamic Dispatch for Method Contracts Through Abstract Predicates |
title_fullStr |
Dynamic Dispatch for Method Contracts Through Abstract Predicates |
title_full_unstemmed |
Dynamic Dispatch for Method Contracts Through Abstract Predicates |
title_sort |
Dynamic Dispatch for Method Contracts Through Abstract Predicates |
dc.subject.spa.fl_str_mv |
Dispatch Encapsulation Ghost |
topic |
Dispatch Encapsulation Ghost Ciencia de la computación Tecnología de la información Sociedad de la información |
dc.subject.lemb.spa.fl_str_mv |
Ciencia de la computación Tecnología de la información Sociedad de la información |
description |
Dynamic 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. |
publishDate |
2019 |
dc.date.created.none.fl_str_mv |
2019 |
dc.date.accessioned.none.fl_str_mv |
2021-02-18T20:16:08Z |
dc.date.available.none.fl_str_mv |
2021-02-18T20:16:08Z |
dc.type.coar.spa.fl_str_mv |
http://purl.org/coar/resource_type/c_3248 |
format |
http://purl.org/coar/resource_type/c_3248 |
dc.identifier.other.none.fl_str_mv |
https://directory.doabooks.org/handle/20.500.12854/30241 |
dc.identifier.uri.none.fl_str_mv |
http://hdl.handle.net/20.500.12010/17467 |
dc.identifier.doi.none.fl_str_mv |
10.1007/978-3-319-46969-0 7 |
url |
https://directory.doabooks.org/handle/20.500.12854/30241 http://hdl.handle.net/20.500.12010/17467 |
identifier_str_mv |
10.1007/978-3-319-46969-0 7 |
dc.language.iso.spa.fl_str_mv |
eng |
language |
eng |
dc.rights.coar.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
dc.rights.local.spa.fl_str_mv |
Abierto (Texto Completo) |
dc.rights.creativecommons.none.fl_str_mv |
https://creativecommons.org/licenses/by/4.0/ |
rights_invalid_str_mv |
Abierto (Texto Completo) https://creativecommons.org/licenses/by/4.0/ http://purl.org/coar/access_right/c_abf2 |
dc.format.extent.spa.fl_str_mv |
30 páginas |
dc.format.mimetype.spa.fl_str_mv |
application/pdf |
dc.publisher.spa.fl_str_mv |
Springer Nature |
institution |
Universidad de Bogotá Jorge Tadeo Lozano |
bitstream.url.fl_str_mv |
https://expeditiorepositorio.utadeo.edu.co/bitstream/20.500.12010/17467/1/644831.pdf https://expeditiorepositorio.utadeo.edu.co/bitstream/20.500.12010/17467/2/license.txt https://expeditiorepositorio.utadeo.edu.co/bitstream/20.500.12010/17467/3/644831.pdf.jpg |
bitstream.checksum.fl_str_mv |
4a3eb88a5e77085640725778470d2d33 abceeb1c943c50d3343516f9dbfc110f a8d1316f745faf6ca1434279c72049ee |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Institucional - Universidad Jorge Tadeo Lozano |
repository.mail.fl_str_mv |
expeditio@utadeo.edu.co |
_version_ |
1818152833528102912 |
spelling |
2021-02-18T20:16:08Z2021-02-18T20:16:08Z2019https://directory.doabooks.org/handle/20.500.12854/30241http://hdl.handle.net/20.500.12010/1746710.1007/978-3-319-46969-0 7Dynamic 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.30 páginasapplication/pdfengSpringer NatureDispatchEncapsulationGhostCiencia de la computaciónTecnología de la informaciónSociedad de la informaciónDynamic Dispatch for Method Contracts Through Abstract PredicatesAbierto (Texto Completo)https://creativecommons.org/licenses/by/4.0/http://purl.org/coar/access_right/c_abf2http://purl.org/coar/resource_type/c_3248Mostowski, WojciechUlbrich, MattiasORIGINAL644831.pdf644831.pdfVer documentoapplication/pdf981214https://expeditiorepositorio.utadeo.edu.co/bitstream/20.500.12010/17467/1/644831.pdf4a3eb88a5e77085640725778470d2d33MD51open accessLICENSElicense.txtlicense.txttext/plain; charset=utf-82938https://expeditiorepositorio.utadeo.edu.co/bitstream/20.500.12010/17467/2/license.txtabceeb1c943c50d3343516f9dbfc110fMD52open accessTHUMBNAIL644831.pdf.jpg644831.pdf.jpgIM Thumbnailimage/jpeg12153https://expeditiorepositorio.utadeo.edu.co/bitstream/20.500.12010/17467/3/644831.pdf.jpga8d1316f745faf6ca1434279c72049eeMD53open access20.500.12010/17467oai:expeditiorepositorio.utadeo.edu.co:20.500.12010/174672021-02-18 15:17:49.604open accessRepositorio Institucional - Universidad Jorge Tadeo Lozanoexpeditio@utadeo.edu.coQXV0b3Jpem8gYWwgU2lzdGVtYSBkZSBCaWJsaW90ZWNhcyBVbml2ZXJzaWRhZCBkZSBCb2dvdMOhIEpvcmdlIFRhZGVvIExvemFubyBwYXJhIHF1ZSBjb24gZmluZXMgYWNhZMOpbWljb3MsIHByZXNlcnZlLCBjb25zZXJ2ZSwgb3JnYW5pY2UsIGVkaXRlIHkgbW9kaWZpcXVlIHRlY25vbMOzZ2ljYW1lbnRlIGVsIGRvY3VtZW50byBhbnRlcmlvcm1lbnRlIGNhcmdhZG8gYWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBFeHBlZGl0aW8KCkV4Y2VwdHVhbmRvIHF1ZSBlbCBkb2N1bWVudG8gc2VhIGNvbmZpZGVuY2lhbCwgYXV0b3Jpem8gYSB1c3VhcmlvcyBpbnRlcm5vcyB5IGV4dGVybm9zIGRlIGxhIEluc3RpdHVjacOzbiBhIGNvbnN1bHRhciB5IHJlcHJvZHVjaXIgZWwgY29udGVuaWRvIGRlbCBkb2N1bWVudG8gcGFyYSBmaW5lcyBhY2Fkw6ltaWNvcyBudW5jYSBwYXJhIHVzb3MgY29tZXJjaWFsZXMsIGN1YW5kbyBtZWRpYW50ZSBsYSBjb3JyZXNwb25kaWVudGUgY2l0YSBiaWJsaW9ncsOhZmljYSBzZSBsZSBkZSBjcsOpZGl0byBhIGxhIG9icmEgeSBzdShzKSBhdXRvcihzKS4KCkV4Y2VwdHVhbmRvIHF1ZSBlbCBkb2N1bWVudG8gc2VhIGNvbmZpZGVuY2lhbCwgYXV0b3Jpem8gYXBsaWNhciBsYSBsaWNlbmNpYSBkZWwgZXN0w6FuZGFyIGludGVybmFjaW9uYWwgQ3JlYXRpdmUgQ29tbW9ucyAoQXR0cmlidXRpb24tTm9uQ29tbWVyY2lhbC1Ob0Rlcml2YXRpdmVzIDQuMCBJbnRlcm5hdGlvbmFsKSBxdWUgaW5kaWNhIHF1ZSBjdWFscXVpZXIgcGVyc29uYSBwdWVkZSB1c2FyIGxhIG9icmEgZGFuZG8gY3LDqWRpdG8gYWwgYXV0b3IsIHNpbiBwb2RlciBjb21lcmNpYXIgY29uIGxhIG9icmEgeSBzaW4gZ2VuZXJhciBvYnJhcyBkZXJpdmFkYXMuCgpFbCAobG9zKSBhdXRvcihlcykgY2VydGlmaWNhKG4pIHF1ZSBlbCBkb2N1bWVudG8gbm8gaW5mcmluZ2UgbmkgYXRlbnRhIGNvbnRyYSBkZXJlY2hvcyBpbmR1c3RyaWFsZXMsIHBhdHJpbW9uaWFsZXMsIGludGVsZWN0dWFsZXMsIG1vcmFsZXMgbyBjdWFscXVpZXIgb3RybyBkZSB0ZXJjZXJvcywgYXPDrSBtaXNtbyBkZWNsYXJhbiBxdWUgbGEgVW5pdmVyc2lkYWQgSm9yZ2UgVGFkZW8gTG96YW5vIHNlIGVuY3VlbnRyYSBsaWJyZSBkZSB0b2RhIHJlc3BvbnNhYmlsaWRhZCBjaXZpbCwgYWRtaW5pc3RyYXRpdmEgeS9vIHBlbmFsIHF1ZSBwdWVkYSBkZXJpdmFyc2UgZGUgbGEgcHVibGljYWNpw7NuIGRlbCB0cmFiYWpvIGRlIGdyYWRvIHkvbyB0ZXNpcyBlbiBjYWxpZGFkIGRlIGFjY2VzbyBhYmllcnRvIHBvciBjdWFscXVpZXIgbWVkaW8uCgpFbiBjdW1wbGltaWVudG8gY29uIGxvIGRpc3B1ZXN0byBlbiBsYSBMZXkgMTU4MSBkZSAyMDEyIHkgZXNwZWNpYWxtZW50ZSBlbiB2aXJ0dWQgZGUgbG8gZGlzcHVlc3RvIGVuIGVsIEFydMOtY3VsbyAxMCBkZWwgRGVjcmV0byAxMzc3IGRlIDIwMTMsIGF1dG9yaXpvIGEgbGEgVW5pdmVyc2lkYWQgSm9yZ2UgVGFkZW8gTG96YW5vIGEgcHJvY2VkZXIgY29uIGVsIHRyYXRhbWllbnRvIGRlIGxvcyBkYXRvcyBwZXJzb25hbGVzIHBhcmEgZmluZXMgYWNhZMOpbWljb3MsIGhpc3TDs3JpY29zLCBlc3RhZMOtc3RpY29zIHkgYWRtaW5pc3RyYXRpdm9zIGRlIGxhIEluc3RpdHVjacOzbi4gRGUgY29uZm9ybWlkYWQgY29uIGxvIGVzdGFibGVjaWRvIGVuIGVsIGFydMOtY3VsbyAzMCBkZSBsYSBMZXkgMjMgZGUgMTk4MiB5IGVsIGFydMOtY3VsbyAxMSBkZSBsYSBEZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLCBhY2xhcmFtb3MgcXVlIOKAnExvcyBkZXJlY2hvcyBtb3JhbGVzIHNvYnJlIGVsIHRyYWJham8gc29uIHByb3BpZWRhZCBkZSBsb3MgYXV0b3Jlc+KAnSwgbG9zIGN1YWxlcyBzb24gaXJyZW51bmNpYWJsZXMsIGltcHJlc2NyaXB0aWJsZXMsIGluZW1iYXJnYWJsZXMgZSBpbmFsaWVuYWJsZXMuCgpDb24gZWwgcmVnaXN0cm8gZW4gbGEgcMOhZ2luYSwgYXV0b3Jpem8gZGUgbWFuZXJhIGV4cHJlc2EgYSBsYSBGVU5EQUNJw5NOIFVOSVZFUlNJREFEIERFIEJPR09Uw4EgSk9SR0UgVEFERU8gTE9aQU5PLCBlbCB0cmF0YW1pZW50byBkZSBtaXMgZGF0b3MgcGVyc29uYWxlcyBwYXJhIHByb2Nlc2FyIG8gY29uc2VydmFyLCBjb24gZmluZXMgZXN0YWTDrXN0aWNvcywgZGUgY29udHJvbCBvIHN1cGVydmlzacOzbiwgYXPDrSBjb21vIHBhcmEgZWwgZW52w61vIGRlIGluZm9ybWFjacOzbiB2w61hIGNvcnJlbyBlbGVjdHLDs25pY28sIGRlbnRybyBkZWwgbWFyY28gZXN0YWJsZWNpZG8gcG9yIGxhIExleSAxNTgxIGRlIDIwMTIgeSBzdXMgZGVjcmV0b3MgY29tcGxlbWVudGFyaW9zIHNvYnJlIFRyYXRhbWllbnRvIGRlIERhdG9zIFBlcnNvbmFsZXMuIEVuIGN1YWxxdWllciBjYXNvLCBlbnRpZW5kbyBxdWUgcG9kcsOpIGhhY2VyIHVzbyBkZWwgZGVyZWNobyBhIGNvbm9jZXIsIGFjdHVhbGl6YXIsIHJlY3RpZmljYXIgbyBzdXByaW1pciBsb3MgZGF0b3MgcGVyc29uYWxlcyBtZWRpYW50ZSBlbCBlbnbDrW8gZGUgdW5hIGNvbXVuaWNhY2nDs24gZXNjcml0YSBhbCBjb3JyZW8gZWxlY3Ryw7NuaWNvIHByb3RlY2Npb25kYXRvc0B1dGFkZW8uZWR1LmNvLgoKTGEgRlVOREFDScOTTiBVTklWRVJTSURBRCBERSBCT0dPVMOBIEpPUkdFIFRBREVPIExPWkFOTyBubyB1dGlsaXphcsOhIGxvcyBkYXRvcyBwZXJzb25hbGVzIHBhcmEgZmluZXMgZGlmZXJlbnRlcyBhIGxvcyBhbnVuY2lhZG9zIHkgZGFyw6EgdW4gdXNvIGFkZWN1YWRvIHkgcmVzcG9uc2FibGUgYSBzdXMgZGF0b3MgcGVyc29uYWxlcyBkZSBhY3VlcmRvIGNvbiBsYSBkaXJlY3RyaXogZGUgUHJvdGVjY2nDs24gZGUgRGF0b3MgUGVyc29uYWxlcyBxdWUgcG9kcsOhIGNvbnN1bHRhciBlbjogaHR0cDovL3d3dy51dGFkZW8uZWR1LmNvL2VzL2xpbmsvZGVzY3VicmUtbGEtdW5pdmVyc2lkYWQvMi9kb2N1bWVudG9zCg== |