No Silver Bullet – Essence and Accident in Software Engineering.

Slides:



Advertisements
Similar presentations
Agenda Definitions Evolution of Programming Languages and Personal Computers The C Language.
Advertisements

© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
INFORMATION TECHNOLOGY IN BUSINESS AND SOCIETY SESSION 20 – HOW SOFTWARE IS MADE SEAN J. TAYLOR.
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.
1 Introduction to Computability Theory Lecture15: Reductions Prof. Amos Israeli.
Chapter 11 Artificial Intelligence and Expert Systems.
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
1 Chapter 1 Software and Software Engineering Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Course Introduction and Overview of Software Engineering Richard N. Taylor ICS 221 Fall 2002.
EE694v-Verification-Lect5-1- Lecture 5 - Verification Tools Automation improves the efficiency and reliability of the verification process Some tools,
SOFTWARE CRISIS SOLUTIONS? © University of LiverpoolCOMP 319slide 1.
“Get outa here!”.
Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Software System Integration
PROGRAMMING LANGUAGES The Study of Programming Languages.
Fundamentals of Information Systems, Second Edition 1 Specialized Business Information Systems Chapter 7.
Essence and Accident in Software Engineering By: Mike Hastings.
INTROSE Introduction to Software Engineering Raymund Sison, PhD College of Computer Studies De La Salle University Software: Definitions,
CSCI-383 Object-Oriented Programming & Design Lecture 4.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
Introduction By: Dr. Javad Razjouyan. Programming Languages.
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.
11 C H A P T E R Artificial Intelligence and Expert Systems.
1 No Silver Bullet Brooks rides again…. 2 Essential Difficulties What are these “essential difficulties” that Brooks is referring to? Complexity Conformity.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Fundamentals of Information Systems, Third Edition2 Principles and Learning Objectives Artificial intelligence systems form a broad and diverse set of.
Large Scale Software Systems Derived from Dr. Fawcett’s Notes Phil Pratt-Szeliga Fall 2010.
PVSSProxy The first piece of the MACS procedure framework (ProShell) Angela Brett.
1 Introduction to Software Engineering Lecture 1.
Yazd University, Electrical and Computer Engineering Department Course Title: Advanced Software Engineering By: Mohammad Ali Zare Chahooki 1 Machine Learning.
1 5 Nov 2002 Risto Pohjonen, Juha-Pekka Tolvanen MetaCase Consulting AUTOMATED PRODUCTION OF FAMILY MEMBERS: LESSONS LEARNED.
Fundamentals of Information Systems, Second Edition 1 Specialized Business Information Systems.
Principles of Information Systems, Sixth Edition Specialized Business Information Systems Chapter 11.
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.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
Overview Of Expert System Tools Expert System Tools : are all designed to support prototyping. Prototype : is a working model that is functionally equivalent.
Design Patterns -- Omkar. Introduction  When do we use design patterns  Uses of design patterns  Classification of design patterns  Creational design.
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.
“No Silver Bullet”. No Silver Bullet  "No Silver Bullet" –– a paper by Fred Brooks, Professor of Computer Science at University of North Carolina in.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
CONCLUSION The conclusion of this work is that it is possible to develop a problem-solving method providing evolutionary computational support to general.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
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.
CSCI 161 Lecture 3 Martin van Bommel. Operating System Program that acts as interface to other software and the underlying hardware Operating System Utilities.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Software Design and Development Development Methodoligies Computing Science.
PRESENTATION 2 CS 5391 Survey of Software Engineering Chang-Ho Lee No Silver Bullet: Essence and Accidents of Software Engineering By Frederick P. Brooks,
Principles of Programming & Software Engineering
The Post Windows Operating System
Why is software engineering worth studying?
Algorithms and Problem Solving
Fred Brooks - A Software Engineering Icon - “No Silver Bullet”
Software Processes.
Informatics 43 – March 31, 2016.
Introduction Artificial Intelligent.
Software System Integration
UFCE8V-20-3 Information Systems Development SHAPE Hong Kong 2010/11
Software Verification, Validation, and Acceptance Testing
Algorithms and Problem Solving
What Is Good Software(Program)?
Presentation transcript:

No Silver Bullet – Essence and Accident in Software Engineering

The Werewolf and the software project Both seem straightforward and familiar at first Then they [can] become a monster. For software, the monster is missed schedule, blown budgets and flawed products, etc. We then cry for a silver bullet, an easy fix to the problem. But it is never there.

-First we need to see that problem is not that software progress is too slow, but that hardware progress is too fast. -Second, we need to understand what rate of progress in software by looking at two different forms of difficulty: 1. Essence – the difficulties inherent in the nature of the software 2. Accidents – the difficulties that, today, attend its production but are not inherent.

The Properties of Essence 1.Complexity of the software -Leads to problems such as product flaws, cost overruns, difficulty of enumerating, and unreliability. -complexity of functions makes it difficult to invoke said functions. -complexity of structure makes it hard to add on new functions -There also arises difficulty in management; complexity makes it project hard to find and control loose ends, learning burdens, and so on.

2. Conformity -the difficulty in this comes from conformation of software to other interfaces. -This cannot be simplified out by any redesign alone. 3. Changeability -Change in software constantly occurs to extend its functionality. -The pressure for extended function come from users who like the basic function and invent new uses for it.

4. Invisibility -The reality of software is not inherently embedded in space. -We find that it to constitute not one, but several, general directed graphs, superimposed one upon another.

Breakthroughs Solving Accidental difficulties 1.High – level languages -It frees a program from much of its accidental complexity. -The most a high-level language can do is to furnish all the construct the programmer imagines in the abstract program.

2. Time-Sharing - It preserves immediacy, and hence enables us to maintain an overview of complexity. -The principle effect is to shorten system response time. 3. Unified programming environments -They attack the accidental difficulties of using programs together, by providing integrated libraries, unified file formats, and pipes and filters.

Technical Developments – Potential Silver Bullets 1.Ada / Other high languages -Not only reflects evolutionary improvements in languages concepts, but embodies features to encourage modern design and modularization concepts However - Biggest payoff came from the first transition, up from the accidental complexities of the machine into the more abstract statement of step by step solutions

2. Object - oriented programming - Two data types: abstract and hierarchical; aka classes - Each removes one more accidental difficulty from the process. -gives designers freedom to express essence of his design without so much syntactical material - Unfortunately, it cannot remove the complexity of design; that in itself is essential, not accidental.

3. Artificial intelligence -There would seem to be hope in a breakthrough. -But, what AI provides, as of this point is the ability to make the program solve a problem the way humans seem to; how to recognize. -Hard thing about building software is deciding what to say, not sayng it.

4. Expert systems -A program containing a geveralized inference engine and a rule base – takes input data assumptions and explore the logical consequences, yielding conclusions and advice. -For software building: suggesting interface rules, advising on testing strategies remembering bug-type frequencies, offering hints, etc. -Difficulties: 1) making easy ways to get from structure specifics to auto generation of diagnostic rules. 2) knowledge acquisition

5. “Automatic” programming -Idea of programs that solves problems based on a statement of problem specifications. -Nothing to the exact extant has been made at this point. -But there are similar examples: Systems for integrating differential equations have also permitted direct specification of the problem; assessing parameters, chose from library of functions and generates solution.

6. Graphical programming -Application of computer graphics to software design. -Not a very promising possibility, considering that visualizing some programs is close to impossible. 7. Program verification -Proving the design is correct before effort is put into implementing ad testing. -A major amount of work is required to be able to fully verify a design, and even then, bugs can still potentially occur.

8. Environment & Tools -hierarchal file systems, generalized tools, etc. -Useful in programming, but the return at this point is marginal. 9. Workstations -It’s helpful to have faster running machines. -Don’t, however, expect a magical programming enhancement.

Promising attacks on the Conceptual Essence 1.Buy Versus Build -Any product is cheaper to buy than to build afresh. -Cost of software has been development cost. -Many users operate own computers without writing a program, yet can solve new problems with the programs they have.

2. Requirements refinement & rapid prototyping - Hardest part of building software is deciding what to build. -Most important function that software builders do for their clients is get from them, the requirements of the product. -A prototype software system is one that simulates the important interfaces and performs the main functions of the intended systems. -Much of present-day software acquisition procedures rests upon the assumptions that one can specify a satisfactory system.

3. Incremental development – grow not build - The system should first be made to run, even though it does nothing useful except call the proper set of dummy subprograms. -It is then fleshed out, with subprograms in turn being developed into actions. 4. Great designers -Software construction is a creative process. -Best designers produce structures that are faster, smaller, simpler, cleaner, and produced with less effort - Like Mozart and Salieri

Any Questions?