KK Chapter 2
KK Chapter 2
20
Software Life Cycle Models
21
Build
Code
Although this approach may work well on small programming exercises 100 or 200 lines
long, this model is totally unsatisfactory for software of any reasonable size. Code soon be-
comes unfixable and unenhanceable. There is no room for design or any aspect of development
process to be carried out in a structured or detailed way. The cost of the development using
this approach is actually very high as compared to the cost of a properly specified and carefully
designed product. In addition, maintenance of the product can be extremely difficult without
specification or design documents.
Requirement Analysis
& Specification
Implementation &
Unit Testing
Operation &
Maintenance
2. Design phase. The SRS document is produced in the previous phase, which contains
the exact requirements of the customer. The goal of this phase is to transform the require-
ments specification into a structure that is suitable for implementation in some programming
language. Here, overall software architecture is defined, and the high level and detailed de-
sign work is performed. This work is documented and known as software design description
(SDD) document. The information contained in the SDD should be sufficient to begin the cod-
ing phase.
3. Implementation and unit testing phase. During this phase, design is implemented.
If the SDD is complete, the implementation or coding phase proceeds smoothly, because all the
information needed by the software developers is contained in the SDD.
During testing, the major activities are centered around the examination and modifica-
tion of the code. Initially, small modules are tested in isolation from the rest of the software
product. There are problems associated with testing a module in isolation. How do we run a
module without anything to call it, to be called by it or, possibly, to output intermediate values
obtained during execution? Such problems are solved in this phase and modules are tested
after writing some overhead code.
4. Integration and system testing phase. This is a very important phase. Effective
testing will contribute to the delivery of higher quality software products, more satisfied us-
ers, lower maintenance costs, and more accurate and reliable results. It is a very expensive
activity and consumes one-third to one half of the cost of a typical development project.
As we know, the purpose of unit testing is to determine that each independent module is
correctly implemented. This gives little chance to determine that the interface between mod-
ules is also correct, and for this reason integration testing is performed. System testing in-
volves the testing of the entire system, whereas software is a part of the system. This is essen-
tial to build confidence in the developers before software is delivered to the customer or re-
deased in the market.
5. Operation and maintenance phase. Software maintenance is a task that every
development group has to face, when the software is delivered to the customer’s site, installed
and is operational. Therefore, release of software inaugurates the operation and maintenance
phase of the life cycle. The time spent and effort required to keep the software operational
|Software Life Cycle Models
23|
after release is very significant. Despite the fact that it is a very important and challenging
task; it is routinely the poorly managed headache that nobody wants to face.
Software maintenance is a very broad activity that includes error correction, enhance-
ment of capabilities, deletion of obsolete capabilities, and optimization. The purpose of this
phase is to preserve the value of the software over time. This phase may span for 5 to 50 years
whereas development may be 1 to 3 years.
This model is easy to understand and reinforces the notion of “define before design” and
“design before code”. This model expects complete and accurate requirements early in the
process, which is unrealistic. Working software is not available until relatively late in the
process, thus delaying the discovery of serious errors. It also does not incorporate any kind of
risk assessment.
Quick Design
Refinement of
Requirements as
per suggestions
Implement
Customer Evaluation
Not accepted by customer
Accepted by customer
The developers should develop prototype as early as possible to speed up the software
development process. After all, the sole use of this is to determine the customer’s real needs.
Once this has been determined, the prototype is discarded. For this reason, the internal struc-
ture of the prototype is not very important [SCHA96].
After the finalization of software requirement and specification (SRS) document, the
prototype is discarded and actual system is then developed using the waterfall approach. Thus,
it is used as an input to waterfall model and produces maintainable and good quality software.
This model requires extensive participation and involvement of the customer, which is not
always possible.
these requirements. Developers implement the specified requirements in one or more cycles of
design, implementation and test based on the defined priorities. The model is given in Fig. 2.4.
The aim of the waterfall and prototyping models is the delivery of a complete, opera-
tional and good quality product. In contrast, this model does deliver an operational quality
product at each release, but one that satisfies only a subset of the customer’s requirements.
The complete product is divided into releases, and the developer delivers the product release
by release. A typical product will usually have many releases as shown in Fig. 2.4. At each
release, customer has an operational quality product that does a portion of what is required.
The customer is able to do some useful work after first release. With this model, first release
may be available within few weeks or months, whereas the customer generally waits months
or years to receive a product using the waterfall and prototyping model.
Release |
Release II
Release III
Cumulative Cost
Progress i
through
steps
Evaluate alternatives;
identify, resolve risks
Determine
objectives, Risk analysis (RA)
alternatives,
constraints
Risk analysis
a
Concept of Models
operation
Software
product
design
Requirements == £=f f---------
validation
Design validation
and verification
; Integration
1 ‘and test
Plan 1
Acceptance ;
next phases Implemen- i]
tation ;tes 1
H
1
Develop, verify
next-level product *
in completing each cycle. Each loop of the spiral from X-axis clockwise through 360° repre-
sents one phase. One phase is split roughly into four sectors of major activities:
Planning: Determination of objectives, alternatives and constraints
Risk Analysis: Analyze alternatives and attempts to identify and resolve the risks
involved
Development: Product development and testing product
e Assessment: Customer evaluation
During the first phase, planning is performed, risks are analyzed, prototypes are built,
and customers evaluate the prototype. During the second phase, a more refined prototype is
built, requirements are documented and validated, and customers are involved in assessing
the new prototype. By the time third phase begins, risks are known, and a somewhat more
traditional development approach is taken [RAKI97].
The focus is the identification of problems and the classification of these into different
levels of risks, the aim being to eliminate high-risk problems before they threaten the software
operation or cost.
An important feature of the spiral model is that each phase is completed with a review
by the people concerned with the project (designers and programmers). This review consists of
a review of all the products developed up to that point and includes the plans for the next cycle.
These plans may include a partition of the product in smaller portions for development or
components that are implemented by individual groups or persons. If the plan for the develop-
ment fails, then the spiral is terminated. Otherwise, it terminates with the initiation of new or
modified software.
The advantage of this model is the wide range of options to accommodate the good
features of other life cycle models. It becomes equivalent to another life cycle model in appro-
priate situations. It also incorporates software quality objectives into software development.
The risk analysis and validation steps eliminate errors in the early phases of development.
The spiral model has some difficulties that need to be resolved before it can be a univer-
sally applied life cycle model. These difficulties include lack of explicit process guidance in
determining objectives, constraints, alternatives; relying on risk assessment expertise; and
providing more flexibility than required for many applications.
There are four phases in this model and these are shown in Fig. 2.6.
ee
Ee ES
peau Descton
Fig. 2.6: RAD Model
(i) Requirements planning phase. Requirements are captured using any group
elicitation technique. Some techniques are discussed in chapter 3. Only issue is the active
involvement of users for understanding the project.
(ii) User Description. Joint teams of developers and users are constituted to prepare,
understand and review the requirements. The team may use automated tools to capture
information from the other users.
(iii) Construction phase. This phase combines the detailed design, coding and testing
phase of waterfall model. Here, we release the product to customer. It is expected to use code
generators, screen generators and other types of productivity tools.
(iv) Cut over phase. This phase incorporates acceptance testing by the users, installation
of the system, and user training.
In this model, quick initial views about the product are possible due to delivery of rapid
prototype. The development time of the product may be reduced due to use of powerful devel-
opment tools. It may use CASE tools and frameworks to increase productivity. Involvement of
user may increase the acceptability of the product.
If user cannot be involved throughout the life cycle, this may not be an appropriate
model. Development time may not be reduced very significantly, if reusable components are
not available. Highly specialized and skilled developers are expected and such developers may
not be available very easily. It may not be effective, if system can not be properly modularised.
=t
Less domain knowledge No es Ye
(new to the technology)
cad
Less experience on tools to es N
be used
Availability of training, No e
if required
es s
An appropriate model may be selected based on options given in four Tables (i.e., Table
2.1 to 2.4). Firstly, we have to answer the questions presented for each category by circling a
yes or no in each table. Rank the importance of each category, or question within the category,
in terms of the project for which we want to select a model. The total number of circled re-
sponses for each column in the tables decide an appropriate model. We may also use the cat-
egory ranking to resolve the conflicts between models if the total in either case is close or the
same.
Software Life Cycle Models 31
REFERENCES
[BASI75] Basili V.R., “Iterative Enhancement: A Practical Technique for Software Development”,
IEEE Trans on Software Engineering, SE—1, No. 4, 390-396, December 1975.
[BOEH86] Boehm B., “A Spiral Model for Software Development and Enhancement”, ACM Software
Engineering Notes, 14-24, August, 1986.
[RAKI97] Rakitin S.R., “Software Verification and Validation”, Artech House Inc., Norwood, MA,
1997.
[SCHA96] Schach S., “Classical and Object Oriented Software Engineering”, IRWIN, USA, 1996.
[TAKA96] Takang A.A. and P.A. Grubb, “Software Maintenance—Concepts and Practice”, Int.
Thomson Computer Press, Cambridge, U.K., 1996.
2.1. What do you understand by the term Software Development Life Cycle (SDLC)? Why is it
important to adhere to a life cycle model while developing a large software product?
2.2. What is software life cycle? Discuss the generic waterfall model.
2.3. List the advantages of using waterfall model instead of adhoc build and fix model.
2.4, Discuss the prototype model. What is the effect of designing a prototype on the overall cost of the
software project?
Software Life Cycle Models | 33