\chapter{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, customize and extend the 
toolkit in all domains.  At the same time the modular architecture allows 
the user to load only needed components.

