By G.S. Percival
The development of large systems requires that the development approach be defined and refined to improve the efficiency of system development. The traditional and predominant model of large system development has been the "waterfall" model. Recently a model entitled the evolutionary development model has been defined and practiced. The evolutionary model has been used predominately in software intensive systems were the complexity of the system is high and successful developments are incrementally developed. This paper describes the two development models, summarizes relevant concepts from complex systems research, and applies the concepts to the evolutionary development model. This paper represents an application of the complex system theory to the engineering of large systems.
The traditional life cycle for system development is the waterfall model. The waterfall model is based on the top-down flow of requirements and design development. In the waterfall model, emphasis is placed on determining a fixed set of requirements from which the design follows.
Weaknesses of the waterfall model include; dependence on stable requirements, ignoring the principle of bounded rationality, adaptation to emerging user needs, and use of the model on programs of extended length.
In response to these limitations of the waterfall model, several alternative models of system development have been defined. These alternative models evokethe analogy to evolution, whereby the development, through a series of relatively small, iterative steps, converges to a satisfactory system definition. The mechanism of natural selection is built in to these models where the iteration of requirements and design with the test of user satisfaction promotes the satisfactory solutions and promotes the extinction of less favored solutions.
Several questions remain concerning these evolutionary development models. What assurances do the models provide that the iteration of designs with review by users will converge within desired time and cost expenditures? What assurance do the models provide that the iterations of individual components which make up the system will resultant in emergent properties to satisfy the systems mission? What are the traits of a system which provide both security and flexibility? In attempt to add features to the evolutionary development models which will answer these questions, this paper applies some recent research in complex evolutionary systems.
Complexity Science is the study of the general behavior and resulting emergentstructures of systems composed of a large number of interacting, autonomous components. Examples of these types of systems include: non- equilibrium thermodynamic systems, neural networks, molecular biology, ecosystems, economic systems, and social systems. Because of the diverse applicability of systems meeting this description, several cross-disciplinary efforts to study these phenomenon are underway (Prigogine 1984, Waldrop 1992).
Several concepts from complexity research are summarized in this section. These concepts would be introduced briefly here and applied to system development in the next section.
This section applies the ideas of the previous section to system architecture for evolutionary development.
* Application: Treat the System as a Network. A traditional system engineering technique has been the use of an N-squared diagram. The N- squared diagram represents the system as a set of subsystems or components with a set of interconnections. The definition of the subsystems and the associated interconnections are critical to the systems development. The N- squared diagram viewpoint provides a common basis for transferring complexity theories to system development.
* Application: Focus on the Interconnections. Using the number of interconnections as a basis the behavior of changes on the overall system development stability can be predicted. The analysis of N-K Boolean networks (Kauffman 1993), provides guidelines for judging the dynamics based on the interconnections. A typical N-squared diagram shows a range of K values by subsystem. Fixing high-K subsystem places system in evolving regime. This can be accomplished through standard design methods, e.g., isolation through a layered model
* Application: Institute a Stable Core. Stable, core structures from in natural systems. These semi-stable groups of elements for a core around which islands of change provide adaptation. Applying this approach evokes a similar to traditional system engineering heuristics: "Complex systems will develop and evolve within an overall architecture much more readily if there are stable intermediate forms than if there are not". We should then choose to Fix structures critical to the system's mission. User scenarios as the basis for the stable structures.
* Application: Gauging the Complexity of the Development. Using the phase transition analogy, we postulate the following with respect to system development:
* Application: Preparing for Large Changes. In evoloving systems large changes are predicted to occur with less frequency following a power law. Large changes triggered by relatively small events (inherently unpredictable). Use a power law can be used to manage program spending reserves to provide a cushion against the large unpredictable events.
This paper applies the concepts of complexity science to the evolutionary development model of system development. Application of theory brings new insight to existing system development heuristics and new ways to understand system development. It is the challenge of system developers to provide our customers and users with systems which adapt to their needs. Insight can be gained from complex systems research, but there is work to be done before systems exhibit the adaptive flexibility of natural systems