45
June 16, 2022 1 Chapter 2 Software Development Models SOFTWARE SYSTEM ENGINEERING (260CT)

Software System Engineering - Chapter 2

Embed Size (px)

DESCRIPTION

Software System Engineering

Citation preview

Page 1: Software System Engineering - Chapter 2

April 13, 2023 1

Chapter 2Software Development Models

SOFTWARE SYSTEM ENGINEERING

(260CT)

Page 2: Software System Engineering - Chapter 2

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.

Page 3: Software System Engineering - Chapter 2

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.

Page 4: Software System Engineering - Chapter 2

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

Page 5: Software System Engineering - Chapter 2

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

Page 6: Software System Engineering - Chapter 2

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

Page 7: Software System Engineering - Chapter 2

April 13, 2023 7

Page 8: Software System Engineering - Chapter 2

April 13, 2023 8

AdvantagesAdvantages

It is easy to identify milestones It is easy to separate one stage from another

Page 9: Software System Engineering - Chapter 2

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.

Page 10: Software System Engineering - Chapter 2

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

Page 11: Software System Engineering - Chapter 2

April 13, 2023 11

Definition

“Limited, working version of a system under development”

Page 12: Software System Engineering - Chapter 2

April 13, 2023 12

Prototyping Paradigm

Page 13: Software System Engineering - Chapter 2

April 13, 2023 13

Types of prototyping

Evolutionary prototyping Throw-away prototyping

Page 14: Software System Engineering - Chapter 2

April 13, 2023 14

Evolutionary Prototyping

Starts with those requirements that are well understood

Page 15: Software System Engineering - Chapter 2

April 13, 2023 15

Throw away prototyping

Starts with those requirements that are poorly understood

Page 16: Software System Engineering - Chapter 2

April 13, 2023 16

Prototyping techniques

High level languages Executable specification languages Composition of reusable components Application generators and forth-

generation languages

Page 17: Software System Engineering - Chapter 2

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

Page 18: Software System Engineering - Chapter 2

April 13, 2023 18

Disadvantages of prototyping

Managing the project Adopting an incomplete system as

complete

Page 19: Software System Engineering - Chapter 2

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.

Page 20: Software System Engineering - Chapter 2

April 13, 2023 20

RAD Model…contRAD Model…cont

Page 21: Software System Engineering - Chapter 2

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

Page 22: Software System Engineering - Chapter 2

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

Page 23: Software System Engineering - Chapter 2

April 13, 2023 23

The Incremental Model…contThe Incremental Model…cont

Page 24: Software System Engineering - Chapter 2

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

Page 25: Software System Engineering - Chapter 2

April 13, 2023 25

The Spiral ModelThe Spiral Model

Page 26: Software System Engineering - Chapter 2

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

Page 27: Software System Engineering - Chapter 2

April 13, 2023 27

WINWIN Spiral ModelWINWIN Spiral Model

Page 28: Software System Engineering - Chapter 2

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

Page 29: Software System Engineering - Chapter 2

April 13, 2023 29

The Component Assembly ModelThe Component Assembly Model

Page 30: Software System Engineering - Chapter 2

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.

Page 31: Software System Engineering - Chapter 2

April 13, 2023 31

The Concurrent Development ModelThe Concurrent Development Model

Page 32: Software System Engineering - Chapter 2

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

Page 33: Software System Engineering - Chapter 2

April 13, 2023 33

Best Practice

Iterative and incremental development Component-based development Requirements-driven development Configurability Architecture-centrism Visual modelling techniques

Page 34: Software System Engineering - Chapter 2

April 13, 2023 34

Four Phases

Inception Elaboration Construction Transition

Page 35: Software System Engineering - Chapter 2

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

Page 36: Software System Engineering - Chapter 2

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

Page 37: Software System Engineering - Chapter 2

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

Page 38: Software System Engineering - Chapter 2

April 13, 2023 38

Requirements

Analysis

Design

Implementation

Test

Requirements

Analysis

Design

Implementation

Test

Page 39: Software System Engineering - Chapter 2

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

Page 40: Software System Engineering - Chapter 2

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

Page 41: Software System Engineering - Chapter 2

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

Page 42: Software System Engineering - Chapter 2

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

Page 43: Software System Engineering - Chapter 2

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

Page 44: Software System Engineering - Chapter 2

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

Page 45: Software System Engineering - Chapter 2

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