i) Introduction:
Brooks, Fredrick P., “No Silver Bullet: Essence and Accidents of Software Engineering, “Computer, Vol 20, No 4 (April 1987), pp. 10-19. It is a widely discussed paper in software engineering. It discusses the fact that not anyone can be a software developer. It is not as straight forward as they will have you believe. Discusses the problems with software development and its complexities, and the fact that decades have passed with price of software is same compare to hardware as discussed in Moore’s law.
ii) Summary:
"There is no single development, in either technology or management technique, which by itself promises even one order of magnitude [tenfold] improvement within a decade in productivity, …show more content…
All software construction involves essential tasks. Brooks defines some concept relating to software development, in order to help people understand that software development is hard work. And there is no magical solution for people to be able to easily do it. He said there are two classes of qualities of a software:
1. Essential qualities/difficulties: difficult to address and improve
2. Accidental qualities/difficulties: can be improved via tool support.
Essential qualities/difficulties have to do with software design: understanding the problem, designing and testing the conceptual construct. Accidental qualities/difficulties have to do with implementing the construct in code and testing it.
Following are some essential qualities/difficulties:
• Complexity: Designing a software is complex. Understanding domain concept so one can define them and the relationship between them is hard but essential if we want to convert it into code. Unlike real\physical object, no 2 parts of a software are alike. The problem with complexities are miscommunication b/w design team, difficulties in considering all possibilities in a program (unreliability), harder to use, if program is complex it is also harder to overview (taking out the …show more content…
Software is seen as a thing that should conform of the systems.
Accidental Qualities relates to implementation and testing, these are solved the most and are likely to be solved. Following are the things brook says have helped to reduce the impact of the accidental qualities
• High level language: High level language allows programmers to express concept closer to original design. This reduce or eliminate translation steps between data models, operation, sequence and communication and register bits. This eliminate a lot of complexities. Brooks say high level languages can do to finish product that programmer imagines in abstract. Their level of thinking is improving it does so at an ever decreasing rate.
• Time sharing and better OS support: Time sharing is different from batch processing. It help because we don’t have to wait for code testing cycle. Better OS support means difference b/w DOS and UNIX (which contains library which allow display code, etc.)
Brooks talks about hopes for the future, AI (idea of a software solving problems that were previously domain of human intelligence), expert systems automatic programing, graphical programing, proof based design verification better tools and work