Exploratory software development is a method that applies to the development of programs whose requirement is initially unclear. In such a context, it is only through protoyping and experimenting on the prototypes that the requirement can be fully developed. A good exploratory software development method must have a short development cycle. This thesis describes our attempt to fulfil this demand. We address this issue in the programming language level. A novel programming paradigm - definitive (definition-based) programming - is developed.
In definitive programming, a state is represented by a set of definitions (a definitive script) and a state transition is represented as a redefinition. By means of a definition, a variable is defined either by an explicit value or by a formula in terms of other variables. Unless this variable is redefined, the relationship between the variables within the definition persists.
To apply this state representation principle, we have developed some definitive notations in which the underlying algebras used in formulating definitions are domain-specific. We have also developed an agent-oriented specification language by which we can model state transitions over definitive scripts. The modelling principles of definitive programming rest on a solid foundation in observation and experiment that is essential for exploratory software development.
This thesis describes how we may combine definitive notations and the agent-oriented programming concept to produce software tools that are useful in exploratory software development. In this way, definitive programming can be considered as a paradigm for exploratory programming.