Software Life Cycle Models and Processes
Software Life Cycle Models and Processes
A software life cycle is a phased approach to developing software, with specic deliverables and milestones within each phase. A software life cycle model is an abstraction of the software development process, which is convenient to use for planning purposes. This chapter takes a software life cycle perspective on software development. Different software life cycle models (also referred to as software process models), including the spiral model and the Unied Software Development Process, are briey described and compared. The roles of design verication and validation and of software testing are discussed.
29
30
Overview
systems have been developed using a software life cycle. The rst widely used software life cycle model, often referred to as the waterfall model, is shown in Figure 3.1. It is generally considered the conventional or classical software life cycle. The waterfall model is an idealized process model in which each phase is completed before the next phase is started, and a project moves from one phase to the next without iteration or overlap.
Software requirements, a key factor in any software development project, are not properly tested until a working system is available to demonstrate to the end-users. In fact, several studies have shown that errors in the requirements specication are usually the last to be detected (often not until system or acceptance testing) and the most costly to correct. A working system becomes available only late in the life cycle. Thus, a major design or performance problem might go undetected until the system is almost operational, at which time it is usually too late to take effective action.
For software development projects with a signicant risk factor for example, due to requirements that are not clearly understood or are expected to change variations or alternatives to the waterfall model have been proposed. Two different software prototyping approaches have been used to overcome some of the limitations of the waterfall model: throwaway prototypes and evolutionary prototypes. Throwaway prototypes can help resolve the rst problem of the waterfall model, which was described in the preceding list, and evolutionary prototypes can help resolve the second problem.
Integration Testing
Unit Testing
Coding
DetailedDesign
Architectural Design
31
Integration Testing
Unit Testing
Coding
DetailedDesign
Architectural Design
32
Integration Testing
Unit Testing
Coding
DetailedDesign
Architectural Design
ThrowawayProto typing
33
34
Overview
The biggest problem it helped overcome was the communications barrier that existed between the users and the developers. Throwaway prototypes can also be used for experimental prototyping of the design (Figure 3.4). This can be used to determine if certain algorithms are logically correct or to determine if they meet their performance goals.
IncrementalCompo nentConstruction
Architectural Design
ThrowawayProto typing
35
IncrementalCompo nentConstruction
EvolutionaryProt otyping
Architectural Design
36
Figure 3.6. Combined throwaway prototypin g with increment al developme nt software life cycle model
EvolutionaryProt otyping
IncrementalCompo nentConstruction
Architectural Design
ThrowawayProto typing
37
38
Overview
2. Analyze risks
3. Develop product
cycle in particular, the waterfall model. The spiral model is intended to encompass other life cycle models, such as the waterfall model, the incremental development model, and the throwaway prototyping model. In the spiral model, the radial coordinate represents cost, and the angular coordinate represents progress in completion of a cycle of the model. The spiral model consists of the following four quadrants, as shown in Figure 3.7: 1. Dene objectives, alternatives, and constraints. Detailed planning for this cycle: identify goals and alternative approaches to achieving them. 2. Analyze risks. Detailed assessment of current project risks; plan activities to be performed to alleviate these risks. 3. Develop product. Work on developing product, such as requirements analysis, design, or coding. 4. Plan next cycle. Assess progress made on this cycle and start planning for next cycle.
Each cycle of the spiral model iterates through these four quadrants, although the number of cycles is project-specic. The descriptions of the activities in each quadrant are intended to be general enough that they can be included in any cycle. The goal of the spiral model is to be risk-driven, so the risks in a given cycle are determined in the analyze risks quadrant. To manage these risks, certain additional project-specic activities may be planned to address the risks, such as requirements prototyping if the risk analysis indicates that the software requirements are not clearly understood. These project-specic risks are termed process drivers. For any process driver, one or more project-specic activities need to be performed to manage the risk (Boehm and Belz 1990). An example of identifying a project-specic risk is to determine that the initial software requirements are not well understood. A project-specic activity performed to manage the risk is to develop a throwaway prototype, with the goal of getting feedback from the users in order to help clarify the requirements.
39
Requirements
Analysis
Design
Implementation
Test
iteration iteration #2 #1
---
---
---
---
---
Iterations
Figure 3.8. Unied Software Development Process (Jacobson et al, THE UNIFIED SOFTWARE DEVELOPMENT PROCESS, Figure 1.5 Unied Software Development Process p. 11, c 1999 Pearson Education, Inc. Reproduced by permission of Pearson Education, Inc.)
1. Requirements. The product of the requirements workow is the use case model. 2. Analysis. The product of the analysis workow is the analysis model. 3. Design. The products of the design workow are the design model and the deployment model.
40
Overview
4. Implementation. The product of the implementation workow is the implementation model. 5. Test. The product of the test workow is the test model.
Like the spiral model, the USDP is a risk-driven process. The life cycle phases of the USDP are as follows (Jacobson, Booch, and Rumbaugh 1999; Kruchten 2003):
1. Inception. During the inception phase, the seed idea is developed to a sufcient level to justify entering the elaboration phase. 2. Elaboration. During the elaboration phase, the software architecture is dened. 3. Construction. During the construction phase, the software is built to the point at which it is ready for release to the user community. 4. Transition. During the transition phase, the software is turned over to the user community.
41
42
Overview
notation, also referred to as Structured English or pseudocode. Internal data structures are also designed.
3.3.4 Coding
During the coding phase, each component is coded in the programming language selected for the project. Usually a set of coding and documentation standards have to be adhered to.
Functional testing. To determine that the system performs the functions described in the requirements specication. Load (stress) testing. To determine whether the system can handle the large and varied workload it is expected to handle when operational.
43
Performance testing. To test that the system meets its response time requirements.
3.5 SUMMARY
This chapter has taken a software life cycle perspective on software development. Various software life cycle models, also referred to as software process models (including the spiral model and the Unied Software Development Process) were briey described and compared. The roles of design verication and validation and of software testing were discussed. Chapter 5 describes the use casebased software life cycle for the COMET method.
EXERCISES
Multiple-choice questions: For each question, choose one of the answers. 1. What is a software life cycle? (a) The life of the software (b) A cyclic approach to developing software (c) A phased approach to developing software (d) The life of software developed in cycles 2. What is the waterfall life cycle model? (a) Software developed under a waterfall (b) A process model in which each phase is completed before the next phase is started (c) A process model in which phases are overlapped (d) A process model in which phases are cyclic 3. Which of the following is a limitation of the waterfall life cycle model? (a) Software is developed in phases. (b) Each phase is completed before the next phase is started. (c) Software development is cyclic. (d) Software requirements are not properly tested until a working system is available.
4. Which of the following approaches can overcome the limitation in the previous question? (a) Phased software development (b) Throwaway prototyping (c) Evolutionary prototyping (d) Incremental development 5. What is evolutionary prototyping? (a) Phased software development (b) Throwaway prototyping (c) Risk-driven development (d) Incremental development 6. What approach does the spiral model emphasize? (a) Phased software development (b) Throwaway prototyping (c) Risk-driven development (d) Incremental development 7. What is the goal of software validation? (a) Building the system (b) Building the right system (c) Building the system right (d) Testing the system 8. What is the goal of software verication? (a) Building the system (b) Building the right system (c) Building the system right (d) Testing the system