Governing Software Development: A Complex Adaptive Systems View
IBM Watson Research Center
Last modified: May 31, 2007
The development of industrial software systems involves hundreds or thousands of individuals working together to produce a product that meets the goals of the organizations that will use it. In this talk, we discuss current work underway at IBM Research to explore using a complex systems approach in software development rather than a process-centric view. A major focus in traditional software engineering has been the use of detailed processes to structure how the organization should perform the intricate set of tasks associated with building a working software system. Although there are years of research behind this “organizational programming” approach, these techniques continue to meet with mixed results, including a higher than desirable proportion of failed projects and dissatisfied development teams and customers. We present an alternative view of the software development organization as a complex adaptive system. Rather than “programming” the organization via processes, we present an approach that relies on bounded self-organization within teams and using the resulting emergent behavior to achieve the desired goals. We discuss how the popular methods that follow the agile manifesto are early instances of this approach. We also present some initial studies using agent-based modeling to demonstrate deeper investigations of these ideas.