  This paper considers how a formal mathematically-based model can be used in
support of evolutionary software development, and in particular how such a
model can be kept consistent with the implementation as it changes to meet new
requirements. A number of techniques are listed can make use of such a model to
enhance the development process, and also ways to keep model and implementation
consistent. The effectiveness of these techniques is investigated through two
case studies concerning the development of small e-business applications, a
travel agent and a mortgage broker. Some successes are reported, notably in the
use of rapid throwaway modelling to investigate design alternatives, and also
in the use of close team working and modelbased trace-checking to maintain
synchronisation between model and implementation throughout the development.
The main areas of weakness were seen to derive from deficiencies in tool
support. Recommendations are therefore made for future improvements to tools
supporting formal models which would, in principle, make this co-evolutionary
approach attractive to industrial software developers. It is claimed that in
fact tools already exist that provide the desired facilities, but these are not
necessarily production-quality, and do not all support the same notations, and
hence cannot be used together.

Software Engineering