130 likes | 243 Views
No Silver Bullet - Essence and Accident in Software Engineering. By: R. Adam Mead. Software Construction Essential Tasks. Exploiting the mass market to avoid constructing what can be bought. Using rapid prototyping as part of a planned iteration in establishing software requirements.
E N D
No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead
Software Construction Essential Tasks • Exploiting the mass market to avoid constructing what can be bought. • Using rapid prototyping as part of a planned iteration in establishing software requirements. • Growing Software organically, adding more and more function to systems as they are run, used and tested. • Identifying and developing the great conceptual designers of the rising generation.
Does It Have to Be Hard? - Essential Difficulties • Observe that it is not software process that are so slow it is that hardware progress are so fast. • The essence of a software entity is a construct of interlocking concepts: data sets, relationships among data items, algorithms, and invocations of functions.
Complexity • Software is more complex for their size then an others human construction. • Many problems of developing software products derive from this essential complexity and its nonlinear increases with size. • The increase in size makes communication among team members hard. • Problem are: product flaws, cost overruns, schedule delays. • Are not only technical problems, management problems too.
Conformity • Conformity comes from the fact that all new software must conform to the way things where done in the past, because it is hard to change everyone. • Main reason software must conform is that it is new on the scene.
Changeability • Being able to change something after it has been constructed is a new concept. • Software must be able to change, and the complexity of the systems becomes harder to follow. • All successful software gets changed. • Successful software also survives beyond the normal life of the machine vehicle for which it is first written for.
Invisibility • Software has no 3-D way on which it can be laid out. • Software does not have one map or graph, it will have multiple maps and graphs. • Software has data flow charts, time sequence graphs, and other types of things. • Communication becomes hard because each person my see it a different way.
Past Breakthroughs Solved Accidental Difficulties • High-Level Languages • Time-Sharing
High-level Languages • The most powerful thing to happen to software development ever. • It allows that some types on data structures, operation, classes etc, to be used by any machine. • Programmers don’t have to develop software for individual machines.
Time-Sharing • Most observers credit the time-sharing improvement to better programmers, and better programming languages. • Programs run faster because of the high-level languages. • Do not have to accommodate for machine language anymore.
Hopes for the Silver • Object-oriented programming • Artificial Intelligence • Expert Systems • Automatic programming • Graphics programming