Page 137 -
P. 137

Any changes made to one function can ripple through the rest of the software, causing
                          many unforeseen problems. Even a minor change in the basic behavior of the software
                          usually requires that the programmers make extensive alterations to its design. As the
                          changes pile up, they become increasingly awkward because the programmer needs to
                          patch existing code without breaking it. Each additional design change requires another
                          layer of patching, and most of those patches require some compromise between imple-
                          menting new behavior and not breaking existing behavior. This is a messy and difficult
                          way to code, and tends to introduce many defects and delays after a few iterations.
                          Had someone written down a description of the behavior of the software before the pro-
                          grammers started building it, many of these iterations could have been avoided. It’s much
                          easier to change the behavior of the software on paper than it is to change the code. By
                          adopting a highly iterative software requirements engineering process, the project team
                          can identify most of the changes before a single line of code is written. They may still have
                          to make changes to the software, but those changes will be much smaller and therefore
                          much less risky.

                          Scope Creep
                          Many software projects have been driven to failure by poorly controlled changes. Typi-
                          cally, one of the project team members, users, stakeholders, or decision-makers sees a
                          change that he thinks ought to be implemented. The change seems “small,” so program-
                          mers begin altering the software to include it. But the change turns out to be difficult to
                          implement, and the entire project is thrown off track. This problem is usually referred to
                          as scope creep, because the scope of the project slowly drifts over the course of many incre-
                          mental changes.
                          Scope creep is so common that many project managers don’t realize that it’s a problem at
                          all. They feel that refusing any change request would be considered “inflexible” by others
                          in the organization, and that any project manager or team member who refuses to make a
                          change is not being a team player. But in a team that does not control changes, progress
                          on the project starts to slow as the changes pile up. At every status meeting, the team
                          reports that they are 90% done—but it seems that they have been 90% done for the last 3
                          months, and they don’t seem to be making any headway on that last 10%. Terms like

                          “quagmire” and “death march” get tossed around. The project plan is a joke, a product of
                          wishful thinking that was abandoned months ago. When projects finally do deliver, it feels
                          less like the team successfully met their goal than they finally crawled out from under a
                          suffocating mess.
                          In a project like that, the programmers usually understand the problem. They can point to
                          portions of the code that had to be rewritten several times in order to accommodate
                          changes. The team members know that had they been asked to do the correct project the
                          first time, they could have built it much more quickly and easily, but that it took many
                          changes to finally arrive at the product they have now. And nobody even wants to think
                          about maintenance—the code is a mess, because it had to be patched and hacked so many
                          times.


                                                                                   SOFTWARE REQUIREMENTS  129
   132   133   134   135   136   137   138   139   140   141   142