- Helps to understand the entire process
- Enforces a structured approach to development
- Enables planning of resources in advance
- Enables subsequent controls of them
- Aids management to track progress of the system
The software development life-cycle can be divided into 5-9 phases, i.e., it must have a minimum of five phases and a maximum of nine phases. On average it has seven phases. These are (illustrated in Figure sd.01):
- Project initiation and planning/Recognition of need/Preliminary investigation
- Project identification and selection/Feasibility study
- Maintenance
- Implementation
- Coding & Testing
- Project analysis
- System design
Figure sd01. Software Development Life Cycle
1. Project Initiation and Planning/Recognition of Need. Recognition of need is nothing but the problem definition. It is the decision about problems in the existing system and the impetus for system change. The first stage of any project or system-development life-cycle is called the preliminary investigation. It is a brief investigation of the system under consideration. This investigation provides the organization’s computer steering committee and any project team a set of terms or references for more detailed work. This is carried out by a senior manager and will result in a study proposal. At this stage the need for changes in the existing system are identified and shortcomings of the existing system are detected. These are stated clearly providing the basis for the initial or feasibility study.
2. Feasibility Study. A feasibility study is a preliminary study which investigates the information needs of prospective users and determines the resource requirements, costs, benefits, and feasibility of a proposed project. The goal of feasibility studies is to evaluate alternative systems and to propose the most feasible and desirable systems for development. The feasibility of a proposed system can be evaluated in terms of four major categories, as illustrated in Table sd.01.
Organizational Feasibility
|
Economic Feasibility
|
How well the proposed system
support the strategic objectives of the organization
|
Cost saving, Increased revenue,
Decreased investment, Increased profits
|
Technical Feasibility
|
Operational Feasibility
|
Hardware, Software, and network
capability, reliability and availability
|
End user acceptance, Management
support, Customer, Supplier and Government requirements
|
- Organizational Feasibility. Organizational feasibility is how well a proposed information system supports the objectives of the organization and is a strategic plan for an information system. For example, projects that do not directly contribute to meeting an organization’s strategic objectives are typically not funded.
- Economic Feasibility. Economic feasibility is concerned with whether expected cost savings, increased revenue, increased profits, reductions in required investments, and other types of benefits will exceed the costs of developing and operating a proposed system. For example, if a project can’t cover its development costs, it won’t be approved, unless mandated by government regulations or other considerations.
- Technical Feasibility. Technical feasibility can be demonstrated if reliable hardware and software capable of meeting the needs of a proposed system can be acquired or developed by the business in the required time.
- Operational Feasibility. Operational feasibility is the willingness and ability of management, employees, customers, suppliers, and others to operate, use, and support a proposed system. For example, if the software for a new system is too difficult to use, employees may make too many errors and avoid using it. Thus, it would fail to show operational feasibility.
- Examine and document the relevant aspects of the existing system, its shortcomings and problems.
- Analyze the findings and record the results.
- Define and document in an outline the proposed system.
- Test the proposed design against the known facts.
- Produce a detailed report to support the proposals.
- Estimate the resources required to design and implement the system.
Figure sd.02 Cycle of Design Phase
4. System Design. System design is the most creative and challenging phase of the system-development life-cycle. The term design describes the final system and process by which it is developed. Different stages of the design phase are shown in Figure sd.02 This phase is a very important phase of the life-cycle. This is a creative as well as a technical activity including the following tasks:
- Appraising the terms of reference
- Appraising the analysis of the existing system, particularly problem areas
- Defining precisely the required system output
- Determining data required to produce the output
- Deciding the medium and opening the files
- Devising processing methods and using software to handle files and to produce output
- Determining methods of data capture and data input
- Designing the output forms
- Defining detailed critical procedures
- Calculating timings of processing and data movements
- Documenting all aspects of design
Coding can be subject to company-wide standards that may define the entire layout of programs, such as headers for comments in every unit, naming conventions for variables, classes and functions, the maximum number of lines in each component, and other aspects of standardization. Structured programming helps the understandability of programs. The goal of structured programming is to linearize the control flow in the program. Single entry-single exit constructs should be used. The constructs include selection (if-then-else) and iteration (while, repeat-unit).
6. Testing. Testing is the major quality-control measure used during software development. Its basic function is to detect errors in the software. Thus, the goal of testing is to uncover requirement, design, and coding errors in the program.
Testing is an extremely critical and time-consuming activity. It requires proper planning of the overall testing process. During the testing of the unit, the specified test cases are executed and the actual results are compared with the expected output. The final output of the testing phase is the test report and the error report, or a set of such reports (one for each unit tested).
Each test report contains the set of test cases and the result of executing the code with these test cases. The error report describes the errors encountered and the action taken to remove the errors. Testing cannot show the absence of defects; it can show only software errors present. During the testing phase emphasis should be on the following:
- Tests should be planned long before testing begins.
- All tests should be traceable to customer requirements
- Tracing should begin "in the small" and progress toward testing "in the large".
- For most effective testing, independent, third parties should conduct testing.
- Implementation of a computer system to replace a manual system.
- Implementation of a new computer system to replace an existing one.
- Implementation of a modified application (software) to replace an existing one using the same computer.
- Availability of only a few maintenance tools.
- User may not accept the cost of maintenance.
- Standards and guidelines of project may be poorly defined.
- A good test plan is lacking.
- Maintenance is viewed as a necessary evil often delegated to junior programmers.
- Most programmers view maintenance as low-level drudgery.
Types of Maintenance may be classified as:
- Corrective Maintenance. Corrective maintenance means repairing processing or performance failures or making changes because of previously uncorrected problems.
- Adaptive Maintenance. Adaptive maintenance means changing the program function. This is done to adapt to the external environment change. For example, the current system was designed so that it calculates taxes on profits after deducting the dividend on equity shares. The government has issued orders now to include the dividend in the company profit for tax calculation. This function needs to be changed to adapt to the new system.
- Perfective Maintenance. Perfective maintenance means enhancing the performance or modifying the programs to respond to the user’s additional or changing needs. For example, earlier data was sent from stores to headquarters on magnetic media but after the stores were electronically linked via leased lines, the software was enhanced to send data via leased lines. As maintenance is very costly and very essential, efforts have been done to reduce its costs. One way to reduce the costs is through maintenance management and software modification audits. Software modification consists of program rewriting and system-level-upgrading.
- Preventive Maintenance. Preventive maintenance is the process by which we prevent our system from being obsolete. Preventive maintenance involves the concept of re-engineering and reverse engineering in which an old system with an old technology is re-engineered using new technology. This maintenance prevents the system from dying out.
Related Posts :
Software Development Process
Waterfall Model
Agile Model
Prototyping Model
Iterative Model
Software Development Process
Waterfall Model
Agile Model
Prototyping Model
Iterative Model