TY - GEN
T1 - Contract-based verification for aspect-oriented refactoring
AU - Ubayashi, Naoyasu
AU - Piao, Jinji
AU - Shinotsuka, Suguru
AU - Tamai, Tetsuo
PY - 2008
Y1 - 2008
N2 - Refactoring is a method for improving a program's structure without changing its external behavior. Refactoring is a promising approach to assist reliable and safe software evolution. However, in aspect-oriented programming (AOP), it is not necessarily easy for a programmer to understand the overall behavior of a woven program because the weaving modifies the behavior. Unexpected bugs can be embedded in a program if the programmer does not modify the program carefully. In order to deal with this problem, we propose the notion of RbC (Refactoring by Contract), a technique to verify refactoring based on contracts. Contracts in RbC consist of preconditions, postconditions, and invariants. A precondition states under which conditions refactoring can be applied. A postcondition states what condition should be verified after refactoring has been accomplished, and an invariant states what conditions refactoring should preserve. After introducing RbC, we check whether refactoring preserves behavior and whether it actually improves internal structure. A contract is described in COW (COntract Writing language), a language for describing a predicate based on first-order logic. COW provides a set of primitive predicates that represent program structure and behavior. Adopting our approach, software evolution in AOP becomes reliable and safe.
AB - Refactoring is a method for improving a program's structure without changing its external behavior. Refactoring is a promising approach to assist reliable and safe software evolution. However, in aspect-oriented programming (AOP), it is not necessarily easy for a programmer to understand the overall behavior of a woven program because the weaving modifies the behavior. Unexpected bugs can be embedded in a program if the programmer does not modify the program carefully. In order to deal with this problem, we propose the notion of RbC (Refactoring by Contract), a technique to verify refactoring based on contracts. Contracts in RbC consist of preconditions, postconditions, and invariants. A precondition states under which conditions refactoring can be applied. A postcondition states what condition should be verified after refactoring has been accomplished, and an invariant states what conditions refactoring should preserve. After introducing RbC, we check whether refactoring preserves behavior and whether it actually improves internal structure. A contract is described in COW (COntract Writing language), a language for describing a predicate based on first-order logic. COW provides a set of primitive predicates that represent program structure and behavior. Adopting our approach, software evolution in AOP becomes reliable and safe.
UR - http://www.scopus.com/inward/record.url?scp=50649105292&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=50649105292&partnerID=8YFLogxK
U2 - 10.1109/ICST.2008.36
DO - 10.1109/ICST.2008.36
M3 - Conference contribution
AN - SCOPUS:50649105292
SN - 076953127X
SN - 9780769531274
T3 - Proceedings of the 1st International Conference on Software Testing, Verification and Validation, ICST 2008
SP - 180
EP - 189
BT - Proceedings of the 1st International Conference on Software Testing, Verification and Validation, ICST 2008
T2 - 1st International Conference on Software Testing, Verification and Validation, ICST 2008
Y2 - 9 April 2008 through 11 April 2008
ER -