Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
NO SILVER BULLET
Essence and Accident in
Software Engineering
1
Frederick Phillips Brooks JR
Education: Duke University 1953
Havard University 1956
Fields: CS, OS, SE
Achievements: OS/36...
3
“There is no single development, in
either technology or management
technique, which by itself promises
even one order o...
What are werewolves and
Silver Bullets?
• Werewolves:
Human with the ability to shape shift into a
wolf.
Popular movie top...
Essence:
The most basic and important quality
of something.
Accident:
Those difficulties that today attend its
production ...
All software involves essential difficulties and
accidental difficulties.
ESSENTIAL DIFFICULTIES:
• Software, as its core ...
Software is much more complex than any other human
construct.
Problems caused:
Technical:
• Decrease of reliability, exten...
CONFORMITY:
 Software has to be made to agree to common
interface, protocols, standards etc.
 Mostly standards for maste...
CHANGEABILITY:
Software entity is constantly
subject to pressure for change.
All successful software get
changed.
Chang...
INVISIBLITY:
10
 Software is invisible and unvisualisable.
It is also very difficult even to visualize since
there are m...
PAST BREAKTHROUGHS SOLVED
ACCIDENTAL DIFFICULTIES:
 The accidental qualities are all
about implementation and testing,
an...
12
High level languages:
High level languages allow programmers to
express implementation with concepts closer to that
whi...
HOPE FOR SILVER:
Is there any potential solution now a days?
 Ada and other high-level language advances?
 Object-orient...
14
Ada & other High-Level Language Advances:
One of the most touted development, not only reflects
evolutionary improvemen...
15
Artificial
Intelligence:
Revolutionary breakthrough
Parnas has clarified the terminological
choas:
AI-1: The use of co...
16
Expert System:
A program containing a
generalized interface
engine and rule base, takes
input data and
assumptions, exp...
17
Automatic Programming:
“Automatic programming always has
been a euphemism for programming
with a higher level language ...
18
Environment and tools:
 The general pain of all these tools and environments is
remembering to use them…
 For example...
Promising Attacks on the Essence
Buy versus build:
• In the mid 1980s, the software market
was still small. The market is...
20
Requirements Refinement and Rapid
Prototyping:
 Helps decide what to build
 Use to clarify requirement
 A means to i...
21
Great designers:
Be on the look out for them, when you find them,
don't let go!
some people are just better at softwa...
22
23
Upcoming SlideShare
Loading in …5
×

No silver-bullllet-1

NO SILVER BULLETS-Fredrick Brooks

  • Login to see the comments

No silver-bullllet-1

  1. 1. NO SILVER BULLET Essence and Accident in Software Engineering 1
  2. 2. Frederick Phillips Brooks JR Education: Duke University 1953 Havard University 1956 Fields: CS, OS, SE Achievements: OS/360 “The Mythyical Man-Month” Awards&Honours: IEEE Virtual Reality Career Award(2010) And more than 25 2
  3. 3. 3 “There is no single development, in either technology or management technique, which by itself promises even one order of magnitude improvement within a decade in productivity, in reliability, in simplicity.”
  4. 4. What are werewolves and Silver Bullets? • Werewolves: Human with the ability to shape shift into a wolf. Popular movie topic. Oldest monster legend. • Silver Bullet(or a magical bullet): The only thing that can kill werewolves. Movie name (Horror 1985). 4
  5. 5. Essence: The most basic and important quality of something. Accident: Those difficulties that today attend its production but that are not inherent. 5
  6. 6. All software involves essential difficulties and accidental difficulties. ESSENTIAL DIFFICULTIES: • Software, as its core has these essential difficulties. I. Complexity II. Conformity III. Changeability IV. Invisibility 6 ESSENTIAL DIFFICULTIES AND ACCIDENTAL DIFFICULTIES:
  7. 7. Software is much more complex than any other human construct. Problems caused: Technical: • Decrease of reliability, extensibility, safety. Management: • Difficulty of communication between team members. • 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. 7 COMPLEXITY:
  8. 8. CONFORMITY:  Software has to be made to agree to common interface, protocols, standards etc.  Mostly standards for mastering complexity is arbitrary. Human institutions and systems must conform these standards and interface and they differ from: • Interface to interface. • Time to time. • Designed by different people. 8
  9. 9. CHANGEABILITY: Software entity is constantly subject to pressure for change. All successful software get changed. Change comes in two ways: • People use the software in ways not originally foreseen in the design and want better support for that • The physical machine/OS changes underneath us. 9
  10. 10. INVISIBLITY: 10  Software is invisible and unvisualisable. It is also very difficult even to visualize since there are many ways to look at the same design: “the reality of software is not inherently embedded in space.” This inhibits communication of structure and design.
  11. 11. PAST BREAKTHROUGHS SOLVED ACCIDENTAL DIFFICULTIES:  The accidental qualities are all about implementation and testing, and these have been solved almost as well as they are likely to be solved, so don’t expect many more breakthroughs. 11
  12. 12. 12 High level languages: High level languages allow programmers to express implementation with concepts closer to that which we use in design. Unified Programming Environment: Unified Programming Environment enable related individual tools to work together in an automatic manner. Time Sharing: Timesharing eliminates the slow turnaround of batch programming and keeps fresh in mind the grasp of complex system.
  13. 13. HOPE FOR SILVER: Is there any potential solution now a days?  Ada and other high-level language advances?  Object-oriented programming?  Artificial Intelligence?  Expert System?  Automatic Programming?  Graphical Programming?  Program Verification?  Environment and Tools?  Workstation? 13
  14. 14. 14 Ada & other High-Level Language Advances: One of the most touted development, not only reflects evolutionary improvements in language concepts but personify features to encourage modern design. It is just another high level language but no proved to be a silver bullet. Object Oriented Programming: It is a programming language model organized around objects rather than "actions" and data rather than logic. Has two classes: Abstract data types. Hierarchical types.
  15. 15. 15 Artificial Intelligence: Revolutionary breakthrough Parnas has clarified the terminological choas: AI-1: The use of computers to solve problems that previously could only be solved by applying HI. AI-2: The use of a specific set of programming techniques knows as heuristic or rule based programming.
  16. 16. 16 Expert System: A program containing a generalized interface engine and rule base, takes input data and assumptions, explore the inferences derivable from the rule base, yields conclusion and advice and explains its results by retracting its reasoning for the user.
  17. 17. 17 Automatic Programming: “Automatic programming always has been a euphemism for programming with a higher level language than was presently available to the programmer” Graphical Programming: Computer graphics which has been applied successfully in other fields, seems to be able to play a role in software design. Program Verification: Program verification seems promising to avoid immense effort upon implementation and testing by eliminating errors in design phase.
  18. 18. 18 Environment and tools:  The general pain of all these tools and environments is remembering to use them…  For example, configuration management systems depend on programmers’ checking modules out for working on them and on programmers’ checking modules back in when the programmers are finished with working on them.  When a programmer fails to check a module out, check a module back in, or to meet with another, the system loses control and the completeness and consistency it promises cannot be guaranteed any more. Workstation: • More powerful computers surely facilitate software development.
  19. 19. Promising Attacks on the Essence Buy versus build: • In the mid 1980s, the software market was still small. The market is becoming large enough. So, Don't develop software when you can avoid it. 19
  20. 20. 20 Requirements Refinement and Rapid Prototyping:  Helps decide what to build  Use to clarify requirement  A means to identify requirements, to try out various ideas, to do usability testing,etc  To the extent that it succeeds, it delays and moderates the B-L upswing.  Make the new software system work like our old manual information-processing system.
  21. 21. 21 Great designers: Be on the look out for them, when you find them, don't let go! some people are just better at software design than others. Try to identify them, keep in mind them in your organization, and spoil them so that they get the skills and recompense that they need. Incremental development-grow, not building, software:  This helps to upgrade requirements, prove the design, and improves optimism.  Don't build software, grow it. The same benefits can be realized on large projects as on my small ones.
  22. 22. 22
  23. 23. 23

×