J.E.D.I
management, requirements management, risk management, formal technical reviews etc.
1.4.1 Types of Software Process Models
There are many types of software process models that suggest how to build software. Common process models are discussed within this section.
Linear Sequential Model The Linear Sequential Model is also known as the waterfall model or the classic life
cycle. This is the first model ever formalized, and other process models are based on this approach to development. It suggests a systematic and sequential approach to the
development of the software. It begins by analyzing the system, progressing to the analysis of the software, design, coding, testing and maintenance. It insists that a
phase can not begin unless the previous phase is finished. Figure 1.3 shows this type of software process model.
The advantages of this model are: • It is the first process model ever formulated.
• It provides a basis for other software process models. The disadvantages of this model are:
• Real software projects rarely follow a strict sequential flow. In fact, it is very difficult to decide when one phase ends and the other begins.
Software Engineering 18
Figure 1.3 Linear Sequential Model Requirements
Engineering Design
Engineering
Coding
Testing Operation
and Maintenance
J.E.D.I
• End-user involvement only occurs at the beginning requirements engineering and at the end operations and maintenance. It does not address the fact the
requirements may change during the software development project. • End-users sometimes have difficulty stating all of their requirements. Thus, it
delays the development of the software.
Prototyping Model To aid in the understanding of end-user requirements, prototypes are built. Prototypes
are partially developed software that enable end-users and developers examine aspects of the proposed system and decide if it is included in the final software product. This
approach is best suited for the following situations:
• A customer defines a set of general objectives for the software but does not identify detailed input, processing, or output requirements.
• The developer may be unsure of the efficiency of an algorithm, the adaptability of a technology, or the form that human-computer interaction should take.
Figure 1.4 shows this process model.
The advantage of this process model is: • The end-users have an active part in defining the human-computer interaction
requirements of the system. They get the actual feel of the software. The disadvantages of this process model are:
• Customers may mistakenly accept the prototype as a working version of the software. Software quality is compromised because other software
requirements are not considered such as maintainability. • Developers tent to make implementation compromises in order to have a
working prototype without thinking of future expansion and maintenance.
Software Engineering 19
Figure 1.4 Prototyping Model Listen
to Customers
Build or Revise Prototype by
Developers
Test-drive the Prototype by
Customer
J.E.D.I
Rapid Application Development RAD Model
This process is a linear sequential software development process that emphasizes an extremely short development cycle. It is achieved through a modular-based construction
approach. It is best used for software projects where requirements are well-understood, project scope is properly constrained, and big budget with resources are available.
Everybody is expected to be committed to a rapid approach to development.
In this process model, the software project is defined based on functional decomposition of the software. Functional partitions are assigned to different teams, and are developed
in parallel. Figure 1.5 shows this process model.
The advantage of this model is: • A fully functional system is created in a short span of time.
The disadvantages of this model are: • For large but scalable projects, this process requires a sufficient number of
developers to have the right number of development teams. • Developers and customers must be committed to the rapid-fire of activities
necessary to develop the software in a short amount of time. • It is not a good process model for systems that cannot be modularized.
• It is not a good process model for systems that require high performance. • It is not a good process model for systems that make use of new technology or
Software Engineering 20
Figure 1.5 Rapid Application Development
Requirements Engineering
Design Engineering
Coding Testing
Turn-over
FuntionalPartition 1- Team
Requirements Engineering
Design Engineering
Coding Testing
Turn-over
FuntionalPartition 2- Team
Requirements Engineering
Design Engineering
Coding Testing
Turn-over
FuntionalPartition 3- Team
60 – 90 Days
J.E.D.I
high degree of interoperability with existing computer programs such as legacy systems.
Evolutionary Process Models
This process model recognizes that software evolves over a period of time. It enables the development of an increasingly more complicated version of the software. The approach
is iterative in nature. Specific evolutionary process models are Incremental Model, Spiral Model, and Component-based Assembly Model.
Incremental Model This process model combines the elements of a linear sequential model with the iterative
philosophy of prototyping. Linear sequences are defined where each sequence produces an increment of the software. Unlike prototyping, the increment is an operational
product. Figure 1.6 shows this process model.
Software Engineering 21
Figure 1.6 Incremental Process Model
Requirements Engineering
Design Engineering
Coding Testing
Delivery of the 1st
Increment
First Increment
Requirements Engineering
Design Engineering
Coding Testing
Turn-over
Second Increment
Requirements Engineering
Design Engineering
Coding Testing
Turn-over
Third Increment
First SW Increment
Second SW Increment
First SW Increment
Third SW
Increment First
SW Increment Second SW
Increment
J.E.D.I
Spiral Model It was originally proposed by Boehm. It is an evolutionary software process model that
couples the iterative nature of prototyping with the controlled and systematic aspects of linear sequential model. It provides potential rapid development of incremental versions
of the software. An important feature of this model is that it has risk analysis as one of its framework of activities. Therefore, it requires risk assessment expertise. Figure 1.7
shows an example of a spiral model.
Software Engineering 22
Figure 1.7 Spiral Model
Risk Analysis Planning
Communication
Analysis Design
Coding Release Evaluation
A B
C D
A. Initial Software Project
B. Maintenance of New Software
C. Enhancement of Software
D. Development of another interrelated system
J.E.D.I
Component-based Assembly Model It is similar to Spiral Process Model. However, it makes use of object technologies where
the emphasis of the development is on the creation of classes which encapsulates both data and the methods used to manipulate the data. Reusability is one of the quality
characteristics that are always checked during the development of the software. Figure 1.8 shows the Component-based Assembly Model.
Software Engineering 23
Figure 1.8 Component-based Assembly Model Risk
Analysis Planning
Communication
OO Analysis Design
Coding Release
Evaluation A
B C
D
A. Initial Software Project
B. Maintenance of New Software
C. Enhancement of Software
D. Development of another interrelated system
Determine Candidate
Classes Look for the
Classes in the Library
Get the Classes
Build New Class
Put New Classes in
Library
Build the nth Iteration of
Software
J.E.D.I
Concurrent Development Model The Concurrent Development Model is also known as concurrent engineering. It
makes use of state charts to represents the concurrent relationship among tasks associated within a framework of activities. It is represented schematically by a series of
major technical tasks, and associated states. The users need, management decisions and review results drive the over-all progression of the development. Figure 1.9 shows
the concurrent development model.
Formal Methods
The Formal Methods is a software engineering approach which encompasses a set of activities that lead to mathematical specification of the software. It provides a
mechanism for removing many of the problems that are difficult to overcome using other software engineering paradigm. It serves as a means to verify, discover and correct
errors that might otherwise be undetected.
1.4.2 Factors that Affect the Choice of Process Model