Reverse bifurcations in software development
University of Maribor
FERI, University of Maribor
Last modified: June 12, 2006
Complex systems share certain features like having a large number of elements, possessing high dimensionality and representing an extended space of possibilities. Such systems are hierarchies consisting of different levels each having its own principles, laws and potential structures shortly called emergent properties.
Computer programs, including popular information systems, usually consist of (or at least they should) number of entities like subroutines, modules, functions, etc., on different hierarchical levels. Concerning “laws of software engineering” or the concepts of programming languages the emergent characteristics of above entities must be very different from the emergent characteristics of the program as the whole. Indeed, the claim that programming techniques as stepwise refinement, top-down design, bottom up design or more modern object oriented programming are only meaningful if different hierarchical levels of a program have distinguishable characteristics – clearly qualify computer programs as the class of complex systems that should be developed using a “complex development process”.
A very popular and interesting concept in the complexity sciences is the Logistic map defined by the following function
Computer programs are normally developed and maintained by an iterative process – the computer programs evolves trough different successive versions (Figure 1). In the beginning we have to thought about many ideas representing different correct or incorrect solutions – creativity is large, entropy is large information content is low. In the next phase the correct and optimal solutions emerge – entropy and the number of ideas are reduced as the need for creativity, contrary the information content is enlarged. In the last phase we are working with a single idea (probably a very complex one), creativity and entropy reaches the minimum and information content the maximum (Single idea phase). Additionally, modern software development methodologies advise to work on the small modules first and then slowly integrate modules into larger units. Thereafter correlation between variables, concepts, ideas are on the short range in the beginning and then extend toward longer ranges.
Above phases can be matched with the three phases of the Logistic map graph: namely chaos, bifurcation and normal phase (bifurcation’s represent the ideas, viewpoints, beliefs – simply ideas in the further text) but in the reverse order – thereafter we Called it the Reverse logistic model of software development. Since the phase of a logistic map can be easily identified by the equation control parameter ?, we can use the “logistic map ? software development process match” to test the hypothesis that our model is correct, assuming that we can measure the information content/entropy and correlation of each single program version. In our experiments we used the alpha metric.
The theory presented in the previous sections has been tested on real world projects consisting of few thousands modules and following them trough few hundreds versions. The “logistic/chaotic” behaviour has been observed in most of them.