Strategic architectural flexibility

Most projects commit to a set of required features and (at best) a most-likely budget and schedule for developing them. This means that, even before the changes start coming, there is roughly a 50% chance that the most-likely budget and schedule are insufficient, and the project is headed for an overrun. Planning for change in a development project is essential. But how much should be invested in architectural flexibility to accommodate this? Too little will incur a high risk of costly late changes and architecture breakage; too much may not leave enough time to implement a sufficient set of critical capabilities. We have been using and refining a model based approach to assist in determining an appropriate degree of architectural flexibility by introducing a modularity factor for the software architecture based on the core capabilities and a set of anticipated changes. This experience has helped us identify the critical success factors for strategically applying architectural flexibility within tight constraints such as cost, quality, or a fixed schedule. We elaborate the critical success factors, present a case study of their application, and their relation to recent research results in such areas as strategic design.