Title: Software Process Models
1Software Process Models
- Software ProcessA structured set of activities
and associated results leading to the production
of a software product - Software Process Model
- An abstract representation of a process
2Generic software process models
- The waterfall model
- Process phases are distinct and separate
- Evolutionary development
- Process phases are interleaved
- Formal systems development
- A mathematical system model is formally
transformed to an implementation - Reuse-based development
- The system is assembled from existing components
3Generic software process models
- The waterfall model
- Process phases are distinct and separate
- Evolutionary development
- Process phases are interleaved
- Formal systems development
- A mathematical system model is formally
transformed to an implementation - Reuse-based development
- The system is assembled from existing components
4Waterfall model phases
- Five phases
- Requirements analysis and definition
- System and software design
- Implementation and unit testing
- Integration and system testing
- Operation and maintenance
- Formal sign-off at end of each phase
- Documentation as product of each phase
5Waterfall model
6Waterfall ModelAdvantages
- State of progress clear
- Good for project management
- Engineers know their tasks
- Development is (relatively) slow and deliberate
- Results in solid, well-constructed systems
7Waterfall ModelProblems
- Difficult (expensive) to accommodate change after
process is underway - Inflexible partitioning of the project into
distinct stages - E.g., difficult to respond to changing customer
requirements - Therefore, model is most appropriate when
requirements are well-understood
8Generic software process models
- The waterfall model
- Process phases are distinct and separate
- Evolutionary development
- Process phases are interleaved
- Formal systems development
- A mathematical system model is formally
transformed to an implementation - Reuse-based development
- The system is assembled from existing components
9Evolutionary development
10Evolutionary development
- Basic idea
- Build prototype version of system, seek user
comments, and keep refining until done - Other side of formality spectrum from Waterfall
Model
11Evolutionary development
- Two flavors
- Exploratory development
- Work with customers and evolve a final system
from an initial outline specification. Assumes
well-understood requirements - Throw-away prototyping
- Build straw-man as system to study. Used to
help develop better requirements.
12Evolutionary developmentAdvantages
- Systems developed faster than with Waterfall
- Particularly useful when requirements less-well
understood - Customer input throughout development yields
system closer to their (immediate) needs
13Evolutionary developmentProblems
- Lack of process visibility
- Systems 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
14Evolutionary developmentApplicability
- For small or medium-size interactive systems
- For parts of large systems (e.g. the user
interface) - For short-lifetime systems
15Generic software process models
- The waterfall model
- Process phases are distinct and separate
- Evolutionary development
- Process phases are interleaved
- Formal systems development
- A mathematical system model is formally
transformed to an implementation - Reuse-based development
- The system is assembled from existing components
16Formal 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 - Embodied in the Cleanroom approach to software
development
17Formal systems development
18Formal transformations
19Formal systems developmentAdvantages
- Transformations are small, making verification
tractable - Resulting implementations are proven to meet
specifications, so testing (of components)
unnecessary - Although, overall system characteristics (e.g.
performance, reliability) still need verification
20Formal systems developmentProblems
- Need for specialised skills and training
- Difficult to formally specify some aspects of the
system, e.g. user interfaces - Development time high (usually not worth the
time/cost)
21Formal systems developmentApplicability
- Critical systems
- especially those where a safety or security case
must be made before the system is put into
operation - Critical components within large systems
22Generic software process models
- The waterfall model
- Process phases are distinct and separate
- Evolutionary development
- Process phases are interleaved
- Formal systems development
- A mathematical system model is formally
transformed to an implementation - Reuse-based development
- The system is assembled from existing components
23Reuse-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
- This approach is becoming more important but
still limited experience with it
24Reuse-oriented development
25Summary
- Software processes
- the activities involved in producing and evolving
a software system - represented in a software process model
- General activities
- specification, design and implementation,
validation, evolution - Generic process models
- Describe the organization of software processes
- Examples waterfall model, evolutionary
development, formal systems development,
reuse-oriented development