Featured

Software Development Life Cycle

The Software Development Life Cycle (SDLC) is used to facilitate the development of a large software product in a systematic, well-defined, and cost-effective way. An information system goes through a series of phases from conception to implementation. Various reasons for using a life-cycle model include:
  • 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 consists of several phases and these phases need to be identified along with defining the entry and exit criteria for every phase. A phase can begin only when the corresponding phase-entry criteria aresatisfied. Similarly, a phase can be considered to be complete only when the corresponding exit criteria are satisfied. If there is no clear indication of the entry and exit for every phase, it becomes very difficult to track the progress of the project.
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
Table sd.01 Key Features of Categories of Feasibility

  • 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.
3. Project Analysis. Project analysis is a detailed study of the various operations performed by a system and their relationships within and outside the system. Detailed investigation should be conducted with personnel closely involved with the area under investigation, according to the precise terms of reference arising out of the initial study reports. The tasks to be carried out should be clearly defined such as:
  • 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.
The objectives at this stage are to provide solutions to stated problems, usually in the form of specifications to meet the users requirements and to make recommendations for a new computer based system. Analysis is an iterative and progressive process, examining information flows and evaluating various alternative design solutions until a preferred solution is available. This is documented as the system proposal.

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
5. Coding. The goal of the coding phase is to translate the design of the system into code in a given programming language. In this phase the aim is to implement the design in the best possible manner. This phase affects both testing and maintenance phases. Well-written code can reduce the testing and maintenance effort. Hence, during coding the focus is on developing programs that are easy to read and understand and not simply on developing programs that are simple to write.
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.
7. Implementation. The implementation phase is less creative than system design. It is mainly concerned with user training, site selection, and preparation and file conversion. Once the system has been designed, it is ready for implementation. Implementation is concerned with those tasks leading immediately to a fully operational system. It involves programmers, users, and operations management, but its planning and timing is a prime function of a systems analyst. It includes the final testing of the complete system to user satisfaction, and supervision of initial operation of the system. Implementation of the system also includes providing security to the system. There are three types of implementation:
  • 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.
8. Maintenance. Maintenance is an important part of the SDLC. If there is any error to correct or change then it is done in the maintenance phase. Maintenance of software is also a very necessary aspect related to software development. Many times maintenance may consume more time than the time consumed in the development. Also, the cost of maintenance varies from 50% to 80% of the total development cost. Maintenance is not as rewarding or exciting as developing the systems. It may have problems such as:
  • 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.



www.CodeNirvana.in

Copyright © Computer Science | Blogger Templates | Designed By Code Nirvana