No Silver Bullet – Essence and Accident

Download Report

Transcript No Silver Bullet – Essence and Accident

No Silver Bullet – Essence and
Accident
“Not only are there no silver bullets now in view, the very nature of
software makes it unlikely that there will be any – no inventions that
will do for software productivity, reliability, and simplicity what
electronics, transistors, and large-scale integration did for computer
hardware.”
Productivity Equation

Time of task = SUM[(frequency)i X (time)i]
 Conceptual components of the task take
most of the time (deciding what to build)
 In order to increase software productivity
we must focus on this aspect of software
development
Promising Attacks on the
Conceptual Essence

Buy vs. Build
 Requirements refinement - Rapid
Prototyping
 Incremental development
Buy versus Build
“The most radical possible solution for constructing software is
not to construct it at all”





ANY software product is cheaper to buy than to
build
Even at a cost of $100,000, a purchased piece of
software is costing only about as much as one
programmer-year
Delivery is immediate
The cost of software is in development, not
replication. By sharing the cost among a large
number of users, the per-user cost is lowered.
Examples: spreadsheets/payroll apps/accounting
software
Requirements Refinement





Most difficult step in software development
Any mistakes in the requirements cripple the
resulting system and are difficult to rectify later
Clients generally do not know what they want or
know what questions must be answered
Clients almost never communicate the problem to
the software designers in the detail that must be
specified
It is the designers job to iteratively extract and
refine the product requirements from the client
Rapid Prototyping

Prototypes generally simulate important interfaces
and perform major functions of the intended
system
 Prototypes are an important tool designers use to
extract requirements specifications from the client
 Give clients a chance to test versions of the
product they are specifying to designers
 Any problems in requirements are caught early in
the design phase
Incremental Development

Software is not written
 Software is grown by incremental
development
 Every new function or class grows out of
what is already in the program
 Decreases bugs
 Ease of backtracking
 Prevents the project from going off course