no silver bullet - essence and accident in software engineering by: r. adam mead
TRANSCRIPT
No Silver Bullet - Essence No Silver Bullet - Essence and Accident in Software and Accident in Software
EngineeringEngineering
By: R. Adam MeadBy: 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.
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.
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.
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.
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.
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.
Past Breakthroughs Solved Past Breakthroughs Solved Accidental DifficultiesAccidental Difficulties
High-Level LanguagesHigh-Level Languages Time-SharingTime-Sharing
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.
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.
Hopes for the SilverHopes for the Silver
Object-oriented programmingObject-oriented programming Artificial IntelligenceArtificial Intelligence Expert SystemsExpert Systems Automatic programmingAutomatic programming Graphics programmingGraphics programming