Software Software crisis was a term used in
Software engineering: Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software or we can say that Software Engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and work efficiently on real machine. Introduction: Software crisis was a term used in the early days of computer science.The term was used to describe the impact of rapid increase in computer power and complexity of the problems that could be solved.
In essence, it refers to the difficulty of writing correct, understandable, and verifiable computer programs. The roots of the software crisis are complexity, expectations, and change. The apparent problem of incomplete, poorly performing software became referred to as “the software crisis” Software crisis is characterized by inability to develop the desired Software Project because of such problems: . Projects running over-budget. 2. Projects running over-time. 3.
Software is inefficient. 4. Software is of low quality. 5. Software does not meet requirements. 6. Project is unmanageable/ Code difficult to maintain.
The term “Software Crisis” 10 is used in the software industry to emphasize the complexity in developing quality software. There are five common problems in the software development process. They are miscommunication, software complexity, programming errors, changing requirements and unrealistic schedule. Miscommunication: There is widespread miscommunication of information during all the phases of software development, because humans tend to assume and misinterpret a lot of things when communicating.
•Software Complexity: Any software, that’s developed to serve some useful purpose, is enormously complex and no single person can fully understand it 2. •Programming Errors: Software is created by people, and people are inherently prone to making errors. So, software bugs are also created due to programming errors. •Changing requirements: Software functionality changes, when the requirements change.
When we have a system with rapidly changing requirements, additional functionality that’s added to the system, can affect the already existing modules in unforeseen ways. High level of interdependencies between the modules, makes the system error prone. •Time pressure and deadlines: The software development industry is highly competitive, and schedule slippages are not acceptable. Some projects have unrealistic schedules, which make the development methodology far from perfect and the developed software lacks quality.Hence the roots of the software crisis are complexity, expectations, and change. To avoid software crisis, software engineering principles and process are applied strictly. There are certain models made to overcome the problem of software crisis.
These are: 1. Spiral Model: The spiral model, originally proposed by Boehm, is an evolutionary software process model that couples the iterative nature of prototype with the controlled and systematic aspects of the linear sequential model.A spiral model is divided into a number of framework activities, also called task regions. For larger, more critical projects, each task region contains more work tasks that are defined to achieve a higher level of formality. 2. Waterfall Model: The waterfall model, sometimes called the classic life cycle model suggests a systematic, sequential approach to software development.
This model is named “Waterfall Model”, because its diagrammatic representation resembles waterfall. Diagram of Waterfall Model: 3.Prototype Model: A working prototype (has limited functional capabilities, low reliability, and untested performance) is developed as per current available requirements. The developer uses this prototype to refine the requirements and prepare the final specification document.
When the prototype is created, it is reviewed by the customer and gives feedback to the developer that helps to remove uncertainties in the requirements of the software, and starts an iteration of refinement in order to further clarify requirements Diagram of Prototype Model: