20-04-2012, 04:47 PM
Software Engineering
SE-I.pdf (Size: 915.65 KB / Downloads: 211)
introduction
These software development projects went badly wrong. Costs are difficult to quantify. Apart
from the direct cost of an abandoned project, there could be litigation, loss of reputation, etc. In the
case of the Denver airport, each day’s delay in opening cost roughly $1.1 million. The system finally
went into operation in October 1995, after a manual backup had been built at a cost of $50 million.
The same article describes $144 million spent on a failed air traffic control system. Another part
of this system is $1 billion over budget!
Taurus was abandoned after it became clear that it would probably never work [23].
The figure for the London Ambulance Service includes £1.5 million for the recent project and
£7.5 million for a previous failed attempt. It is impossible to say whether the ensuing disruption cost
any lives.
Anecdotes prove little, but statistics show that far too many large developments fail. We can
learn from individual disasters that come to light. Many others are hushed up. By comparison: one
could talk of many gruesome plane crashes, but they are a tiny minority of flights; flying is one of
the safest modes of travel.
Intrinsic Difficulties with Software
complexity of the required functions
conformity with existing artifacts & standards
changeability : demands for additional/revised functions
invisibility of structure & operation: no useful drawings or models
The three problems — knowledge, requirements, communication — are interrelated. Lack of
domain knowledge leads to inaccurate requirements, which hinder communication, etc. The ‘natural
tension between getting requirements right and getting them stable’ could be eased if the procurer
would appoint a single person as its representative. Requirements issues occur throughout a development,
not just at the official requirements phase.
The basic waterfall model does not account for these problems, which are characteristically
human. It does not take account of the role of learning and negotiation. Boehm’s spiral model is
more elaborate and calls for risk analysis at each iteration, when key decisions are made.
What does a good track record signify? If the software developer has already built a similar
system, then it ought to have some means of tackling these problems. In particular, it must already
possess the necessary domain knowledge. Yet the CONFIRM disaster involved the developer of one
of the world’s most successful reservation systems.