Methods and systems are described herein for extending configuration
dependent extensible software programs. Classes of a core extensible
software program may be extended by adding a configuration dependent
extension. The extensions may be added statically prior to compiling the
core version of a software program or dynamically at runtime. The
declaration of extensible core classes may include an extensibility
attribute with an indication of whether the class is statically
extensible or dynamically extensible. An object description language is
also described herein for appropriately declaring configuration dependent
extensible classes. Also, a pre-processor is described herein for
processing the object description language to generate a source code
representation of the extensible class declarations and their extensions.
The source code representation may then be used to generate the extended
version of the core software program.