No silver bullet
-
Upload
riphah-international-university -
Category
Software
-
view
525 -
download
0
Transcript of No silver bullet
Essence and Accidentsin
Software EngineeringBy
GHUFRAN JAMEEL HASAN
“I believe the hard part of building software is the specification, design, and testing of this conceptual construct, not the labor or representing it.”
NO SILVER BULLET• Of all the monsters that fill the nightmares of our folklore, none terrify more than
werewolves, because they transform unexpectedly from the familiar into horrors.
• Why a silver bullet?
• Silver is identified with the moon-A silver bullet offers the fastest, most powerful, and safest way to slay the fast, powerful, and incredibly dangerous werewolf
• Same fashion of familiar software project , at least as seen by the non-technical manage.
NO SILVER BULLET (Cont..)
• Usually innocent and straightforward but is capable of becoming a monster of
• Missed schedules
• Blown budge
• Flawed products
• We have no silver bullet that make software costs drop as rapidly as computer hardware costs do.
NO SILVER BULLET (Cont..)
• Over decades, we see no silver bullet-no single development, that make improvement in
• Productivity,
• Reliability and
• Simplicity
Essence and Accident in Software Engineering
• All software construction involves Essential and accidental difficulties
• Software, at its core, has these essential difficulties:
• Complexity,
• Conformity,
• Changeability,
• Invisibility
Complexity• Software is complex, even when done right.
• Combinatorial many states, syntax must be just so or else.
• Rich structure, interesting dependencies add to complexity.
• Accidental (as practiced) issues add to complexity.
• Efficient code is usually complicated code.
• Complex code is harder to evolve, results in design drift and even more complexity.
Complexity(Cont..)• Many problems of developing software products derive from this essential
complexity, due to complexity:• Difficulty of communication among team members-results into product flaws, cost
overruns, and schedule delays• Difficulty of enumerating, much less understanding unreliability• Difficulty of invoking function- makes programs hard to use.• Complexity of structure brings the difficulty of extending programs to new functions
without creating side effects
Conformity• Software has to be made to agree to common interfaces,
protocols, standards, etc.• Mostly standards for mastering complexity is arbitrary. Human
institutions and systems must conform these standards and interfaces and they differ from • Interface to interface, and from • Time to time because • They were designed by different people
Changeability• To be successful is to be changed!
• Try to expect future unforeseen uses.
• Buildings can get changed- but the high costs of change
• Software product is found to be useful
• People try it in new cases at the edge of or beyond the original domain.
• The pressures for extended function come chiefly from users who like the basic function and invent new uses for it.
Changeability(Cont..)• In short, the software product is embedded in a cultural matrix of :• Applications, users, laws, and machine vehicles. • These all change continually, and their changes inexorably force
change upon the software product. • In order to keep system flexible and marketable, Software is constantly
subject to pressures for change un like buildings, cars or computers manufactured things are infrequently changed after manufacture.
• Essential changes incorporate in models, serial-no. copies of the same basic design.
Changeability(Cont..)
• We change software because !
• It is easy to update existing systems in the field (in theory)
• We can undo changes if desired (in theory)
Invisibility• Software is invisible and unvisualizable • The floor plan of a building helps both architect and client evaluate
spaces, traffic flows, views. contradictions and omissions become obvious.
• No geometrical representation like map of land, diagram of chips• Although we can use various diagrams to help us visualize aspects of
software (control flow, data dependencies, OMT/UML) • But that's NOT quite the same thing as, say, the blueprints of a
building.
Invisibility(Cont..)• Still Unvisualizable ! Because..
• Even a progress in restricting and simplifying the structures of software, they remain inherently unvisualizable, and thus do not permit the mind to use some of its most powerful conceptual tools.
What about these Silver Bullets???• HLLs
• Frees us from byte-level thinking (accidental complexity).
• IDE
• AI
-Certainly, AI techniques are useful in many application domains, but not as a silver bullet to solve the SE prob.
• Graphical programming e.g UML, SDL, OOD
Promising attacks on conceptual essence• Buy, don't build
• Requirements are the essence of a software system.
• Focusing on getting the requirements right is a direct attack on essential problems.
• Rapid Prototyping:
• Take requirements, build mock up, show to user, analyze feedback, repeat.
• Early feedback means less chance for requirements errors (which are the most expensive), fast turnaround in problem space to narrow misunderstandings and educate customer.
Promising attacks on conceptual essence(Cont..)
• Staged Delivery incremental development……• Get a skeleton system up and running, flesh it out as you go.• Helps to get developers feeling like system is real. • They add their updates as they finish them. • Microsoft (and many others) uses this approach; works well for them.
• Skillful Designers• Find good people and keep them.• Pay them well, encourage them.• Above all, listen to them.
Promising attacks on conceptual essence(Cont..)
• Skillful Designers• However, “great software design” is mostly “pure” design (not
engineering); it’s an act of creativity and innovation balanced against experience and good engineering.
• It’s impossible to teach.
There is no Royal Road, but
there is a road
Good news!We have made great headway in solving the accidental
problems!
Orders of magnitude improvements!
Bad news!Progress on essential problems will be much slower going.
Will Software Engineering
prove to be the silver bullet that slays the
software productivity monster ?
Thank You