4. The Software Development Life Cycle
4.4 Typical Phases of Software Development
An important feature of the SDLC is that it is a comprehensive method that encompasses the five basic phases of software development, as depicted in Figures 4.1 and 4.2, namely investigation, analysis, design, implementation and maintenance.
Figure 4.1 illustrates these phases as being applied in a sequential, linear manner, an iterative approach, as indicated in Figure 4.2, is more common. Since an iterative process is essentially circular in nature, each phase receives input from and provides output to another. At a high level this circularity ensures the reassessment of the quality of each artefact.
Figure 4.1: Typical Phases of Software Development
Virtually all systems development models incorporate these five phases. However, they do differ in how much time is spent in each phase, who does the work, and in the degree of formality involved (Post and Anderson, 2003).
It is important to realise that all of the activities involved are highly related and interdependent. Therefore, in practice, several developmental activities may occur at the same time (O’Brien, 2002). There are several variations of the SDLC, however, the five-step process described in this section represents the most common practice. It must be noted that some versions identify more than five phases, while others may use different terminology for individual phases.
Investigation Phase Maintenance Phase Design Phase Analysis Phase Implementation Phase
Figure 4.2: A Typical Cycle for Developing Information System Solutions (O’Brien, 2002)
4.4.1 The investigation phase
During the investigation phase, the objectives, constraints and scope of the project are specified. A preliminary cost-benefit analysis is performed to evaluate the perceived benefits and appropriate levels of cost for those benefits. It is during this phase that the objectives and general definitions of the requirements are established. There is an initial user definition activity followed by an evaluation and the initiation of necessary documents to formally commence the software development project. The documentation produced during this phase requires user involvement to define the project and its worth. Friedman and Wlosinski (2003) recommend that both a data sensitivity assessment and preliminary risk assessment take place during this initial phase. This phase concludes with a feasibility analysis which assesses the economic, technical and behavioural feasibilities of the project.
A feasibility study is a quick examination of the problems, goals, and expected costs of the system. The objective is to determine whether the problem can be solved with an information system. The problem may turn out to be more complex than originally thought or unsolvable with current technology. It may be better to wait for improved technology or lower prices (Post and Anderson, 2003).
Developing Information System Solutions Investigate Analyse Design Implement Maintain
4.4.2 The analysis phase
Several basic activities of systems analysis need to be performed whether developing a new application quickly or developing a long-term project. The analysis phase begins with a study of the documentation gained during the investigation stage. However, systems analysis is not a preliminary study, but an in-depth study of the end- user information needs. This phase produces a set of functional requirements that are used as the basis for the design of a new or improved information system. Assessments of the organisation, the status of the current systems and its capability to support the proposed systems are performed.
It is important during this phase to determine how the existing system works and where the problems are located. The common technique used is to decompose the system into smaller, workable chunks. Analysts begin to determine what the new system is expected to do, and how it will interact with existing systems. At the end of the analysis phase, a complete description of the business requirements should be available. The problems and needs are typically documented with text, data flow diagrams and other figures depending on the methodology followed (Post and Anderson, 2003).
4.4.3 The design phase
The systems analysis phase describes “what” a system should do to meet the information needs of users, whereas the systems design phase specifies “how” the system will accomplish this objective. Systems design consists of design activities that produce system specifications satisfying the functional requirements developed in the systems analysis phase (O’Brien, 2002).
The objective of systems design is to describe the new system as a collection of modules or sub-systems. This phase is typically divided into logical and physical design stages. The logical design is the blueprint for the desired solution. It is implementation independent, meaning that it contains no reference to specific technologies, vendors or products. The physical design, on the other hand, identifies specific technologies to support the desired solution. The system design phase will indicate how the new system will work by providing all the necessary details, including data inputs, system outputs, processing steps and database designs. The output of this stage consists of a complete
4.4.4 The implementation phase
Once a new information system has been designed, it must be implemented. The implementation phase typically involves the acquisition of hardware and software, software development, testing of programs and procedures, development of documentation, and a variety of conversion alternatives. It involves the education and training of end users and specialists who will operate the new system (O’Brien, 2002).
Implementation is often a difficult and time-consuming process. However, O’Brien (2002) argues that it is vital in ensuring the success of any newly developed system, since even a very well-designed software application will fail if it is not properly implemented.
During the implementation phase, any required software components are developed or purchased. Once all components are tested individually, they are installed, integrated and tested as a system. Post and Anderson (2003) argue that although testing and quality control must be performed at every stage of development, a final systems test is required before entrusting the data of the company to the new system. A crucial stage in implementation is, therefore, final testing.
4.4.5 The maintenance phase
Once a system is fully implemented and is being used in business operations, the maintenance phase begins. Systems maintenance may be defined as the monitoring, evaluating and modifying of operational information systems to make desirable or necessary improvements (O’Brien, 2002).
The maintenance and review phase is the longest and typically most expensive phase of any software development life cycle. The needs of the organisation change, therefore, the systems that support the organisation must change. The pressures for change are so great in most organisations today that as much as 80% of the Management Information System (MIS) staff is devoted to modifying existing programs. These changes are most often time-consuming and difficult. When a programmer makes a minor change in one area, it may affect another area of the program, which in turn can cause additional errors or necessitate more changes (Post and Anderson, 2003).