CSCI 5200 : Software Systems Engineering

Assignment # 1: Amit Grover

Reaction to the article

The article “No Silver Bullet : Essence and Accidents of Software Engineering” by Frederick P. Brooks, best known as the ‘father of IBM System /360 computer family’, presents a rather pessimistic / dismal view of the problems facing the software engineering discipline.

Brooks compares the standard software project with the mythical werewolf in the sense that it has the capability of “becoming a monster of missed schedules, blown budgets and flawed products.” His idea of a silver bullet in this context is “something to make software costs drop as rapidly as computer hardware costs do”.

He starts by dividing the difficulties into those that are inherent in the nature of software (essence) and those that are not (accidents). The inherent difficulties include the complexity of today’s software entities, the problems of conformity and changeability and the fact that it is extremely difficult to visualize software.

Brooks argues that none of the technological breakthroughs like the development of High Level Languages, concepts of timesharing, Unified Programming Environments, Object Oriented Programming, Artificial Intelligence, Expert Systems, Automatic Programming, Graphical Programming and Program Verification etc. have solved either of the above mentioned essential problems. They are all incremental advances in the field of software engineering and can only solve accidental difficulties.

In my opinion, all the advances that Brooks mentions are not as trivial as he makes them out to be. Just like Rome was not built in one day; all these advances act like individual building bricks of the edifice that one day may be able to iron out a lot of these so – called ‘inherent’ problems. Many a times, when we look at a problem from a totally different angle, the ‘once – insurmountable task’ becomes quite manageable. Hence it is important to have a positive outlook and make the most of whatever advances are taking place in related fields.

Brooks also advocates a ‘buy versus build’ policy as a cost saving measure. He rightly points out “the cost of software has always been developmental cost, not replication cost”. This is something that I fully agree with. By customizing COTS software to our requirements, we can save a lot by doing away with the developmental costs associated with custom – built software.

According to Brooks, the “development of approaches and tools for rapid prototyping of systems” and nurturing great designers are the most promising efforts that attack the essence of the software problem.

Though the idea of developing approaches and tools for rapid prototyping of systems sounds appealing, I have my reservations about the feasibility of nurturing great designers as a workable and long term solution. In this regard, I would agree more or less with Mary Shaw.1 To quote her, “Indeed, innovative designs require great designers. But great designers are rare, and most designs need not be innovative. Systematic presentation of design fragments and techniques that are known to work can enable designers of ordinary talent to produce effective results for a wide range of more routine problems by using prior results ( buying or growing, in Brooks’ terms ) instead of always building from scratch.”

Conclusion:

Though I find Brooks’ views pessimistic and a bit outdated, I would still recommend this article to all students of computer science as it does a good job of documenting a number of relevant issues in software engineering.

References

1. Mary Shaw, “Prospects for an Engineering Discipline of Software”, IEEE Software (November 1990), pp. 15 – 16.