In his article “No Silver Bullet”, Fred Brooks discusses some of the

advertisement
Chris Overton
9-3-01
Abstract of “No Silver Bullet” by Frederick P. Brooks Jr.
In his article “No Silver Bullet”, Fred Brooks discusses some of the major difficulties
inherent in producing software. Mr. Brooks contends that several “essential difficulties” exist in
software engineering which prevent software engineers from copying successful engineering
models used in other disciplines. However, Mr. Brooks also believes that software projects often
fail due to non-essential difficulties imposed upon the software project by the developers
themselves. “No Silver Bullet” proposes that by removing the non-essential difficulties from the
software process, software engineers can achieve significant gains in software cost and
reliability.
Fred Brooks cites several “essential difficulties” of building software that make the
software process more difficult than traditional engineering disciplines. One of these essential
difficulties is complexity. Software designs are usually extremely complex and difficult to
visualize. The state of a piece of software changes continuously during execution. As execution
paths change, so do the associated data structures. This scenario causes great difficulty when
trying to visualize a software system. As a result, it becomes very difficult to accurately diagram
a software design.
Brooks also cites conformity as an essential difficulty of software design. Software
engineers are constantly required to produce software that conforms to existing hardware and
software. In many cases, a complete redesign is the right approach to solving a problem. Clients
are often unwilling to abandon existing systems and start from scratch. However, software faults
or limitations produced as a result of conforming to an existing system often become more
expensive than redesigning the system from scratch.
According to Brooks, requirements specification and elicitation is the most difficult part
of the software process. Brooks contends that it is much more difficult to decide what problems
need to be solved than to actually create a piece of software to solve the problems. Brooks’
article offers rapid prototyping as a tool to help determine the needs of the user. Rapid
prototyping offers a high level conceptual view of software function. Users can get some idea of
what the interface might look like and how parts of the software interact with each other.
Allowing users to interact with the design at the requirements stage allows software engineers to
verify that the design is headed in the right direction. Rapid prototyping may actually reveal that
the client is requesting functionality that is not needed.
Fred Brooks takes an interesting approach to the difficulties of software engineering.
Brooks contends that there are several “essential difficulties” in building software that prevent
software engineers from adapting methods from other disciplines. It is as important to
understand what cannot be done as what can be done. However, by eliminating some of the nonessential difficulties of software engineering, developers can realize substantial gains in time,
cost, and reliability.
Download