Download - Software System Engineering - Chapter 2
April 13, 2023 1
Chapter 2Software Development Models
SOFTWARE SYSTEM ENGINEERING
(260CT)
April 13, 2023 2
Motivation/ObjectiveMotivation/Objective
To distinguish the differences from another model to another
To understand the importance of process in the development of software.
April 13, 2023 3
Software Development ModelsSoftware Development Models
Software lifecycle models identify the key activities in the development of a software system and their relationships to one another.
April 13, 2023 4
Models discussed:Models discussed:
Linear Sequential Model/Waterfall Model Prototyping RAD Model Evolutionary Software Process Models
• The Incremental Model
• The Spiral Model
• The WINWIN Spiral Model
• The Component Assembly Model
• The Concurrent Development Model
April 13, 2023 5
Linear Sequential/Waterfall ModelLinear Sequential/Waterfall Model
The Waterfall Model was originally developed in the early 1970s in an attempt to provide some structure to large-scale software development
The mother of all software engineering models Divided into distinct phases Recognizes the importance of backtracking (feedback)
and iteration in the software process
April 13, 2023 6
Linear Sequential/Waterfall ModelLinear Sequential/Waterfall Model
Problem encountered:
• Real projects rarely follow the sequential flow that the model proposed
• It is often difficult for the customer to state all the requirement explicitly
• The customer must have patience
April 13, 2023 7
April 13, 2023 8
AdvantagesAdvantages
It is easy to identify milestones It is easy to separate one stage from another
April 13, 2023 9
DisadvantagesDisadvantages
Implies that any stage should be frozen before continuing with the later stages (resulting in premature requirements, design, coding etc)
Assumes that user requirements can be precisely specified.
Requires customer to be patient as no way they can assessing how far the development process has got until they sees the nearly-finished product
Unrealistic.
April 13, 2023 10
Suitable for unclear projects.
Pros:
identifying requirements
users get a feeling for the system
developers get to "do something"
Cons:
customer demands working product too early
bad solutions will remain: throw-away or not?
PrototypingPrototyping
April 13, 2023 11
Definition
“Limited, working version of a system under development”
April 13, 2023 12
Prototyping Paradigm
April 13, 2023 13
Types of prototyping
Evolutionary prototyping Throw-away prototyping
April 13, 2023 14
Evolutionary Prototyping
Starts with those requirements that are well understood
April 13, 2023 15
Throw away prototyping
Starts with those requirements that are poorly understood
April 13, 2023 16
Prototyping techniques
High level languages Executable specification languages Composition of reusable components Application generators and forth-
generation languages
April 13, 2023 17
Advantages of prototyping
Changing the system early in its development
Scrapping undesirable systems Designing a systems for user’s needs
and expectations
April 13, 2023 18
Disadvantages of prototyping
Managing the project Adopting an incomplete system as
complete
April 13, 2023 19
RAD ModelRAD Model
Suitable for projects with low technical risks Emphasize on an extremely short development cycle. RAD is a methodology for compressing the analysis, design,
build, and test phases into a series of short, iterative development cycles
Pros:
Speed.
Reuse. Cons:
Requires many developers.
Requires committed developers.
April 13, 2023 20
RAD Model…contRAD Model…cont
April 13, 2023 21
Evolutionary Software Process ModelsEvolutionary Software Process Models
The Incremental Model The Spiral Model WINWIN Spiral Model The Component Assembly Model The Concurrent Development Model
April 13, 2023 22
The Incremental ModelThe Incremental Model
Suitable for products that can be developed in increments. Combines elements of linear sequential model with the iterative
philosophy of prototyping Pros:
resolves changing/unclear requirements
possible to meet business deadlines with little staff
management of technical risks Cons:
untried?
building in bad solutions
April 13, 2023 23
The Incremental Model…contThe Incremental Model…cont
April 13, 2023 24
The Spiral ModelThe Spiral Model Suitable for large-scale projects. Pros:
prototyping at any stage
risk reduction as risk analysis is performed at each phase of system development
Increases the quality of the software developed Cons:
suitable for internal or in-house development of large software
risk assessment expertise required
April 13, 2023 25
The Spiral ModelThe Spiral Model
April 13, 2023 26
WINWIN Spiral ModelWINWIN Spiral Model
Extension from Spiral Model Evolutionary and risk-driven Anchor points as milestones Theory W – ‘Make everyone a winner’ Stakeholders
• Customers and Users
• Developers, maintainers and contractors
• Management and investors Achieving WINWIN
• Negotiation and Prioritization
April 13, 2023 27
WINWIN Spiral ModelWINWIN Spiral Model
April 13, 2023 28
The Component Assembly ModelThe Component Assembly Model Suitable for component-based technologies such as OO. Pros:
software reuse
reductions in cycle time
lower project costs Cons:
Finding components
Are components reusable?
Adaptation
April 13, 2023 29
The Component Assembly ModelThe Component Assembly Model
April 13, 2023 30
The Concurrent Development ModelThe Concurrent Development Model
Suitable for all types of projects - "this is how it works anyhow."
Pros:
Provides both process visibility and concurrent phases
Cons:
Complicated to keep track of - requires tools.
April 13, 2023 31
The Concurrent Development ModelThe Concurrent Development Model
April 13, 2023 32
Unified Software Development Process
Developed by the team that created UML Embodies best practice in system
development Adopts an iterative approach with four
main phases Different tasks are captured in a series of
workflows
April 13, 2023 33
Best Practice
Iterative and incremental development Component-based development Requirements-driven development Configurability Architecture-centrism Visual modelling techniques
April 13, 2023 34
Four Phases
Inception Elaboration Construction Transition
April 13, 2023 35
Phases, Workflows and Iterations
Within each phase activities are grouped into workflows
The balance of effort spent in each workflow varies from phase to phase
Within phases there may be more than one iteration
April 13, 2023 36
Size of square relative to time spent on workflowh
Inception Elaboration Construction Transition
Project Phases
1 2 3 4 5 6 7 8Iterations within each phase
Requirements
Analysis
Design
Implementation
Test
Workflows
April 13, 2023 37
Difference from Waterfall Life Cycle
In a waterfall life cycle project the phases and the workflows are linked together
In the Requirements phase, only Requirements workflow activities are carried out
All Requirements activity should be completed before work starts on Analysis
In an iterative life cycle project it is recognised that some Requirements work will be happening alongside Analysis work
April 13, 2023 38
Requirements
Analysis
Design
Implementation
Test
Requirements
Analysis
Design
Implementation
Test
April 13, 2023 39
Major Activities of the Development Process
Activity Techniques Key Deliverables
Requirements Capture and Modelling
Requirements Elicitation
Use Case Modelling
Prototyping
Use Case Model
Requirements List
Prototypes
Glossary
April 13, 2023 40
Major Activities of the Development Process
Activity Techniques Key Deliverables
Requirements Analysis
Collaboration Diagrams
Class and Object Models
Analysis Modelling
Analysis Models
April 13, 2023 41
Major Activities of the Development Process
Activity Techniques Key Deliverables
System Design
Deployment Modelling
Component Modelling
Package Modelling
Architectural Modelling
Overview Design and Implementation Architecture
April 13, 2023 42
Major Activities of the Development Process
Activity Techniques Key Deliverables
Class Design Class and Object Modelling
Interaction Modelling
State Modelling
Design Patterns
Design Models
April 13, 2023 43
Major Activities of the Development Process
Activity Techniques Key Deliverables
User Interface Design
Class and Object Modelling
Interaction Modelling
State Modelling
Package Modelling
Prototyping
Design Patterns
Design Models with Interface Specification
April 13, 2023 44
Major Activities of the Development Process
Activity Techniques Key Deliverables
Data Management Design
Class and Object Modelling
Interaction Modelling
State Modelling
Package Modelling
Design Patterns
Design Models with Database Specification
April 13, 2023 45
Major Activities of the Development Process
Activity Techniques Key Deliverables
Construction Programming
Component Re-use
Database DDL
Programming Idioms
Constructed System
Documentation