“No Silver Bullet” by F. Brooks

Slides:



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

Objectives Explain the purpose and various phases of the traditional systems development life cycle (SDLC) Explain when to use an adaptive approach to.
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
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Chapter 1 The Systems Development Environment 1.1 Modern Systems Analysis and Design Third Edition.
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.
Copyright 2004 Prentice-Hall, Inc. Essentials of Systems Analysis and Design Second Edition Joseph S. Valacich Joey F. George Jeffrey A. Hoffer Appendix.
SOFTWARE CRISIS SOLUTIONS? © University of LiverpoolCOMP 319slide 1.
CSC230 Software Design (Engineering)
Chapter 1 The Systems Development Environment
The Systems Development Environment. Learning Objectives Define information systems analysis and design. Describe the different types of information systems.
Essence and Accident in Software Engineering By: Mike Hastings.
Lesson 1 Week01.
Chapter 2: Approaches to System Development
Week 1 Lecture MSCD 600 Database Architecture Samuel ConnSamuel Conn, Asst. Professor Suggestions for using the Lecture Slides.
2Object-Oriented Analysis and Design with the Unified Process Objectives  Explain the purpose and various phases of the traditional systems development.
Chapter 1 The Systems Development Environment
ArchiMate Authors : eSchoolink Group - ITNLU. Contents 1. What’s ArchiMate ? 2. Why ArchiMate ? 3. Main Benefits of ArchiMate 4. Layers of ArchiMate 5.
Team Skill 6: Building the Right System From Use Cases to Implementation (25)
2-Oct-15 1 Introduction to Software Engineering Softwares Importance of SWE Basic SWE Concepts ICS Software Engineering.
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.
Introduction to UML By: Prof. Aiman Hanna Department of Computer Science, Concordia University, Montreal, Canada.
Copyright 2001 Prentice-Hall, Inc. Essentials of Systems Analysis and Design Joseph S. Valacich Joey F. George Jeffrey A. Hoffer Appendix A Object-Oriented.
Object-Oriented Analysis and Design An Introduction.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
SOFTWARE DESIGN.
Chapter 1: Introduction Omar Meqdadi SE 2730 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
June 05 David A. Gaitros Jean Muhammad Introduction to OOD and UML Dr. Jean Muhammad.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Content The system development life cycle
Chapter 1. Introduction.
An Introduction to Software Engineering. Communication Systems.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 14 Slide 1 Object-oriented Design.
Fall 2010 CS4310 Requirements Engineering A Brief Review of UML & OO Dr. Guoqiang Hu Department of Computer Science UTEP 1.
 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 
Systems Analysis and Design in a Changing World, Fourth Edition
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.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
1 Technical & Business Writing (ENG-715) Muhammad Bilal Bashir UIIT, Rawalpindi.
“Planning” or “why use objects?” ACO101: Introduction to Computer Science.
The Systems Development Environment Systems Analysis and Design II.
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,
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
CS223: Software Engineering Lecture 16: The Agile Methodology.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Introduction to Software Engineering 1. Software Engineering Failures – Complexity – Change 2. What is Software Engineering? – Using engineering approaches.
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,
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Unified Modeling Language
Informatics 43 – March 31, 2016.
Seminar 1 Design of Informatics Systems
Tools of Software Development
File Systems and Databases
UFCE8V-20-3 Information Systems Development SHAPE Hong Kong 2010/11
“No Silver Bullet” by F. Brooks
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