02-Software Process
02-Software Process
CS 2042
Chapter-02
Software Process
Process …
When we provide a service or create a product we always
follow a sequence of steps to accomplish a set of tasks
Specification
defining what the system should do;
Design and implementation
defining the organization of the system and
implementing the system;
Validation
checking that it does what the customer wants;
Evolution
changing the system in response to changing
customer needs.
Generic Software Process Models
System and
software design
Implementation
and unit testing
Integration and
system testing
Operation and
maintenance
Waterfall Model
Exploratory development
- Objective is to work with customers and to evolve a final system
from an initial outline specification.
- Should start with well-understood requirements.
- The system evolves by adding new features as they are proposed by
customer.
Throw-away prototyping
Objective is to understand the system requirements. Should start
with poorly understood requirements
Develop “quick and dirty” system quickly;
Expose to user comment;
Refine;
Until adequate system developed.
Particularly suitable where:
- detailed requirements not possible;
- powerful development tools (e.g. GUI) available
Evolutionary Development
Concurrent
activities
Initial
Specification
version
Outline Intermediate
Development
description versions
Final
Validation
version
Evolutionary Development
Problems
Lack of process visibility
Systems are often poorly structured for rapid
Special skills (e.g. in languages
prototyping) may be required
Applicability
For small or medium-size interactive systems
For parts of large systems (e.g. the user interface)
For short-lifetime systems
3. Reuse-Oriented Development
Development System
and integration validation
Process Iteration
Modern development processes take iteration as
fundamental, and try to provide ways of managing,
rather than ignoring, the risk
System requirements ALWAYS evolve in the
course of a project so process iteration where earlier
stages are reworked is always part of the process for large
systems
Iteration can be applied to any of the generic process
models
Two (related) approaches
Incremental development
Spiral development
4. Incremental Development
System incomplete
When to use the Incremental model:
Objective setting
Specific objectives for the phase are identified
Risk assessment and reduction
Risks are assessed and activities put in place to reduce the key
risks
Development and validation
A development model for the system is chosen which can be
any of the generic models
Planning
The project is reviewed and the next phase of the spiral is
planned
Key points
Software processes are the activities involved in
producing and evolving a software system.They are
represented in a software process model
General activities are specification, design and
implementation, validation and evolution
Generic process models describe the organisation of
software processes
Iterative process models describe the software process as
a cycle of activities
Software Process Activities
1. Specification
2. Design
3. Validation
4. Evolution
I. Software Specification
Feasibility Requirements
study elicitation and
analysis
Requirements
specification
Feasibility Requirements
report validation
System
models
User and system
requirements
Requirements
document
II. Software Design and Implementation
Architectural design
Abstract specification
Interface design
Component design
Data structure design
Algorithm design
The Software Design Process
Requirem ent s
sp ecifictaion
Data
Archite ctuarl Abst ract In ter face Component Algorithm
struc tuer
design specifictaion design design design
design
Design porducts
Design Methods
Unit
testing
Module
testing
Sub-system
testing
System
testing
Component Acceptance
testing testing
Integration testing
User
testing
Testing Stages
Unit testing
Individual components are tested
Module testing
Related collections of dependent components are tested
Sub-system testing
Modules are integrated into sub-systems and tested.The focus
here should be on interface testing
System testing
Testing of the system as a whole.Testing of emergent
properties
Acceptance testing
Testing with customer data to check that it is acceptable
IV. Software Evolution
Software is inherently flexible and can change.
Existing New
systems system
Computer-Aided Software Engineering
(CASE)
CASE is the application of computer-assisted tools and
methods in software development to ensure a high-quality
and defect-free software. CASE ensures a check-pointed
and disciplined approach and helps designers, developers,
testers, managers and others to see the project milestones
during development.