Most systems are built to be in service over a long period of time. However, planning for productive use over a long period of time is difficult, since the future is fraught with uncertainty due to market, social, economic, political, and technological forces. These forces combine to determine the utility of a system.
Systems may react to these forces by undergoing a stream of changes. Individually, such changes are seemingly innocuous and are made to maintain or increase utility of the system. However, as the changes increase in number, they can become problematic over time. The system may eventually become hard to transform in reaction to forces of change. When changes are too costly or time consuming to make, the system ceases to evolve, does not fulfill its business or mission goals, and falls into obsolescence.
The central question for this work has been: How can organizations manage an uncertain future by planning for system evolution in a way that optimizes the likelihood ongoing system usefulness? There are (at least) two fundamental and interrelated aspects to this problem:
- The economic aspect: how to plan the system's "trajectory" of capabilities so as to maximize its utility in the future by appropriately anticipating, preparing for, sequencing and grouping a future set of a capabilities. The results of our initial efforts in methodologically addressing the economic aspect are collected in the following technical reports:
The design aspect: how to measure and analyze the difficulty of reaching a desirable future state given today's state and how to design the system so that desirable states are easier to reach.
Of course these two questions are intertwined. Engineering decisions are always subject to economic considerations, and a system's portfolio of features is always constrained by what is feasible from an engineering perspective.
Refining the problem, we wished to answer the following questions:
- How can the quality of a deficient architecture be improved?
- How can a system be adapted to support uncertain business goals or requirements?
- What is the value of investing in the architecture?
- What alternative architectures provide the greatest flexibility to support future requirements?
- How resilient is the system to planned and unplanned change?
In order to attack the problem, we investigated techniques for exploring the architecture design space along with release planning, continued to investigate the applicability of economic theories, such as real options, portfolio theory, and utility theory, and leveraged the generality and composability of SEI architecture-centric practices. We have applied these techniques to create need-specific methods for customer problems.
Software Architecture Training and Publications