A software comprises of programs and associated data and documentation. Each of these items is a part of software development process. Software development process is a structure imposed on the development of a software product. The process includes the phased approach to software development, software development models, the software development processes and the software project management processes.The main problems for software development currently are: high cost, low quality and frequent changes causing change and rework. Software has become a limiting factor in the evolution of computer-based systems. The intent of software development is to produce a framework for building higher quality software. In order to achieve successful and quality software certain methods and criteria need to be followed. These methods and criteria are classified as the software development processes. There are several models for such processes, each describing approaches to a variety of tasks or activities that take place during the process. These processes are carried out in a step by step criteria so as to come up with a successful project where by a successful project start with a step back and understanding business drivers, the problem or opportunity that accelerates the project.
A Phased Approach to Software Development
A development process consists of various phases, with each phase ending with a defined output. The phases are performed in an order specified by the software development process model. The primary reason for using a phased approach to software development process is that it breaks the problem of developing software into successfully performed set of phases, each handling a different concern of software development. This ensures that the cost of development is lower than what it would have been if the whole problem were tackled together. Furthermore, a phased approach to software development allows proper checking of quality and progress at some defined points during the development. In general, any problem solving in software must consist of these activities during the development process;
- Requirement Specifications: defines the objectives of new or modified system and lists a detailed statement of the functions that new system must perform.
- Analysis: during analysis, the focus is on building models that unambiguously determine the problem for which a software solution is being constructed. At this stage the limitations of the target environment is not given a priority.
- Design: the analysis model is adapted such that it serves as the basis for implementation in the target environment. Hence, the design deals with transforming or refining the analysis model into a design model that determines how to eventually obtain a working system.
- Implementation: at this stage, the coding of the system is performed
- Testing: testing deals with the validation of software at various levels. Testing can be categorized as follows:
- Unit: deals with testing the smallest units of the designed software.
- Integration: integration testing deals with testing the application that has been (partially) put together by integrating the smallest software units. Basically it involves testing individual software modules as a group.
- Validation: this involve in testing whether the software functions in a manner expected by the user.
- System: this is carried out at the after the integration and validation testing, system testing deals with different test whose primary purpose is to fully exercise the computer-based system. Although each test has a different purpose, all work should verify that all system elements have been properly integrated and perform allocated functions.
- Recovery: recovery testing involves system tests that force the software to fail in a variety of ways and verifies that recovery is properly performed.
- Security: this testing verifies that protection mechanisms built into a system will, in fact, protect it from improper usage and unauthorized access. It ensures adherence to restrictions on command usage, access to data, and access requirement according to associated privileges.
- Stress: the stress testing involves executing a system in a manner that demands resources in abnormal quantity, frequency, or volume. In other words, stress testing helps find out the level of robustness and consistent or satisfactory performance even when the limits for normal operation for the system software is crossed.
- Conversion: during this phase, the old system is substitute by the new system that has been developed. Four approaches can be adopted to achieve the conversion transformation [Harold] namely:
- Parallel: in this approach both the old and new system are run together until everyone involve in the project is convinced that the old one can be safely taken out of operation.
- Direct Cutover: at this stage, the old system is discarded and replaced by the new one, all at the same time.
- Pilot study: during the pilot study approach, the new system is introduced into a very limited area of the organization. It is not introduced any further into the rest of the organization as long as the pilot system does not begin running smoothly.
- Phased: the phased approach involve the introduction of the new system in stages. The pilot study approach can be considered as a special case of this approach.
- Maintenance: software maintenance process is the modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment. At this stage the system has to be kept operational. The nature and extent of activity during this process depend on the type of software being developed. For some support software, the maintenance and operation phase may be very active due to changing user needs.