Introduction

Geant4 exploits advanced software engineering techniques based on the Booch/UML Object Oriented Methodology and follows the evolution of the ESA Software Engineering Standards for the development process. The “spiral”, or iterative, approach has been adopted. User requirements were collected in the initial phase and problem domain decomposition, object-oriented methods, and CASE tools were used for analysis and design. This produced a clear hierarchical structure of sub-domains linked by a uni-directional flow of dependencies. This led to a software product which is modular and flexible (a toolkit) and in which the physics implementation is transparent and open to user validation of physics predictions. It allows the user to understand, customise and extend the toolkit in all domains. At the same time the modular architecture allows the user to load only needed components.