Over these six decades there have been so many

This preview shows page 26 - 28 out of 502 pages.

Over these six decades there have been so many software disasters that they are clichés, captured by short phrases that software engineers have memorized since they’ve heard the stories so many times: Ariane 5 rocket explosion , Therac-25 lethal radiation overdose, Mars Climate Orbiter disintegration, FBI Virtual Case File project abandonment, and so on. However, it is hard to recall a single comparable computer hardware disaster. Why hasn’t software engineering been as successful as hardware engineering? The reasons have to do with differences in nature of the two media and the subsequent cultures that have grown up around them. Let us start with the one major difference—product lifetimes—and the resulting development processes for hardware and software, before discussing two big ideas that are similar for software and hardware: assurance and productivity. Unlike hardware, software is expected to grow and evolve over time. Whereas hardware designs must be declared finished before they can be manufactured and shipped, initial software designs can easily be shipped and later upgraded over time. Basically, the cost of upgrade in the field is astronomical for hardware and affordable for software. The Oldest Living Program might be MOCAS (“Mechanization of Contract Administration Services”), which was originally purchased by the US Department of Defense in 1958 and was still in use as of 2005. Hence, software can achieve a high-tech version of immortality, potentially getting
better over time while generations of computer hardware decay into obsolescence. This fundamental difference in the two media has led to different customer expectations, business models, and engineering development processes. Since a hardware product is not going to get any better over time, customers expect it to be basically bug-free when it arrives. If it’s not working properly, the assumption is there had to have been a flaw in manufacturing of this particular item, and so it should be returned and replaced. If too many customers return products, the company loses money. Customers are considerably more forgiving for software, assuming if there are problems when software is installed, they just need to get the latest version of it, presumably with their bugs fixed. Moreover, they expect to get notices about and install improved versions of the software over the lifetime that they use it, perhaps even submitting bug reports to help developers fix their code. They may even have to pay an annual maintenance fee for this privilege! Just as novelists fondly hope that their brainchild will be read long enough to be labeled a classic—which for books is 100 years!—software engineers should hope their creations would also be long-lasting. Of course, software has the advantage over books of being able to be improved over time. In fact, a long software life often means that others maintain and enhance it, letting the creators of original code off the hook.

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture