Discuss why change is inevitable in complex systems and give examples of software process activities that help predict changes and build software to be more resilient to change.
Complex systems are comprised of interconnected parts, which as a whole exhibit one or more properties, not evident from the specific properties of the individual parts (Rocha, 1999). However, as complex systems are studied by quite an impressive number of fields, including ecology, cybernetics, business, and economy, their definition is subject to the particular context in which they are used (Collier, 2005).
Although the definition and interpretation of a complex system is subject to many variables and to the field that is studying it, there is one aspect regarding this matter which most experts tend to agree with; that change is innate to any complex system. Complex systems are dynamic and thus, they are prone to transformation from their very inception.
A complex system is subject to change for a number of reasons. Firstly, these types of systems are installed in an environment which instantly adapts to the complex system and starts generating new requirements from the very moment it starts using it. These new requirements may occur because only after a process of trial and error can one truly see what functions with a system and what does not; and these things may not have been evident before the installment of the complex system.
As a part of evolution, the user’s own requirements will also change and, in a way, become more demanding. As business policies and goals evolve and transform, new requirements will be generated for complex systems as well. It is this evolution and demand that will prompt the changes that also have to affect the complex system for it to match with what is being asked and expected of it.
Change is essential for a complex system to preserve its usefulness. As long as a system is in accordance with the definition of “complex”, change will occur naturally and automatically in order to increase efficiency and effectiveness (Kirshbaum, 2002). Although change is accepted as a natural occurrence in complex systems, there are certain ways in which this change can be predicted.
Software process activities that help predict change and that build software to be more resilient to it include: design modeling that documents the software’s structure; recording requirements rationale in order to know why a certain requirement is present; tracing requirements to demonstrate the dependent relationship between one requirement and another, and between requirements and the software’s design.
Another process activity useful for the prediction of changes is requirements-driven impact analysis or RIDA, for short. This analysis is used to pinpoint which software entities need to be altered in order to be able to implement a certain requirement (Lindvall, 1998). RIDA, which is conducted during the release planning phase, takes two variables into consideration. Firstly, there is the input, which refers to the existing complex system and the set of requirements. Secondly, there is the output, which represents the specific software entities that have to be changed to meet each requirement.
The main idea one has to understand is that change is not an exception, but rather, the only constant in life (Brooks, 1975). To some extent, changes in complex systems can be predicted and the system can be altered in such a way that it becomes resilient to these transformations. Nonetheless, change in complex systems has to be accepted as an invariable constant and a natural component in evolution.
· Brooks, F (1995). The Mythical Man-Month: Essays on Software Engineering. 2nd ed. US: Addison-Wesley Pub. Co. 15
· Cumming, G. S., and J. Collier. 2005. Change and identity in complex systems. Ecology and Society. Available: http://www.ecologyandsociety.org/vol10/iss1/art29/ [Accessed on 13th January 2013]
· Kirshbaum, D. (2002). Introduction to Complex Systems. Available: http://www.calresco.org/intro.htm [Accessed on 12th January 2013]
Lindvall, M. and Sandahl, K., "How Well do Experienced Software Developers Predict Software Change?," Journal of Systems and Software, vol. 43, no. 1, pp. 19-27, 1998.
· Rocha, L.M. (1999). Complex Systems Modeling: Using Metaphors From Nature in Simulation and Scientific Models. Los Alamos : Los Alamos National Laboratory . 70
These are articles from my masters in software engineering classes.
CTO at ITweetLive.com