Date Added: Oct 2009
The authors propose Considerate Reasoning, a novel specification and verification technique based on object invariants. This technique supports succinct specifications of implementations which follow the pattern of breaking properties of other objects and then notifying them appropriately. It allows the specification to be concerned only with the properties directly relevant to the current method call, with no need to explicitly mention the concerns of sub-calls. In this way, the specification reflects the division of responsibility present in the implementation, and reflects what they regard as the natural argument behind the design.