In the world of software development, there are so many ideas, theories, proofs that can be discussed and examined, however none of them is the answer to all the problems that we encounter in this field. In another world No Silver Bullet! Interestingly enough there is an article, by Fredrick P. Brooks at University of North Carolina at Chapel Hil with this title that I am going to go over some of his ideads and also come up with at least three silver bullets that can shed some lights in the world of software development.
Based on Brooks’s article, there is no single development, in either technology or management technique, which by iteself promises even one order of magnitude improvement in productivity, in reliability, in simplicity. However a disciplined, consistent effort to develop, propagate and exploit software development should indeed yield an order-of-magnitude improvement.
Based on Brooks, by examining three steps in software technology that has been most succesful in the past, we figure each attacked some major difficulty in building software. Using high level languages which covers most of the complexity of the abstraction and concrete machine languages, data types, data structure, operations to solve the problem or to build a new solution for software development by eliminating the unnecessary complication of lower level languages.
High level languages encourage modern design and modularization concepts. Many high level languages are now supporting Object oriented programming which introduced the concept of inheritance, polymorphism, abstraction, encapsulation in programming.
Time-sharing is another promising solution for preserving immediacy and therefore enables us to maintain an overview of complexity. This will help to shorten the system response time.
Unified programming environments are the third promising approach that improves the software development tremendously by providing integrated libraries, unified file formats and piles and filters. In unified programming environments, we can prototype rapidly a system as a part of the iterative specification requirements. In unified programming environments, we can get benefit of best practices and patterns.
And therefore, based on Brooks, the three promising silver bullets are: First, buying versus building, as everyday a new vendor offers a service much more sophisticated and with better functionlities. Second, requirement refinement and rapid prototyping, as no client knows the details of technical requirement, the most difficult part is to define what to build and therefore defining the requirement and iterative extraction and refinement of product requirement with rapid prototyping helps to build new systems faster and better. Third, incremental development meaning a software that can grow rapidly by building prototypes and provison new components that needs to be added and build them as components and add them to the main module and also it is an easy way of back tracking.
It appears to me all of these are all true statements, and I believe there is no one way to address a software development, by defining the requiement, modulalizing, and prototyping we can come up with a faster, better software development and by applying design patterns and best practices we can develop rich, better softwares.
You can definitely see your enthusiasm within the work you write.
The sector hopes for even more passionate writers
like you who aren’t afraid to say how they believe. At all times go after your heart.