Please use this identifier to cite or link to this item: https://doi.org/10.1145/2451436.2451453
DC FieldValue
dc.titlePast expression: Encapsulating pre-states at post-conditions by means of AOP
dc.contributor.authorYi, J.
dc.contributor.authorRobby
dc.contributor.authorDeng, X.
dc.contributor.authorRoychoudhury, A.
dc.date.accessioned2013-07-04T08:43:16Z
dc.date.available2013-07-04T08:43:16Z
dc.date.issued2013
dc.identifier.citationYi, J.,Robby,Deng, X.,Roychoudhury, A. (2013). Past expression: Encapsulating pre-states at post-conditions by means of AOP. AOSD 2013 - Proceedings of the 2013 ACM on Aspect-Oriented Software Development : 133-144. ScholarBank@NUS Repository. <a href="https://doi.org/10.1145/2451436.2451453" target="_blank">https://doi.org/10.1145/2451436.2451453</a>
dc.identifier.isbn9781450317665
dc.identifier.urihttp://scholarbank.nus.edu.sg/handle/10635/42097
dc.description.abstractProviding a pair of pre and post-condition for a method or a procedure is a typical way of program specification. When specifying a post-condition, it is often necessary to compare the post-state value of a variable with its pre-state value. To access a pre-sate value at a post-condition, most contract languages such as Eiffel and JML provide an old expression; old(x) returns a pre-state value of variable x. However, old expressions pose several problems, most notably the lack of encapsulation; old(x) does not encapsulate an object graph rooted from the pre-state value of x. Thus, method-call expressions like x.equals(old(x)) should generally not be used, and instead each field of x should be compared individually as in x.f1==old(x.f1) &amp;&amp; x.f2==old(x.f2). In this paper, we first describe this lack of encapsulation and other problems of old expressions in more detail. Then, to address those problems, we propose our novel past expression along with its formal semantics. We also describe how our past expression can be supported during runtime assertion checking. We explain the involved problems, and show how we solve them. We implement our solution by means of AOP where we exploit various primitive pointcuts including our custom branch pointcut. Copyright © 2013 ACM.
dc.description.urihttp://libproxy1.nus.edu.sg/login?url=http://dx.doi.org/10.1145/2451436.2451453
dc.sourceScopus
dc.subjectBranch pointcut
dc.subjectContract
dc.subjectEncapsulation
dc.subjectOld expression
dc.subjectPast expression
dc.subjectRuntime assertion checking (RAC)
dc.typeConference Paper
dc.contributor.departmentCOMPUTER SCIENCE
dc.description.doi10.1145/2451436.2451453
dc.description.sourcetitleAOSD 2013 - Proceedings of the 2013 ACM on Aspect-Oriented Software Development
dc.description.page133-144
dc.identifier.isiutNOT_IN_WOS
Appears in Collections:Staff Publications

Show simple item record
Files in This Item:
There are no files associated with this item.

Google ScholarTM

Check

Altmetric


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.