The precision of formal specifications allows us to prove program correctness.
Even if formal methods are not used throughout the software project, formalisation
improves our understanding of the problem. Formal specifications
are amenable to automated analysis and consistency checking. However using
them is challenging. Customers do not understand formal notations.
Specifiers have difficulty tackling large problems. Once systems are built,
formal specifications quickly become outdated during software maintenance.
A method of developing formal specifications using concrete scenarios is proposed
to tackle the disadvantages just mentioned.
A concrete scenario describes system behaviour with successive steps.
The pre- and post-states of scenario steps are expressed with actual data
rather than variables. Concrete scenarios are expressed in a natural language
or formal notation. They increase customer involvement in the creation
of formal specifications. Scenarios may be ranked by priorities allowing
specifiers to focus on a small part of the system. Formal specifications are
constructed incrementally. New requirements are also captured in concrete
scenarios which guide the modification of formal specifications.
On one hand, concrete scenarios assist the creation and maintenance of
formal specifications. On the other hand, they facilitate program correctness
proofs without using conventional formal specifications. This is achieved by
adding implementation details to customer scenarios. The resulting developer
scenarios, encapsulating decisions of data structures and algorithms,
are generalised to operation schemas. With the implementation details, the
schemas written in formal notations are programs rather than specifications.
A Doctoral Thesis submitted in partial fulfilment of the requirements for the award of Doctor of Philosophy of Loughborough University.