Here’s one way to understand the “soft” in software: it is relatively easy to change. But for software designed for the commercial space, where the competitive pressures described above govern a software project’s success or failure, the “soft” feature happens to be one of its riskiest attributes. That’s because software projects are seldom designed and manufactured as in traditional engineering projects—a bridge, for example. While a bridge is engineered through traditional planning and architecture based on the laws of physics, then produced according to an organized plan with a division of labor, software is, at its essence, simply information. Its development typically resembles a more creative process than one bound by the laws of nature.
Walker Royce, IBM Software Group/Rational’s chief software economist, compares software production to movie production: a collaboration involving a team of craftsmen and emerging from the naturally creative process of artistic yet technical people.
Over the past two decades, this unique feature of software has been understood and embraced by iterative development practitioners, who now tend to develop software in stages called “iterations”—with many of these practitioners following agile development practices outlined in the Agile Manifesto. Each iteration delivers a working, functional version of the software under development, so it can be reviewed, tested, and vetted by stakeholders and other teams seeking adherence to the original project requirements. This allows project managers to make smaller, incremental course corrections during the project lifecycle—thus ensuring the final deliverable is close to expectations—as opposed to having separate teams work according to a plan, assemble various components near project end, and discover major failures due to integration or deployment complexities.
For testing teams, the iterative development process integrates quality management and continuous testing across all stages of the project workflow, as opposed to relegating test activity to the end of the project. We will describe the role of iterative development based quality management and continuous testing more fully in future sections.