Problems
The whole of the software's features need to be greater than the sum of the parts.
Context
The developer needs to write powerful software, and is unhindered by customer requests.
Solution
Start with FeatureDrivenDevelopment and get the initial prototype working as soon as possible. Once a few features are in, focus on features that multiply the value of other features. Use unit tests heavily to maintain the system's stability. As each feature gains power from other features, a multiplicative effect is achieved. At some point in the development process, the power of the features will have grown exponentially until reaching critical mass. As each feature is implemented, it is compatible with other features. i.e. Adding a feature doesn't just complete the feature, it enhances the other features.
Resultant Context When critical mass is achieved, the software becomes very powerful if the proper combination of features is used.
Example A 3d modeling program must be built to support a wide range of operations on polygons, pixels, scenegraphs, etc. A simple feature such as bend can be used by all polygonal data, granting the software much more power than
Known Uses
Particularly useful in graphical, game, or simulation programs. Synergistic with the SymbolicUserInterface and TheInterfaceIsTheUserData patterns.
Problems with this pattern:
It is difficult to describe why features in this model are any different from normal features. The difference is in the way they are thought about and therefore implemented. Critical mass features are designed to multiply the effect of features, not just append.