Software Process: Hoang Huu Hanh
Software Process: Hoang Huu Hanh
Software Process
2 Software Process
Software Processes
When the process involves the building of some product we
refer to the process as a life cycle
Software development process – software life cycle
3 Software Process
Major problems in software developments …
5 Software Process
Generic Software Processes
6 Software Process
Generic Software Process Models
The waterfall model
Separate and distinct phases of specification and development
Evolutionary development
Specification and development are interleaved
Formal systems development (example - ASML)
A mathematical system model is formally transformed to an
implementation
Reuse-based development
The system is assembled from existing components
7 Software Process
1. Waterfall Model
Requirements
definition
System and
software design
Implementation
and unit testing
Operation and
maintenance
8 Software Process
Waterfall model phases
9 Software Process
Waterfall model problems
Inflexible partitioning of the project into distinct stages
This makes it difficult to respond to changing customer
requirements
Therefore, this model is only appropriate when the
requirements are well-understood
10 Software Process
Why Not a Waterfall
But software is different :
No fabrication step
Program code is another design level
Hence, no “commit” step – software can always be changed…!
No body of experience for design analysis (yet)
Most analysis (testing) is done on program code
Hence, problems not detected until late in the process
Waterfall model takes a static view of requirements
Ignore changing needs
Lack of user involvement once specification is written
Unrealistic separation of specification from the design
Initial
Specification
version
Outline Intermediate
Development
description versions
Final
Validation
version
13 Software Process
Evolutionary development
Problems
Lack of process visibility
Systems are often poorly structured
Special skills (e.g. in languages for rapid
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
14 Software Process
3. Formal systems development
Based on the transformation of a mathematical
specification through different representations to an
executable program
Transformations are ‘correctness-preserving’ so it is
straightforward to show that the program conforms to
its specification
15 Software Process
Formal systems development
16 Software Process
Formal transformations
Formal transformations
T1 T2 T3 T4
Formal R1 Executable
R2 R3
specification program
P1 P2 P3 P4
17 Software Process
Formal systems development
Problems
Need for specialised skills and training to apply the technique
Difficult to formally specify some aspects of the system such as
the user interface
Applicability
Critical systems especially those where a safety or security
case must be made before the system is put into operation
18 Software Process
4. Reuse-oriented development
Based on systematic reuse where systems are integrated
from existing components or COTS (Commercial-off-
the-shelf) systems
Process stages
Component analysis
Requirements modification
System design with reuse
Development and integration
Development System
and integration validation
20 Software Process
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
21 Software Process
5. Incremental development
Rather than deliver the system as a single delivery, the
development and delivery is broken down into
increments with each increment delivering part of the
required functionality
User requirements are prioritised and the highest
priority requirements are included in early increments
Once the development of an increment is started,
the requirements are frozen though requirements for
later increments can continue to evolve
22 Software Process
Incremental development
23 Software Process
Incremental development advantages
Customer value can be delivered with each increment so
system functionality is available earlier
Early increments act as a prototype to help elicit
requirements for later increments
Lower risk of overall project failure
The highest priority system services
tend to receive the most testing
24 Software Process
Extreme programming
New approach to development based on the
development and delivery of very small increments of
functionality
25 Software Process
6. Spiral development
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.
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
26 Software Process
Spiral model of the software process
Determine objectives
Evaluate alternatives
alternatives and identify, resolve risks
constraints Risk
analysis
Risk
analysis
Risk
analysis Opera-
Prototype 3 tional
Prototype 2 protoype
Risk
REVIEW analysis Proto-
type 1
Requirements plan Simulations, models, benchmarks
Life-cycle plan Concept of
Operation S/W
requirements Product
design Detailed
Requirement design
Development
plan validation Code
Design Unit test
Integration
and test plan V&V Integr ation
Plan next phase test
Acceptance
Service test Develop, verify
next-level product
27 Software Process
Spiral model sectors
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
28 Software Process
Software Process Major Activities
29 Software Process
I. Software specification
The process of establishing what services are
required and the constraints on the system’s operation
and development
30 Software Process
The requirements engineering process
Feasibility Requirements
study elicitation and
analysis
Requir ements
specification
Feasibility Requirements
report validation
System
models
User and system
requirements
Requirements
document
31 Software Process
II. Software design and implementation
32 Software Process
Design process activities
Architectural design
Abstract specification
Interface design
Component design
Data structure design
Algorithm design
33 Software Process
The software design process
Requirements
specification
Design activities
Software Data
Sy stem Interface Component Algorithm
specification structure
architecture specification specification specification
specification
Design products
34 Software Process
Design methods
Systematic approaches to developing a
software design
35 Software Process
Programming and debugging
Translating a design into a program and
removing errors from that program
36 Software Process
The debugging process
37 Software Process
III Software validation
Verification and validation is intended to show that a
system conforms to its specification and meets the
requirements of the system customer
38 Software Process
The testing process
Unit
testing
Module
testing
Sub-system
testing
System
testing
Acceptance
testing
40 Software Process
Testing phases
41 Software Process
IV Software evolution
42 Software Process
System evolution
Existing New
systems system
43 Software Process
Automated process support (CASE)
Computer-aided software engineering (CASE) is
software to support software development and evolution
processes
Activity automation
Graphical editors for system model development
Data dictionary to manage design entities
Graphical UI builder for user interface construction
Debuggers to support program fault finding
Automated translators to generate new versions of a
program
44 Software Process
CASE technology
CASE technology has led to significant
improvements in the software process though
not the order of magnitude improvements that were
once predicted
Software engineering requires creative thought - this
is not readily automatable
45 Software Process
CASE classification
Classification helps us understand the different
types of CASE tools and their support for process
activities
Functional perspective
Tools are classified according to their specific function
Process perspective
Tools are classified according to process activities that are
supported
Integration perspective
Tools are classified according to their organisation into
integrated units
46 Software Process
Functional tool classification
Tool type Examples
Planning tools PERT tools, estimation tools,
spreadsheets
Editing tools Text editors, diagram editors, word
processors
Change management tools Requirements traceability tools, change
control systems
Configuration management tools Version management systems, system
building tools
Prototyping tools Very high-level languages,
user interface generators
Method-support tools Design editors, data dictionaries, code
generators
Language-processing tools Compilers, interpreters
Program analysis tools Cross reference generators, static
analysers, dynamic analysers
Testing tools Test data generators, file comparators
Debugging tools Interactive debugging systems
Documentation tools Page layout programs, image editors
Re-engineering tools Cross-reference systems, program re-
structuring systems
47 Software Process
Reengineering tools
Testing tools
Debugging tools
Language-processing
tools
Prototyping tools
Configuration
management tools
Documentation tools
Editing tools
Planning tools
Tools
Support individual process tasks such as design consistency
checking, text editing, etc.
Workbenches
Support a process phase such as specification or design,
Normally include a number of integrated tools
Environments
Support all or a substantial part of an entire software
process. Normally include several integrated workbenches
49 Software Process
Tools, workbenches, environments
CASE
technology
Analysis and
Programming Testing
design
50 Software Process
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
51 Software Process
Key points
Requirements engineering is the process of developing a
software specification
Design and implementation processes transform the
specification to an executable program
Validation involves checking that the system meets to its
specification and user needs
Evolution is concerned with modifying the system after it
is in use
CASE technology supports software process activities
52 Software Process
Thank you!
53 Software Process