Title :
Refining object-oriented invariants and dynamic constraints
Author :
Shield, Jamie ; Hayes, Ian J.
Author_Institution :
Sch. of Inf. Technol. & Electr. Eng., Queensland Univ., Brisbane, Qld., Australia
Abstract :
An invariant is a constraint on a class which holds for each externally accessible state of its instances. A dynamic constraint is a dual-state property dictating before to after state behaviour that all methods must adhere to. Both invariants and dynamic constraints are of practical benefit as they allow explicit declaration of high-level behavioural constraints on a class and all its sub-classes. In this paper, formalisations of invariants and dynamic constraints are provided in the refinement calculus. Each is separated into coerced (specification) and extant (implemented or documentation) categories. Refinement rules are provided for strengthening invariants and dynamic constraints. Two separate development paths are identified: (behavioural) sub-classing and private refinement. Refining a class may violate its invariant or dynamic constraint. Sub-classing is a constrained form of refinement that maintains these properties. Revised refinement laws are provided. Private refinement is an alternative to (behavioural) sub-classing. It also maintains properties such as invariants and dynamics constraints and foregoes the constraints of sub-classing. The disadvantage is that private refinement can only be used to implement a class.
Keywords :
formal specification; object-oriented programming; refinement calculus; dual-state property; dynamic constraint; dynamic constraints; high-level behavioural constraints; history properties; invariants; object-orientation; private refinement; refinement calculus; specification; sub-classing; Australia; Calculus; Documentation; History; Information technology; Software engineering;
Conference_Titel :
Software Engineering Conference, 2002. Ninth Asia-Pacific
Print_ISBN :
0-7695-1850-8
DOI :
10.1109/APSEC.2002.1182975