1 “no silver bullet” by f. brooks computer hardware progress –six orders of magnitude in...

28
1 No Silver Bullet” by F. No Silver Bullet” by F. Brooks 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?

Post on 20-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 “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

1

““No Silver Bullet” by F. BrooksNo 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?

Page 2: 1 “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

2

““No Silver Bullet” by F. BrooksNo 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

Page 3: 1 “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

3

But, We Should be Making Progress!But, We Should be Making Progress!

• Many many technologies have been emerging every year. – The current software development productivity shou

ld be much higher than the one in 20 years ago. • No worry about memory management• Easier database connectivity, concurrent programming, G

UI 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?

Page 4: 1 “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

4

No Silver Bullet;No Silver Bullet;We Need We Need a Set ofa Set of techniques 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.

Page 5: 1 “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

5

No Silver Bullet;No Silver Bullet;We Need We Need a Set ofa Set of techniques 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.

Page 6: 1 “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

6

Software ParadoxSoftware 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.

Page 7: 1 “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

7

Inherent Properties of SoftwareInherent Properties of Software

• Complexity

• Conformity

• Changeability

• Invisibility

Page 8: 1 “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

8

HW 4HW 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.

Page 9: 1 “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

9

Why is Software Development Why is Software Development Difficult? 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).

Page 10: 1 “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

10

ComplexityComplexity• 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

Page 11: 1 “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

11

What Makes Software Complex?What Makes Software Complex?

• Four factors to make software complex:– Read SP10

Page 12: 1 “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

12

Conformity 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.

Page 13: 1 “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

13

ChangeabilityChangeability• 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.

Page 14: 1 “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

14

InvisibilityInvisibility

• 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.

Page 15: 1 “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

15

Software ModelingSoftware 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

Page 16: 1 “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

16

What is Modeling?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.

Page 17: 1 “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

17

Why Models?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

Page 18: 1 “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

18

ExamplesExamples

• 2H + O -> H2O

Page 19: 1 “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

19

Page 20: 1 “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

20

Boston Red Sox

New York Yankees

000 000 300

000 000 000

3

0

Page 21: 1 “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

21

Page 22: 1 “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

22

Page 23: 1 “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

23

3 Key Aspects in Software Modeling3 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

Page 24: 1 “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

24

Unified Modeling LanguageUnified Modeling Language

• UML diagrams– Class diagram– Sequence diagram– Interaction diagram– Activity diagram– State chart diagram– …etc.

Page 25: 1 “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

25

Employee- name: String- age: Integer- annualSalary: Real

+ setAge(age: Integer): Integer

Page 26: 1 “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

26

Modern Software EngineeringModern 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

Page 27: 1 “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

27

But you may say…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 preci

sely.• 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?

Page 28: 1 “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

28

Small AdviseSmall 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