“No Silver Bullet” by F. Brooks

Slides:



Advertisements
Similar presentations
Object-Oriented Software Development CS 3331 Fall 2009.
Advertisements

© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
Introduction to Databases
CS 3500 SE - 1 Software Engineering: It’s Much More Than Programming! Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman,
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
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?
No Silver Bullet Essence and Accidents of Software Engineering By Frederick P. Brooks Frederick P. Brooks Presentation by Yan Qi
File Systems and Databases
“No Silver Bullet” by F. Brooks
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.
SOFTWARE CRISIS SOLUTIONS? © University of LiverpoolCOMP 319slide 1.
Chapter 1 The Systems Development Environment
Essence and Accident in Software Engineering By: Mike Hastings.
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.
SOFTWARE DESIGN.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Content The system development life cycle
An Introduction to Software Engineering. Communication Systems.
 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 
Object-Oriented Software Engineering using Java, Patterns &UML. Presented by: E.S. Mbokane Department of System Development Faculty of ICT Tshwane University.
UML as a Specification Language for Embedded Systems. By, Mir Ahmed Ali, Asst. Professor, ECM department, SNIST. By, Prof. Narsiah sir, Director of School.
“No Silver Bullet”. No Silver Bullet  "No Silver Bullet" –– a paper by Fred Brooks, Professor of Computer Science at University of North Carolina in.
“Planning” or “why use objects?” ACO101: Introduction to Computer Science.
Lecture 14 22/10/15. The Object-Oriented Analysis and Design  Process of progressively developing representation of a system component (or object) through.
It is the fuel of modern life Business are run Government rule Scientists Industries Education However, building and maintaining software is hard and getting.
By David Sanders Title Explanation  Werewolves are quite terrifying, simply because they transform unexpectedly into horrors. To kill werewolves,
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
PRESENTATION 2 CS 5391 Survey of Software Engineering Chang-Ho Lee No Silver Bullet: Essence and Accidents of Software Engineering By Frederick P. Brooks,
Advanced Software Engineering Dr. Cheng
Object Oriented Systems Design
CompSci 280 S Introduction to Software Development
Chapter 1 The Systems Development Environment
Chapter 1 The Systems Development Environment
Chapter 1: Introduction to Systems Analysis and Design
Course Outcomes of Object Oriented Modeling Design (17630,C604)
Object-Oriented Analysis and Design
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Unified Modeling Language
Chapter 1 The Systems Development Environment
The Systems Engineering Context
CSE 403 Software Engineering
Software Quality Engineering
Chapter 1 The Systems Development Environment
Introduction CSE 1310 – Introduction to Computers and Programming
Chapter 1 The Systems Development Environment
Informatics 43 – March 31, 2016.
Seminar 1 Design of Informatics Systems
Overview of System Engineering
Tools of Software Development
File Systems and Databases
C.U.SHAH COLLEGE OF ENG. & TECH.
UFCE8V-20-3 Information Systems Development SHAPE Hong Kong 2010/11
Chapter 20 Object-Oriented Analysis and Design
Appendix A Object-Oriented Analysis and Design
Introduction To software engineering
CS 8532: Advanced Software Engineering
Introduction to Systems Analysis and Design Stefano Moshi Memorial University College System Analysis & Design BIT
Copyright 2007 Oxford Consulting, Ltd
Chapter 1: Introduction to Systems Analysis and Design
Terms: Data: Database: Database Management System: INTRODUCTION
Appendix A Object-Oriented Analysis and Design
Chapter 1 The Systems Development Environment
Chapter 6: Architectural Design
Chapter 1: Introduction to Systems Analysis and Design
From Use Cases to Implementation
Presentation transcript:

“No Silver Bullet” by F. Brooks Computer hardware progress Six orders of magnitude in performance price gain in 30 years Two fold gains every two years in price and performance Can we expect software advances in this speed?

“No Silver Bullet” by F. Brooks Computer hardware progress Six orders of magnitude in performance price gain in 30 years Two fold gains every two years in price and performance Can we expect software advances in this speed? No. Computer hardware progress is exceptionally (too) fast. No other technologies have achieved similar level of gain in performance and cost. Difficulties of software technology Essential and accidental difficulties

But, We Should be Making Progress! Many many technologies have been emerging every year. The current software development productivity should be much higher than the one in 20 years ago. No worry about memory management Easier database connectivity, concurrent programming, GUI programming, network programming…. More sophisticated IDEs, version management tools, bug tracking tools, automated testing tools…. Why do we still have a lot of project failures? Why can’t we expect faster software progress?

No Silver Bullet; We Need a Set of techniques There is no single technical or management technique, which by itself promises even one order of magnitude improvement in productivity, reliability and simplicity. Software progress can only be achieved by… a disciplined and consistent effort to develop, disseminate and exploit a set of techniques.

No Silver Bullet; We Need a Set of techniques There is no single technology technical or management technique, which by itself promises even one order of magnitude improvement in productivity, reliability and simplicity. Software progress can only be achieved by… a disciplined and consistent effort to develop, disseminate and exploit a set of techniques. c.f. We can’t improve the performance/cost of a jetliner only with the performance improvement of engines. c.f. Builders/carpenters are able to work efficiently only with a set of tools, not just a hammer.

Software Paradox Many many technologies have been emerging every year. The number of available technologies/techniques/tools grows exponentially over time. Software engineers need to learn more and more. Less and less time and energy to focus on a specific technology/technique/tool. Proficiency and expertise on each technology/technique/tool gets less and less. More and more likely software engineers make critical mistakes and produce something poor. Customers have more and more options for their systems. More and more integration burden.

Inherent Properties of Software Complexity Conformity Changeability Invisibility

HW 4 Read SP 16 to 19 Read T1, Chapter 1 Explain why software development is difficult (in other words) why a large number of projects fail. Success: Meeting the budget line Meeting the deadline (delivery date) Implementing all required/agreed functionalities what makes software complex. Use your own words and your own examples. Due: Oct 2 (Tue), Up to 3 pages Upload your write up to your own directory in the CS680 svn repository.

Why is Software Development Difficult? Essential difficulties Difficulties inherent in the nature of software. The essence of software entity is a construct of interlocking concepts: Data sets Relationships among data items Algorithms Invocation of functions Such abstract conceptual constructs do not depend on their representations (implementations). Accidental difficulties Difficulties not inherent in the nature of software. depend on representations (or implementations).

Complexity No two parts are alike. Massive number of states. A scaling up of a software entity results in nonlinear increase in complexity. It’s not merely a repetition of the same elements in larger sizes. It is necessarily an increase in the number of different elements. In most cases, the elements interacts with each other in some nonlinear fashion, and the complexity of the whole increases much more than linearly. Complexity of Software structure and behavior Communication among team members

What Makes Software Complex? Four factors to make software complex: Read SP10

Conformity Software is produced by and run within an organization. It is always important to conform organizational policies. introduces additional complexity to software. “Arbitrary complexity” without solid policies, principles and reasons by human institutions and systems. Organizational policies often change. Changes in law, management, etc.

Changeability Unlike software, manufactured things are not often changed after they are built. They will be replaced with other things, not changed often. Involves high cost for changes Successful software will often get changed. Users who like the software will want to use it in another similar domains. Successful software survives beyond the longevity of a platform for which it was build. Changes in organizational structures, laws, policies, etc.

Invisibility Software is invisible and un-visualizable. Visualization for software structure and behavior Visualization of big picture Communication overhead among engineers, customers and mangers. The fact it is hard to build a solid model of software systems gives customers the illusion that the systems should be flexible and easy to change.

Software Modeling Poor software design and project management Design patterns A catalog (or recipe) of good design strategies Software modeling A tool to specify software design artifacts

What is Modeling? A model is an abstract representation of a system, is useful when dealing with the systems that are too large, too small, too complicated or too expensive to experience firsthand. enables us to answer questions about the systems.

Why Models? Visual, intuitive and abstract Makes it easier to describe and understand systems. Good communication tool among developers Modeling is a key powerful method in any science and engineering disciplines. Natural science Biology, chemistry, physics, etc. etc. Modeling atoms, solar systems, etc. Social science Psychology, sociology, etc. Modeling human behaviors

Examples 2H + O -> H2O

Boston Red Sox 000 000 300 3 New York Yankees 000 000 000

3 Key Aspects in Software Modeling Notation Graphical or textual set of rules for representing a model. e.g. alphabet, chemical equation, electrical diagrams, etc. e.g. how to draw classes, data fields, inheritance relationships, etc. Method A repeatable technique that specifies the steps involved in solving a specific problem. e.g. a recipe for cooking a specific dish e.g. sorting algorithm, how to identify objects, how to use interface, how to use inheritance, etc. Methodology A collection of methods for solving a class of problems Specifies how and when each method should be used. e.g. a seafood cookbook with a collection of recipes e.g. structured analysis/design methodologies, object-oriented analysis/design methodologies

Unified Modeling Language UML diagrams Class diagram Sequence diagram Interaction diagram Activity diagram State chart diagram …etc.

+ setAge(age: Integer): Integer Employee - name: String - age: Integer - annualSalary: Real + setAge(age: Integer): Integer

Modern Software Engineering You have to be a good programmer, before learning modern/advanced software engineering. Software engineering is not just programming. Specification gathering, testing, maintenance, etc. Software development is not just programming. Modeling + programming

But you may say… I would rather coding than modeling. That’s fine if the size of your problem domain or product is small. No need to model/design your dog house carefully and precisely. You can think, model/design and build it simultaneously. However, do you trust an architect/builder who wants to build your house without blueprints? says working on architectural specifications is just a waste of time?

Small Advise Not enough to know object-oriented programming. Before 90’s Software development = programming Currently Software development = modeling + programming In the near future, you will need to gain Model management skill Metamodeling skill