“No Silver Bullet”. No Silver Bullet  "No Silver Bullet" –– a paper by Fred Brooks, Professor of Computer Science at University of North Carolina in.

Slides:



Advertisements
Similar presentations
Design, prototyping and construction
Advertisements

INFORMATION TECHNOLOGY IN BUSINESS AND SOCIETY SESSION 20 – HOW SOFTWARE IS MADE SEAN J. TAYLOR.
Delivering peace of mind Architecting for Changes with UML Emmanuel FUCHS C2 Architect.
Introduction to Software Engineering Lecture 3 André van der Hoek.
The Mythical Man-Month by Fred Brooks (I) Published 1975, Republished 1995 Experience managing the development of OS/360 in Central Argument –Large.
No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead.
No Silver Bullet “There is no single development, in either technology or management technique, which by itself promises even one order-of magnitude improvement.
What is Software Engineering? And why is it so hard?
Readings in Computer Science: Software Engineering No Silver Bullet Essence and Accidents of Software Engineering Frederick P. Brooks, Jr. Prepared by.
No Silver Bullet Essence and Accidents of Software Engineering By Frederick P. Brooks Frederick P. Brooks Presentation by Yan Qi
Unified Modeling (Part I) Overview of UML & Modeling
“No Silver Bullet” by F. Brooks
Estimating project size, effort and schedule
Overview of Software Requirements
Kari R. Schougaard, PhD Stud. Værktøjer og Teknikker, 2006 UNIVERSITY OF AARHUS Department of Computer Science Unified Modeling Language Visual language.
Introduction To Rational Rose CS 501 Recitation Session November 1, 1999.
Course Introduction and Overview of Software Engineering Richard N. Taylor ICS 221 Fall 2002.
SOFTWARE CRISIS SOLUTIONS? © University of LiverpoolCOMP 319slide 1.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
Visualization By: Simon Luangsisombath. Canonical Visualization  Architectural modeling notations are ways to organize information  Canonical notation.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
The Software Development Cycle Defining and understanding the problem.
Introduction To System Analysis and design
Introduction 01_intro.ppt
Essence and Accident in Software Engineering By: Mike Hastings.
Chapter 2: Approaches to System Development
Unit 2: Engineering Design Process
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
CST 316 Process. Junior Project Process Provide necessary points of communication for individual effort. Allow a controllable division of labor. Divide.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
No Silver Bullet – Essence and Accident in Software Engineering.
1 SYS366 Lecture 1: Introduction to Systems. 2 What is Software Development? Software Development implies developing some software – but it does not involve.
No Silver Bullet. CS460 - Senior Design Project I (AY2004)2 No silver bullet "No Silver Bullet" –– a paper by Fred Brooks, Professor of Computer Science.
1 No Silver Bullet Brooks rides again…. 2 Essential Difficulties What are these “essential difficulties” that Brooks is referring to? Complexity Conformity.
SOFTWARE DESIGN.
Programming Models & Runtime Systems Breakout Report MICS PI Meeting, June 27, 2002.
Large Scale Software Systems Derived from Dr. Fawcett’s Notes Phil Pratt-Szeliga Fall 2010.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Content The system development life cycle
Slide 2.1 CHAPTER 2 THE SOFTWARE PROCESS. Slide 2.2 Overview l Client, Developer, and User l Requirements Phase l Specification Phase l Design Phase l.
The Next Generation Science Standards: 4. Science and Engineering Practices Professor Michael Wysession Department of Earth and Planetary Sciences Washington.
 What is Modeling What is Modeling  Why do we Model Why do we Model  Models in OMT Models in OMT  Principles of Modeling Principles of Modeling 
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.
Software Prototyping Rapid software development to validate requirements.
Slide 13.1 © The McGraw-Hill Companies, 2002 Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. The Big Idea Software Architecture Lecture 1.
“Planning” or “why use objects?” ACO101: Introduction to Computer Science.
Identifying Objects CSE301 University of Sunderland Harry R. Erwin, PhD.
Pertemuan 1 Introduction to Software Engineering Mata kuliah: T0144 – Advanced Topics in Software Engineering Tahun: 2010.
11 Software Design CSCU 411 Software Engineering.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Chapter 1: Introduction Omar Meqdadi SE 3860 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
By David Sanders Title Explanation  Werewolves are quite terrifying, simply because they transform unexpectedly into horrors. To kill werewolves,
CS3320-Chap21 Office Hours TR 1:00-2:15 PM W 2:30-3:30 PM By appointment.
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
Visualization Programming: “Libraries” and “Toolkits” Class visualization resources CSCI 6361.
1 FPB 11/24/13 Nuggets from The Mythical Man-Month Fred Brooks University of North Carolina at Chapel Hill
THE PHOENIX ARCHITECTURE A New Approach to Student Satellite Software Riley Pack University of Colorado at Boulder.
PRESENTATION 2 CS 5391 Survey of Software Engineering Chang-Ho Lee No Silver Bullet: Essence and Accidents of Software Engineering By Frederick P. Brooks,
Fred Brooks - A Software Engineering Icon - “No Silver Bullet”
Informatics 43 – March 31, 2016.
Accidental and Essential Problems Excise Tasks
Software crisis solutions?
UFCE8V-20-3 Information Systems Development SHAPE Hong Kong 2010/11
Object-Oriented and Classical Software Engineering Fifth Edition, WCB/McGraw-Hill, 2002 Stephen R. Schach
Nuggets from The Mythical Man-Month Fred Brooks University of North Carolina at Chapel Hill ONR_Updated.
“No Silver Bullet” by F. Brooks
Members: Keshava Shiva Sanjeeve Kareena
Presentation transcript:

“No Silver Bullet”

No Silver Bullet  "No Silver Bullet" –– a paper by Fred Brooks, Professor of Computer Science at University of North Carolina in Chapel Hill  (Best known as the father of IBM System/360.  "No Silver Bullet – Essence and Accidents of Software Engineering", IEEE Computer, April  "No Silver Bullet" –– a paper by Fred Brooks, Professor of Computer Science at University of North Carolina in Chapel Hill  (Best known as the father of IBM System/360.  "No Silver Bullet – Essence and Accidents of Software Engineering", IEEE Computer, April 1987.

No Silver Bullet  “Of all the monsters that fill our nightmares of our folklore, none terrify more than werewolves, because they transform unexpectedly from the familiar into horrors.  For these one seeks bullets of silver that can magically lay them to rest.  The familiar software project, at least as seen by the non-technical manager, has something of this character; it is usually innocent and straightforward, but is capable of becoming a monster of missed schedules, blown budgets, and flawed products.”  “Of all the monsters that fill our nightmares of our folklore, none terrify more than werewolves, because they transform unexpectedly from the familiar into horrors.  For these one seeks bullets of silver that can magically lay them to rest.  The familiar software project, at least as seen by the non-technical manager, has something of this character; it is usually innocent and straightforward, but is capable of becoming a monster of missed schedules, blown budgets, and flawed products.”

No Silver Bullet  A silver bullet – something to make software costs drop as rapidly as hardware.  However, as we look over the horizon there is no one single development in either:  technology, or,  management techniques, that by itself will provide even an order of magnitude improvement in productivity.  In this class we will try to find out why.  We will examine the nature of software.  We will examine the proposed bullets.  A silver bullet – something to make software costs drop as rapidly as hardware.  However, as we look over the horizon there is no one single development in either:  technology, or,  management techniques, that by itself will provide even an order of magnitude improvement in productivity.  In this class we will try to find out why.  We will examine the nature of software.  We will examine the proposed bullets.

Nature of Software  Brooks argues that the very nature of software makes it unlikely that there will ever be any silver bullets. 1.Software progress is not slow,  but hardware has advanced even faster,  6 orders of magnitude price-performance gain in 30 years. 2.Difficulties of software technology: why software progress isn’t as fast as hardware.  essence: inherent in the nature of software  accidents: attending its production but not inherent  Brooks argues that the very nature of software makes it unlikely that there will ever be any silver bullets. 1.Software progress is not slow,  but hardware has advanced even faster,  6 orders of magnitude price-performance gain in 30 years. 2.Difficulties of software technology: why software progress isn’t as fast as hardware.  essence: inherent in the nature of software  accidents: attending its production but not inherent

Essence Difficulties  “the hard part of building software is the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation”  The essence of software is a construct of  interlocking components,  data sets,  relationships between data items,  algorithms,  invocations of functions.  “the hard part of building software is the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation”  The essence of software is a construct of  interlocking components,  data sets,  relationships between data items,  algorithms,  invocations of functions.

Essence Difficulties  This essence is abstract: the conceptual construct is the same under many different representations.  The inherent problems are:  complexity,  conformity,  changeability,  invisibility.  This essence is abstract: the conceptual construct is the same under many different representations.  The inherent problems are:  complexity,  conformity,  changeability,  invisibility.

Complexity  Software entities are more complex than perhaps any other human construct because no two parts are alike.  Computers are themselves more complex than most things people build.  Software systems have orders of magnitude more states than a computer.  Scaling up software entities does not merely involve a repetition of the same elements in larger sizes.  Software entities are more complex than perhaps any other human construct because no two parts are alike.  Computers are themselves more complex than most things people build.  Software systems have orders of magnitude more states than a computer.  Scaling up software entities does not merely involve a repetition of the same elements in larger sizes.

Complexity  Complexity increases more than linearly.  Complexity is essential, not accidental:  It just cannot be abstracted away:  difficulty of communication among people  difficulty of enumerating of program states  difficulty of using programs  difficulty of extending programs  Complexity increases more than linearly.  Complexity is essential, not accidental:  It just cannot be abstracted away:  difficulty of communication among people  difficulty of enumerating of program states  difficulty of using programs  difficulty of extending programs

Conformity  The physicist labors on in a firm faith that there are unifying principles put there by God.  No faith faces the software engineer — software is not designed by God it is designed by people.  In many cases software must conform because it is the newest thing on the scene.  Much complexity comes from conformation to other interfaces.  The physicist labors on in a firm faith that there are unifying principles put there by God.  No faith faces the software engineer — software is not designed by God it is designed by people.  In many cases software must conform because it is the newest thing on the scene.  Much complexity comes from conformation to other interfaces.

Changeability  Software is constantly subject to pressures for change.  All successful software gets changed. 1.Successful software is applied to tasks for which it wasn't intended. 2.Successful software outlives the hardware for which it was written.  Software is constantly subject to pressures for change.  All successful software gets changed. 1.Successful software is applied to tasks for which it wasn't intended. 2.Successful software outlives the hardware for which it was written.

Invisibility  Geometric abstractions are powerful tools:  floor plans for architect & client,  scale drawings/models of mechanical parts.  Software is hard to visualize.  A diagram may be many non-planer graphs:  flow of control,  data flow,  dependency patterns.  This impedes the process of design.  It also impedes communication among.  Geometric abstractions are powerful tools:  floor plans for architect & client,  scale drawings/models of mechanical parts.  Software is hard to visualize.  A diagram may be many non-planer graphs:  flow of control,  data flow,  dependency patterns.  This impedes the process of design.  It also impedes communication among.

Solutions to Accidential Difficulties  High level languages:  Free programmer from accidental complexity  Language development approaches closer and closer to the sophistication of the users.  Time sharing - as opposed to batch processing:  Preserves immediacy – slow turn-around is an accidental difficulty.  Unified programming environments:  Attacks difficulties by providing integrated libraries, unified file formats, pipes and filters.  High level languages:  Free programmer from accidental complexity  Language development approaches closer and closer to the sophistication of the users.  Time sharing - as opposed to batch processing:  Preserves immediacy – slow turn-around is an accidental difficulty.  Unified programming environments:  Attacks difficulties by providing integrated libraries, unified file formats, pipes and filters.

Hope from Technical Development  Ada. Java, C++,.NET, … and other HLL advances  “Perhaps the Ada philosophy is more of an advance than the Ada language, for it is the philosophy of modularization, of abstract data types, of hierarchical structuring.”  Ada, Java,.NET, C++, … will not slay the monster, its only another HLL.  The main payoff came in changing from accidental complexity to more abstract statement solutions.  Ada. Java, C++,.NET, … and other HLL advances  “Perhaps the Ada philosophy is more of an advance than the Ada language, for it is the philosophy of modularization, of abstract data types, of hierarchical structuring.”  Ada, Java,.NET, C++, … will not slay the monster, its only another HLL.  The main payoff came in changing from accidental complexity to more abstract statement solutions.

Hope from Technical Development  Expert Systems  “The most important advance offered by this technology is the separation of the application complexity from the program itself.”  Such systems can:  suggest interface rules,  advise on testing strategies,  remember bug-type frequencies,  offer optimization hints.  This is no small contribution... it comes from rich knowledge bases that reflect the real world.  Expert Systems  “The most important advance offered by this technology is the separation of the application complexity from the program itself.”  Such systems can:  suggest interface rules,  advise on testing strategies,  remember bug-type frequencies,  offer optimization hints.  This is no small contribution... it comes from rich knowledge bases that reflect the real world.

Hope from Technical Development  Automatic programming  generation of a program from a statement of the problem specifications.  In most cases, it is the solution method, not the problem, whose specification has to be given.  exceptions: the technique of building generators is very powerful.  Automatic programming  generation of a program from a statement of the problem specifications.  In most cases, it is the solution method, not the problem, whose specification has to be given.  exceptions: the technique of building generators is very powerful.

Hope from Technical Development  Graphical programming:  graphical, or visual programming,  Nothing convincing, has yet emerged: 1.flowcharts are poor representations, 2.screens are too small.  Graphical programming:  graphical, or visual programming,  Nothing convincing, has yet emerged: 1.flowcharts are poor representations, 2.screens are too small.

Hope from Technical Development  Object-orientation - two separate ideas: 1.Abstract data types - encapsulation. 2.Hierarchical types - refinement.  Program verification.  Environments and tools.  Workstations.  Object-orientation - two separate ideas: 1.Abstract data types - encapsulation. 2.Hierarchical types - refinement.  Program verification.  Environments and tools.  Workstations.

PROMISING ATTACKS ON THE ESSENCE  Four hopeful directions: 1.Buy don't build, 2.Requirements refinement and rapid prototyping, 3.Incremental development, 4.Great designers.  Four hopeful directions: 1.Buy don't build, 2.Requirements refinement and rapid prototyping, 3.Incremental development, 4.Great designers.