Software systems have become ever mode complex so that their development has become ever more difficult. An influential opinion on software engineering, expressed by Fred Brooks in his famous book 'The Mythical Man-Month' [Bro95a], regards the problems of software development as being divided into problems of essence and accident. The essential problems of software development - complexity, conformity, changeability, and invisibility - are the very nature of software. This thesis is motivated by two further ideas stemming from Brooks's book: that overcoming the essential problems of software development still presents a major challenge ('there is no silver bullet' [Bro87]), and that modelling does address the essential problems of software development.
The principal aim of the thesis is to describe and compare two approaches to modelling for software development: one is the Vanilla Framework proposed by Harel [Har91], and another is Empirical Modelling [EMWeb]. In modern softtware engineering, the emphasis has shifted from computer programming to system modelling and development. The latest implementation of Harel's Vanilla Framework - the Rhapsody CASE tool - is discussed in detail, focusing on its mechanisms for visual modelling, model execution and testing, and code generation. A radically different modelling approach, Empirical Modelling, which directs modelling for software system development at the real-world environment from which the system emerges, rather than at the system, is also introduced and illustrated. This emphasis on real-world modelling is consistent with the original aims of object-oriented programming but we propose EM as a new approach to realizing similar objectives.