The stated, accepted philosophy for systems development is that the development process is a well understood approach that can be planned, estimated, and successfully completed. This has proven incorrect in practice.
SCRUM assumes that the systems development process is an unpredictable, complicated process that can only be roughly described as an overall progression. SCRUM defines the systems development process as a loose set of activities that combines known, workable tools and techniques with the best that a development team can devise to build systems.
Since these activities are loose, controls to manage the process and inherent risk are used. SCRUM is an enhancement of the commonly used iterative/incremental object-oriented development cycle. In this paper we introduce a development process, SCRUM, that treats major portions of systems development as a controlled black box.
We relate this to complexity theory to show why this approach increases flexibility and produces a system that is responsive to both initial and additional requirements discovered during the ongoing development.
Numerous approaches to improving the systems development process have been tried. Each has been touted as providing “significant productivity improvements.”
All have failed to produce dramatic improvements. As Grady Booch noted, “We often call this condition the software crisis, but frankly, a malady that has carried on this long must be called normal.” 2 Concepts from industrial process control are applied to the field of systems development in this paper.
Industrial process control defines processes as either “theoretical” (fully defined) or “empirical” (black box). When a black box process is treated as a fully defined process, unpredictable results occur.
A significant number of systems development processes are not completely defined, but are treated as though they are. Unpredictability without control results. The SCRUM approach treats these systems development processes as a controlled black box.