You are on page 1of 20

No Silver Bullet:

Essence and Accidents of Software Engineering

Micah Spears CS5103


October 13, 2007

Presentation Outline
Introduction Background Past Breakthroughs Silver Bullets Hope Summary Discussion

Introduction Author
Fred Brooks Project Manager for OS/360 1999 Turing Award winner Founder of UNC-Chapel Hill CS Department

Introduction Topic
Silver Bullets? Werewolves? Essence [of garlic]?

I thought this was a Software Engineering class

Introduction Evolution
It is! Behold the evolution of software

Software Project

Introduction What
What is the werewolf? Missed Deadlines Blown Software Budgets Flawed Products

Were searching for the silver bullet to slay the monster!

Introduction How
The werewolf derives its strength from software difficulties Essential Difficulties Difficulties inherent to the nature of software (i.e., conceptual construct) Accidental Difficulties Difficulties not inherent to the nature of software (i.e., implementing the construct)

Introduction Why
Software is difficult to build correctly  Conceptual Specification difficult  Conceptual Design difficult  Conceptual Testing difficult Implementation and testing of the system metaphor is the easy part!

Background Software Complexity


Why is software so complex? No two parts are alike, unlike manufactured items Large number of states Large number of functions Large number of structures (data and control) Communicating software models between team members is hard

Background Software Conformity


Why must software conform? Business rules imposed by humans Hardware interface limitations Software arrives late in the system design Software viewed as pure thought, easy to change

10

Background Software Changeability


Why must software suffer from changeability? Software is easier to change than hardware Software is viewed as being infinitely malleable Successful software is adapted for new, unintended uses Successful software often outlives the underlying hardware

11

Background Software Invisibility


Why is software unvisualizable? Software lacks a readily available geometric representation Constitutes several, general directed graphs superimposed one upon another Structure is often terribly complex

12

Past Breakthroughs
High-level Languages Addresses accidental complexities Abstract operations Abstract data types Abstract sequences Abstract communication models Time-Sharing Preserves the immediacy of the problem Unified Programming Environments Unifies the individual programming tools
13

Silver Bullets Accidental Complexity


Small, incremental gains ADA High-level language Object-Oriented Programming Real world structures Artificial Intelligence Software writing software Expert System Expert rules and heuristics Automatic Programming Language abstractions
14

Silver Bullets Accidental Complexity (cont.)

Graphical Programming Coding with graphical objects Program Verification Error-proof programs Programming Environment and Tools IDEs Workstations Compile time improvements

15

Silver Bullets Essential Complexity


Large, significant gains Buy vs. Build Dont reinvent the wheel Rapid Prototyping Better define requirements Incremental Development Grow, dont build Focus on the people problem Training and management of developers

16

Hope Is There Any?


Is there any hope?

A disciplined, consistent effort to develop, propagate, and exploit these [essential complexity] innovations should indeed yield an order-ofmagnitude improvement. There is no royal road, but there is a road.

17

Hope Analogues
Compare to medicine Throw out unproven fixes for demon-possession and sickness Apply persistent effort over time to slowly eradicate the disease Compare to chemistry Throw out alchemy Spend considerable effort to understand atoms, then synthesize gold

18

Summary
No single advance will yield an 10x improvement Accidental difficulties are [mostly] solved Essential difficulties remain [mostly] unsolved

Were making incremental progressand thats all we can hope for in the near future.

19

Discussion
What accidental and essential difficulties have you encountered? Did Brooks predict the buy vs. build solution correctly? Do you agree that great designers are the key to attacking essential difficulties? Have you seen any examples of silver bullets in todays software world?

20

You might also like