Software Engineering
Software Process Models
A software process model is an abstract representation of the development process.
Consists of a structured set of activities required to build software.
It presents a description of a process from a particular perspective.
Types of Models
1. Descriptive Models
Describes the history of how a particular system was developed.
Used as a basis for understanding and improving s/w process.
Used for building prescriptive models.
2. Prescriptive Models
Prescribes how software should be developed.
Used as guidelines to organize and structure how s/w activities should be performed, and in
what order
Generic Software Models
1. The waterfall Model
Separate and distinct phases of specification and development
2. Evolutionary development
Specification, development and validation are interleaved i.e. no distinct phases
Goes with prototyping
Examples are Incremental and Spiral Models
3. Component based
A kind of specialized model
The system is assembled from existing components.
4. Agile Models
Emphasises on customer collaboration, incremental delivery, and small development teams.
Build and Fix
o
o
Build systems without specification.
Build first version and repeat maintenance until customer is satisfied.
Advantages
Does not waste time in planning and documentation.
Process Models Software Engineering
Page 1
Disadvantages
Underestimate project attributes
Difficult to evaluate success
Waterfall Model
o
o
o
o
o
Also called Classic Life cycle.
Requirements are well defined (fixed) and stable.
It is mostly used in big projects
It can be adapted so that it accommodates some abstract information
Each activity is distinct and no new phase can begin before the previous phase is complete
Phases of Waterfall Model
Requirements Engineering
software design
Implementation and unit testing
Integration and system testing
Maintenance
Requirements
Engineering
Software Design
Implementation and Unit
Testing
Integration and system testing
Maintenance
Drawbacks of Waterfall Model
Real projects are iterative.
Difficult for customer to state all requirements explicitly.
Requires customer patience.
Blocking state.
Inflexible partitioning of the project into distinct stage makes it difficult to respond to changing
customer requirements.
Therefore, this model is only appropriate when the requirements are well-understood and changes
will be fairly limited during the design process.
Few business systems have stable requirements.
The waterfall model is mostly used for large systems engineering projects.
Evolutionary Process Models
1. Do activities in an iterative way
2. Prototyping
I.
Throw away prototyping or exploratory
o The objective is to understand the system requirements.
o It should start with poorly understood requirements to clarify what is really needed.
II.
Evolutionary prototype
o Objective is to work with customers and to evolve a final system from an initial outline
specification.
Process Models Software Engineering
Page 2
It should start with well-understood requirements and add new features as proposed by
the customer.
Prototyping
Customer defines a general objective of the software without identifying details.
Feedback from prototypes is used to refine requirements for the software.
Iteration is used to tune prototypes to satisfy customer needs, while enabling the developer to
better understand what needs to be done.
Used with systems with a considerable emphasis on user interface and user interaction.
Users and designers must be well aware of the prototyping approach and its pitfalls.
Should be planned and controlled.
Prototyping Model
Outline
description
Specification
Initial version
Development
Intermediate version
Validation
Final version
Advantages of prototypes
The resulting system is easy to use and maintain.
User needs are better accommodated
The design is of higher quality
The development incurs less effort.
Problems are detected earlier
Disadvantages of prototypes
The resulting system harder to maintain.
The performance of the resulting system is worse.
The design is of less quality
The development incurs more effort.
The approach requires more experienced team members
Spiral Model
Evolutionary model with iterative nature of prototyping and systematic aspects of waterfall
model.
Process is represented as a spiral rather than as a sequence of activities with backtracking.
Each loop in the spiral represents a phase in the process.
Process Models Software Engineering
Page 3
No fixed phases such as specification or design - loops in the spiral are chosen depending on what
is required.
Risks are explicitly assessed and resolved throughout the process (Risk driven).
Model sectors
1. Objective setting
Specific objectives for the phase are identified.
2. Risk assessment and reduction
Risks are assessed and activities put in place to reduce the key risks.
Prototyping is used to clarify things.
3. Development and validation
A development model for the system is chosen which can be any of the generic models.
The software is developed
4. Planning
The project is reviewed and the next phase of the spiral is planned.
Incremental Process Model
Combines elements of waterfall model applied in an iterative philosophy of prototyping.
Develop, deliver the system in increments
The incremental model applies linear sequences in a staggered fashion as calendar time progress.
Each linear sequence produces deliverable increments of the software.
The first increment called the core product and it addresses the basic requirements.
Each increment delivers a working product/feature.
Outline
specification
Develop
system
increments
Assign requirements to
increments
Validate
increments
Integrate
increments
Design System
Architecture
Validate
system
Advantages of Incremental Model
Have a working product in the early stages of the project.
System incomplete
Particularly useful when staffing is unavailable for a complete implementation by the business
deadline that has been established for the project.
Takes the best practices from waterfall model and prototyping
Process Models Software Engineering
Page 4
There is risk management
Disadvantages of Incremental Model
There are a lot of activities that can increase the cost of the project.
The Rapid Application Development (RAD) Model
Incremental model that emphasizes on short development life cycle.
Its a high speed waterfall using component based construction.
It emphasizes user involvement, prototyping, reuse, the use of automated tools and small
development teams.
Employs time box - a fixed time frame within which activities are done.
Elements of RAD
i.
ii.
iii.
iv.
v.
Prototyping
Reuse can use already existing components
Use of automated tools use tools to develop the software
Small development teams enhances good communication between the developers and
stakeholders
Employs time block a fixed time frame for each working product to be delivered
Life Cycle activities
1) Requirements Planning
Identify requirements from the system
It is done in collaboration with stakeholders
Uses joint requirements planning workshops to get requirements
2) User design
User design phase is done in Joint Application workshop. This is to build the initial design of
the system
3) Construction Phase
This is development phase
4) Cut-over
Implementation phase
Advantages of RAD
Its fast
High level user interaction
High communication
Drawbacks of RAD
For large but scalable projects, RAD requires sufficient human resources to create the right
number of RAD teams.
Process Models Software Engineering
Page 5
RAD requires developers and customers who are committed to the rapid-fire activities necessary
to get a system complete in a much abbreviated time frame. If commitment is lacking from either
constituency, RAD projects will fail.
System need to be properly modularised
RAD is not appropriate when technical risks are high. This occurs when a new application makes
heavy use of new technology or when the new software requires a high degree of interoperability
with existing computer programs.
Not for high performance systems
Component based Development
Its construction is based on systematic reuse where systems are integrated from existing
components or COTS (Commercial-off-the-shelf) components.
Phases
Requirements Engineering
System design with reuse
Component analysis/Qualification
Adaptation
Assembly and integration components tested together.
Evolution and maintenance
This approach is becoming increasingly used as component standards have emerged
Process Models Software Engineering
Page 6