System Development Life Cycles (SDLC)
A system development life cycle (SDLC) is used in project management to guide a project from the initial concept to a functional system. In this article, we will be looking at system development life cycles as a tool for systems analysis and software engineering.
System Development Life Cycles fall into a number of different systems development models, iterative being the most common but they also include waterfall, spiral and chaos models. They all encompass the full project life cycle. Common software development methodologies include Agile/Scrum, Structured Systems Analysis and Design Method (SSADM) and Microsoft Solutions Framework (MSF).
Each step in a system development life cycle can be broken down into many smaller sub-steps or processes. Each stage follows logically after the previous, but it is an oversimplification to say that one stage is a distinct step after another. It is important to understand that the system lifecycle is iterative as well as the stages involved along the way.
Different methodologies will have different variations of this lifecycle model. A common iterative system development life cycle is show in the diagram below and each stage is described after the diagram.
All projects must start with an initial idea. Usually, this consists of a brief definition on what is the project all about, what is its purpose and what the project aims to accomplish. How will the success of the project be measured?
Expanding on the Initial Idea, the Feasibility Study involves drawing up the terms of reference, which state the objectives and scope of the project, how long it should take and how the results should be presented. The terms of reference are usually drawn up by senior management. The feasibility study must determine if the development of the project is justified in terms of economic and organisational terms.
The main role of the analyst in the feasibility study is to analyse the current system at a high level. Data Flow Diagrams (DFD) are used to describe how the current system performs and to illustrate known problems.
Feasibility studies are not carried out for all projects, and smaller projects omit this stage.
The Requirements Analysis stage defines a series of possible solutions to the problem and presents them to management in terms of business options. These options may be supported by technical documents such as high-level DFD's, Logical Data Models (LDM) and Work Practice Models. The requirements analysis report must also contain financial and risk assessments to be presented and supported by outline implementation descriptions.
The steps involved in the requirements analysis will define the flow of data in the system, driving system functions and to develop user role specifications, prototypes and process specifications.
Systems Analysis and Specification
The Systems Analysis stage is an extension to the feasibility study. If the project has a feasibility study then the bulk of the work has already been done. Terms of reference will also be required if one does not exist. The output from this stage is the System Specification which gives precise details of what the new system is required to do, but does not go into how it does it. It provides a logical model of the new system.
Once agreed, the specification is the basis for the work done by the system designers.
This stage deals with how the requirements of the new system are carried out (how the logical model is implemented as a physical system). The system designer will develop a number of design options and test them against the requirements specification and design criteria. The one that comes closest to the design brief with the most cost effective use of equipment and personnel is selected and broken down into more detailed specs.
Because of this, the design stage has two phases: produce outline designs based on requirements specification with input from users and the detailed designs produced from the selected design.
This is the only stage in the development where program code is written. The designs and specifications provide enough detail for the programmer to code and test individual modules. Each unit is tested to ensure that it meets the requirements of the specification.
Within the life cycle there are various levels of testing as well as the unit testing performed in the development stage.
Link testing ensures that programs work together, e.g. the data passed from one program to another has the correct format.
System testing ensures that the system as a whole performs according to the design specification. Recovery procedures must be tested as well as normal operating procedures.
Finally, user acceptance testing is carried out by the users in stages to ensure that the system is usable.
Any modifications are passed back to the design stage where changes are made as necessary and passed to the development team.
When the testing has been carried out to the user's satisfaction the system, or parts of it, are put live. The "put live" phase can also be known as implementation, cutover or production. This is when the users start using the system to carry out their business activities.
There are two main approaches to implementation a project:
- Phased: Stand-alone subsets of the system are implemented over a period of time.
- Big Bang: The whole system is put live in one go.
Some systems will require special programs or tasks to convert existing data to a format usable by the new system. The process of changing data from the old system to the new is called conversion.
Maintenance and Review
Once the system is put into place, maintenance is required to ensure satisfactory operation.
Maintenance should include regular reviews and evaluations to ensure that it is achieving its objectives, identify any aspects that can be improved or any operational problems. Maintenance falls into two categories, implementation of new features or elimination of errors.