International policy makers are faced with problems so complex that
they cannot reasonably expect to solve them once and for all in a
manner planned in advance. Yet they are committed to handling them in
the most efficient way.
This situation is not remote to that of software designers.
Although the majority of them still work at enforcing the
predictability of, and the control over, the development process, some
have for long now advocated a strategy of incremental development,
based on seamlessness and on validation of intermediate results.
Following this strategy, one could typically start developing a
system, so that it would first be validated through simple single
process implementations. Only later would one want to distribute it.
This scenario is not as simple as it seems. In many existing
designs, the system architecture is fixed in advance, and cannot be
changed.
This paper will try to present a consistent framework to support
late system configuration in the context of statically typed
object-orientation.
All examples will be given in C++, the comments use a C++ based
terminology.