no silver bullet - essence and accident in software engineering by: r. adam mead

11
No Silver Bullet - No Silver Bullet - Essence and Accident Essence and Accident in Software in Software Engineering Engineering By: R. Adam Mead By: R. Adam Mead

Upload: loraine-osborne

Post on 18-Dec-2015

221 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead

No Silver Bullet - Essence No Silver Bullet - Essence and Accident in Software and Accident in Software

EngineeringEngineering

By: R. Adam MeadBy: R. Adam Mead

Page 2: No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead

Software Construction Essential Software Construction Essential TasksTasks

Exploiting the mass market to avoid Exploiting the mass market to avoid constructing what can be bought.constructing what can be bought.

Using rapid prototyping as part of a planned Using rapid prototyping as part of a planned iteration in establishing software iteration in establishing software requirements.requirements.

Growing Software organically, adding more Growing Software organically, adding more and more function to systems as they are run, and more function to systems as they are run, used and tested.used and tested.

Identifying and developing the great Identifying and developing the great conceptual designers of the rising generation.conceptual designers of the rising generation.

Page 3: No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead

Does It Have to Be Hard? - Does It Have to Be Hard? - Essential DifficultiesEssential Difficulties

Observe that it is not software process that are Observe that it is not software process that are so slow it is that hardware progress are so so slow it is that hardware progress are so fast.fast.

The essence of a software entity is a construct The essence of a software entity is a construct of interlocking concepts: data sets, of interlocking concepts: data sets, relationships among data items, algorithms, relationships among data items, algorithms, and invocations of functions.and invocations of functions.

Page 4: No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead

ComplexityComplexity

Software is more complex for their size then Software is more complex for their size then an others human construction.an others human construction.

Many problems of developing software Many problems of developing software products derive from this essential complexity products derive from this essential complexity and its nonlinear increases with size.and its nonlinear increases with size.

The increase in size makes communication The increase in size makes communication among team members hard.among team members hard.

Problem are: product flaws, cost overruns, Problem are: product flaws, cost overruns, schedule delays.schedule delays.

Are not only technical problems, management Are not only technical problems, management problems too.problems too.

Page 5: No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead

ConformityConformity

Conformity comes from the fact that all new Conformity comes from the fact that all new software must conform to the way things software must conform to the way things where done in the past, because it is hard to where done in the past, because it is hard to change everyone.change everyone.

Main reason software must conform is that it is Main reason software must conform is that it is new on the scene.new on the scene.

Page 6: No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead

ChangeabilityChangeability

Being able to change something after it has Being able to change something after it has been constructed is a new concept.been constructed is a new concept.

Software must be able to change, and the Software must be able to change, and the complexity of the systems becomes harder to complexity of the systems becomes harder to follow.follow.

All successful software gets changed.All successful software gets changed. Successful software also survives beyond the Successful software also survives beyond the

normal life of the machine vehicle for which it normal life of the machine vehicle for which it is first written for.is first written for.

Page 7: No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead

InvisibilityInvisibility Software has no 3-D way on which it can be laid Software has no 3-D way on which it can be laid

out.out. Software does not have one map or graph, it will Software does not have one map or graph, it will

have multiple maps and graphs.have multiple maps and graphs. Software has data flow charts, time sequence Software has data flow charts, time sequence

graphs, and other types of things.graphs, and other types of things. Communication becomes hard because each Communication becomes hard because each

person my see it a different way.person my see it a different way.

Page 8: No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead

Past Breakthroughs Solved Past Breakthroughs Solved Accidental DifficultiesAccidental Difficulties

High-Level LanguagesHigh-Level Languages Time-SharingTime-Sharing

Page 9: No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead

High-level LanguagesHigh-level Languages

The most powerful thing to happen to software The most powerful thing to happen to software development ever.development ever.

It allows that some types on data structures, It allows that some types on data structures, operation, classes etc, to be used by any operation, classes etc, to be used by any machine.machine.

Programmers don’t have to develop software Programmers don’t have to develop software for individual machines.for individual machines.

Page 10: No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead

Time-SharingTime-Sharing

Most observers credit the time-sharing Most observers credit the time-sharing improvement to better programmers, and improvement to better programmers, and better programming languages.better programming languages.

Programs run faster because of the high-level Programs run faster because of the high-level languages.languages.

Do not have to accommodate for machine Do not have to accommodate for machine language anymore.language anymore.

Page 11: No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead

Hopes for the SilverHopes for the Silver

Object-oriented programmingObject-oriented programming Artificial IntelligenceArtificial Intelligence Expert SystemsExpert Systems Automatic programmingAutomatic programming Graphics programmingGraphics programming