# IB Computer Science/Science Systems Life Cycle and Software Development/Systems Life Cycle
## Systems Life Cycle
### System Life Cycle Stages

The systems life cycle can be broken down into five stages: Analysis, Design, Implementation, Operation, and Maintenance.
* Analysis - The system analyst meets with the users to determine exactly what the user wants, and undertake feasibility studies (whether it is possible for the designers to meet the user's expectations).
* Design - In this stage, the programmers design a solution to the user's problem. This can be the most time-consuming part of the cycle, since there are many choices that need to be made. A decision must be made on the types of software, hardware and on the algorithms that are going to be used.
* Implementation - The construction (development) of the system; the system is developed based on the design laid out in the previous stage.
* Operation - Also known as installation, or system launch. The system can be installed as a direct changeover, as a phased introduction, or as a parallel running.
* Maintenance - Bugs and/or flaws might arise with time, thus, the system will need to be fixed and updated. However, fixing one bug may lead to another bug being created.

### Importance Of Collecting Data

Gathering data is essential in the analysis stage because you can gain clear insight into the problem. If the problem cannot be identified correctly, a poor solution is guaranteed to follow.

### Methods Of Data Collection

| Method | Advantages | Disadvantages |
| Interview | Detailed data, can change questions during process (not like questionnaire) | Time-consuming, problems classifying/quantifying data |
| Questionnaire | Can reach a lot of people, quickly (compared to interview/observation). Numerical analysis possible. | Questions may be mis-interpreted. People may not respond at all or may do only some questions. |
| Document Search | The data required for the system can be identified accurately. | Documents may be lacking, out-of-date etc (interview could discover this). |
| Literature Search | Can find descriptions/problems of previous implementations (saves work). | Problem may not be described (or in detail). Again, working without experienced users. |
| Observation | Observations are independent of user bias (unlike interview/questionnaire). | Time consuming and observer can affect process: Hawthorne Effect. |

### Production of Requirement Specification

A requirement specification contains what the system will be able to do and how it will be done. This should include:
* The costs of building, testing and running the system (including both hardware and software)
* Estimated time till completion
* List of hardware and software tools needed
* Description of hardware and software functions
* Performance of the system
* List of personnel and allocated tasks

### Feasibility Report

A feasibility report can be produced during the analysis, design stage, or both. It should include:
* Cost
* Expected benefits
* Time period
* Potential difficulties

### Alternative Solutions

There are a number of different ways a problem can be solved, with or without using a computer. One consideration you must take into account is the input and output of the solutions. The software itself could be one of three types:
* General Application Software - This is the least expensive solution but may not include all the features that the user requires. A typical example would be an office package.
* Specific Applications Packages - These are typically more expensive than general application software and provide a greater number of features. These programs tend to have been written specifically for business.
* Tailor Made Software - This is the most expensive option but can be customized to do exactly what the customer requires as it is written from scratch.

### Methods Of Testing Systems

Systems usually go through several stages of testing. Alpha testing is the first stage in which asmall group of qualified individuals examine an early version of the program. Beta testing is when the program is fully featured an released to a wider audience for testing.
Test data is also used to make sure the program outputs the expected data. We can test the program with:
* Normal Data - Data that is expected to be entered into the program. Including data at the limits of what is expected.
* Extreme Data - This will be outside the normal limits of the program, simulating what happens if a user enters incorrect data by mistake.
* Abnormal Data - Data that is not expected, for example a string instead of an integer value.

### Methods Of Implementing New Systems

A new system can be implemented in one of the following three ways:
* Parallel Running - This is when both new and old systems are run together. This confirms that they both produce the same outputs and if any faults occur they can be fixed with no up-time lost. Staff can be trained without fear of losing data, yet there may be twice as much work to do.
* Phased Introduction - Parts of the system are implemented at different times, each part is then tested and confirmed, this means it will take much longer to implement.
* Direct Changeover - Also known as a Big Bang, the old system is immediately replaced by the new one. Users need to be trained before the new system is implemented and there is a risk that it will not work correctly.

### Importance Of Maintaining Systems

Proper maintenance of a system is essential; clear documentation to begin with helps this progress as programmers will not need to work hard to understand design decision if they are explained in documentation. This reduces the cost of maintenance. Periodic reviews and performance reviews use the same data collection techniques as seen in the analysis sections and indicate whether further improvements or modifications are needed.