System Development Life Cycle: Part 2



Back to Part 1

SYSTEM DEVELOPMENT LIFE CYCLE:

SDLC6.gif


Now let's discuss System Development Life Cycle with its different Phases in detail:

SDLC7.gif


Phases:

  1. SYSTEM STUDY

    a) Preliminary System Study
    b) Feasibility Study
    c) Detailed System Study
    d) System Analysis
    e) System Design
     
    • Preliminary or General Design
    • Structured or Detailed Design
  2. CODING
  3. TESTING

    • Program Test
    • System Test
     
  4. IMPLEMENTATION
  5. MAINTAINANCE

SYSTEM STUDY:

1. Preliminary System Study: As the name says it is the first stage of a system development life cycle, a brief investigation of the system under consideration and gives a clear picture of what actually the physical system is? It involves the preparation of a 'System Proposal' which lists the Problem Definition, Objectives of the Study, Terms of reference for Study, Constraints, Expected benefits of the new system, etc. A System Analyst will prepare the proposal and cycle proceeds to the next stage. It depends on the management to accept it; they also reject it or request some modifications in the proposal. Actually a system study phase passes through the following steps:
  • Problem identification and project initiation
  • Background analysis
  • Inference or findings (system proposal)

2. Feasibility Study: If the proposal is accepted by the management then the next phase is to examine the feasibility of the system. In this phase the software analysts and strategy makers establish a descriptive view of the intended project and determine its goals & objectives. If the project is to proceed, the feasibility study will produce a project plan and budget estimates for the future stages of development. The main goal of feasibility study is not to solve the problem but to achieve the scope. In the process of feasibility study, the cost and benefits are estimated with greater accuracy to find the Return on Investment (ROI).

3. Detailed System Study: In accordance with the objectives of the proposed system the detailed investigation of the system is carried out. Various operations performed by a system and their relationships within and outside the system. In this process data are collected on the available files, decision points and transactions handled by the present system. It becomes easy to draw the exact boundary of the new system under consideration by following the steps below:
  • Keeping in view the problems and new requirements
  • Workout the pros and cons including new areas of the system

There should be proper documentation of all the data and the findings in the form of
detailed data flow diagrams (DFDs), data dictionary, logical data structures and miniature specification. The important points that should be discussed in this stage are:
  • Specification of what the new system is to accomplish based on the user requirements.
  • Functional hierarchy showing the functions to be performed by the new system and their relationship with each other.
  • Functional network, which are similar to function hierarchy but they highlight the functions which are common to more than one procedure.
  • List of attributes of the entities – these are the data items which need to be held about each entity (record).

4. System Analysis: In this phase there is a main role of system analyst, he is the one who should analyze the end-user information needs and prepare a solid plan. Analysis gathers the requirements for the system. This stage includes a detailed study of the business needs of the organization. Options for changing the business process may be considered. In other words it is a process of collecting factual data, understand the processes involved, identifying problems and recommending feasible suggestions for improving the system functioning. It also includes subdividing of complex process involving the entire system, identification of data store and manual processes. The major objectives of systems analysis are to find answers for each business process: What is being done? How is it being done? Who is doing it? When is he doing it? Why is it being done? and How can it be improved? It is more of a thinking process and involves the creative skills of the System Analyst.

5. System Design: System Design is the most crucial phase in the development of System Software. After the detailed analysis of the existing system and requirement of the user, the new system must be designed, that's why the name of this phase is "System Design". The logical system design arrived at as a result of systems analysis is converted into physical system design. Normally, the design proceeds in two stages:
  • Preliminary or General Design
  • Structured or Detailed Design

a. Preliminary or General Design: The specification of the features of the new system and the cost estimation in implementing these features of the system are estimated in this stage. And if the project is still considered to be feasible, we move to the detailed design stage.

b. Structured or Detailed Design: The design of the system becomes more structured at this stage. Structured design is a blueprint of a computer system solution to a given problem having the same components and inter-relationships among the same components as the original problem. Input, output, databases, forms, codification schemes and processing specifications are drawn up in detail.
In the design stage, the programming language and the hardware and software platform in which the new system will run are also decided.

The various tools and techniques used to describe the system design are:
  • Flowchart
  • Data flow diagram (DFD)
  • Data dictionary
  • Structured English
  • Decision table
  • Decision tree

The System design involves the following steps:
  1. Defining precisely the required system output
  2. Determining the data requirement for producing the output
  3. Determining the medium and format of files and databases
  4. Devising processing methods and use of software to produce output
  5. Determine the methods of data capture and data input
  6. Designing Input forms
  7. Designing Codification Schemes
  8. Detailed manual procedures
  9. Documenting the Design

CODING

The system design needs to be implemented to make it a workable system which means that once the design is complete, this demands the coding of design into computer understandable language i.e. programming language, that's why this phase is also known as a programming phase. The goal of the coding phase is to translate the design of the system into code in a given programming language. For a given design, the aim of this phase is to implement the design in the best possible manner. The coding phase affects both testing and maintenance profoundly. A well written code reduces the testing and maintenance effort. As the cost of testing and maintenance is much higher than the coding cost, the goal of coding should be to reduce the testing and maintenance effort. Hence, during coding the focus should be on developing programs that are easy to write. Simplicity and clarity should be strived for, during the coding phase. It is an important stage where the defined procedures are transformed into control specifications by the help of a computer language. It is generally felt that the programs must be modular in nature. This helps in fast development, maintenance and future changes, if required.

TESTING

The main thrust of the approach is to intensively test the front end in the first two releases, thus raising approximately 80% of errors in this period. Software testing is a process of verifying and validating that a software application or program meets the business and technical requirements that guided its design and development, and works as expected.

Formal review points in testing:

SDLC8.gif

The diagram above outlines the Test Approach. Boxes 1 - 6 show the major review stages prior to Test execution. Boxes 7 - 10 show the phases planned for & after test execution.

It is an important phase of a successful system. After codifying the whole programs of the system, a test plan should be developed and run on a given set of test data. The output of the test run should match the expected results. Using the test data following test run are carried out:
  • Program Test
  • System Test

Program Test: In program test the programs must be individually tested with the prepared test data at the time of coding, compiling and brought to working conditions. Any undesirable happening must be noted and debugged (error corrections).

System Test: After the program test for each program of the system, and also the errors are removed then its turn for System test. In this the test is done on actual data. The complete system is executed on the actual data. At each stage of the execution, the results or output of the system is analyzed. At the time of result analysis, it may be found that the outputs are not matching the expected output of the system. In such case, the errors in the particular programs are identified and are fixed and further tested for the expected output.

IMPLEMENTATION

After having the user acceptance of the new system developed, the Implementation Phase begins. In the implementation phase, the organization configures and enables system security features, tests the functionality of these features, installs or implements the system, and obtains a formal authorization to operate the system. Design reviews and system tests should be performed before placing the system into operation to ensure that it meets all required security specifications. In addition, if new controls are added to the application or the support system, additional acceptance tests of those new controls must be performed. This approach ensures that new controls meet security specifications and do not conflict with or invalidate existing controls. The results of the design reviews and system tests should be fully documented, updated as new reviews or tests are performed, and maintained in the organization's official records.

The major steps involved in this phase are:
  • Acquisition and Installation of Hardware and Software
  • Conversion
  • User Training
  • Documentation

During this phase, all the programs of the system are loaded onto the user's computer. After loading the system, training of the user starts. Main topics of such type of training are:
  • How to execute the package
  • How to enter the data
  • How to process the data (processing details)
  • How to take out the reports

After the users are trained about the computerized system, working has to shift from manual to computerized working. The process is called 'Changeover'. The following strategies are followed for changeover of the system:
  • Direct Changeover
  • Parallel Run
  • Pilot Run

MAINTENANCE

It is the least glamorous and perhaps most important step of all, goes forever during whole system life. Inevitably the system will need maintenance. Software will definitely undergo change once it is delivered to the customer. There are many reasons for the change. Change could happen because of some unexpected input values into the system. In addition, the changes in the system could directly affect the software operations. The software should be developed to accommodate changes that could happen during the post implementation period. Maintenance is necessary to eliminate errors in the system during its working life and to tune the system to any variations in its working environments. It has been seen that there are always some errors found in the systems that must be noted and corrected. It also means the review of the system from time to time. The review of the system is done for:
  • Knowing the full capabilities of the system
  • Knowing the required changes or the additional requirements
  • Studying the performance.

If a major change to a system is needed, a new project may have to be set up to carry out the change. The new project will then proceed through all the above life cycle phases.