Assertions had their origin in program verification. For the systems developed in industry, construction of assertions and their use in showing program correctness is a near-impossible task. However, they can be used to show that some key properties are satisfied during program execution. In this paper we first present a survey of the special roles that assertions can play in object oriented software construction. We then analyse such assertions by relating them to the Case Study of an automatic surveillance system. In particular, we address the following two issues:
- What types of assertions can be used most effectively in the context of object oriented software? How can you discover them and where should they be placed?
- During maintenance, both the design and the software are continuously changed. These changes can mean that the original assertions, if present, are no longer valid for the new software. Can we automatically derive assertions for the changed software?