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.