No Silver Bullet Essence and Accidents in Software Engineering
Frederick P. Brooks, Jr.
University of North Carolina at Chapel Hill
There is no single development, in either technology or
management technique, which by itself promises even one order-ofmagnitude improvement within a decade in productivity, in reliability, in simplicity.
The statement above was quoted from the article of Fred
Brooks, No Silver Bullet, where he had generally extrapolated that there is no magical bullet that will lay down the folklore monster (werewolves) to rest. This statement fundamentally tells that theres no promised single order-of-magnitude improvement between the crisis and decade-development in software engineering.
The system of software engineering comes to an embedded
cultural matrix of applications, users, laws, machine vehicles and human institutions. The matrix holds the factors that continually interact to force changes in software products. These changes leads to vast effects such as missed schedules, blown budgets, and flawed products. Thus, a desperate cry is heard for a solution to make software costs drop as rapidly as computer hardware costs do.
I was indeed delighted by the figure of speech Brooks have
used on his article to initially describe the monstrous predicament in software engineering. He considered a werewolf as the analogy of software dilemmas because of the folklores monsters unexpected transformation from an innocent familiar creature to horror and that there is no silver bullet for it. Even a decade of progressive weapon development will not produce a solid solution to kill the werewolf.
Having concurred myself to Brooks point of view, the natural
occurrence of software makes it unlikely that there will be any silver bullet for software crisis and no inventions that will partake the productivity, reliability, and simplicity in software like what electronics, transistors, and large-scale integration did for computer hardware. Brooks believed that the hardest part of constructing a software is the specification, design, and testing of the conceptual construct.
I was impressed how Brooks asserted two classes of difficulties
of software based on Aristotle, the essential difficulties and accidental difficulties. These irreducible essences are produced from the very nature of software. While the accidents came from the software production.
Initially, the difficulties inherent in nature of the software
(essence) was discussed. There were four irreducible essence properties
of
the
modern
software:
complexity,
conformity,
changeability, and invisibility. Complexitys complication lies on the
patterns outline of software which isolates essence itself more often than the complexity. Thus, in general, Brooks believed that the pattern works through not considering its non-essential complexity properties.
Complying in accordance with socially accepted conventions or
standards creates the conformity property as an essential difficulty of software which I truly agree on. Another property of the essence is the softwares changeability which goes with how fast time is transcending. Software must progress among time because of the technologys rapid development.
The invisibility of software forms an essential difficulty for its
development. You cannot visualize software and it is not embedded in space. Other fields have geometric abstraction that produces powerful tools such as floor plans and scale drawings. In terms of software development, like Brooks elaborated, it has no ready
geometric representation in the way that land has maps, diagram on
silicon chips, and connectivity schematics on computers.
Accidental difficulties are considered coming from the softwares
implementation and testing. The keys to these accidents were found to reduce the impact. Though these are as greatly effective through the period of time the article was being written. I believe that these solutions were vastly improved as of now. High-level languages helped the programmers to reduce and eliminate rendering or translating step on patterns, operations, and such on registers and bits. Other solutions are time-sharing, unified programming environments,
object-oriented
programming
and
artificial
intelligence.
The everlasting crisis on software continues up to this interval of
juncture. Even there is no magical bullet that will lay down all the werewolves. I believe that the vast refinement of humans knowledge ever so often will invariably create a bullet we not exactly seek but will aid the softwares horror.