0% found this document useful (0 votes)
29 views

CSC577 - Chapter 2 - Software Process

Uploaded by

Zufairi Irfan
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views

CSC577 - Chapter 2 - Software Process

Uploaded by

Zufairi Irfan
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 57

CHAPTER 2 –

SOFTWARE PROCESS
Software
Processes
The software process

• A structured set of activities required to develop a software system.


• Many different software processes but all involve:
• Specification
• Design and implementation
• Validation
• Evolution
• A software process model is an abstract representation of a process. It
presents a description of a process from some particular perspective.
Software process descriptions

• Process descriptions may also include:


• Product
• Roles
• Pre- and post-conditions
Plan Driven
vs
Agile
Plan-driven processes are processes
where all of the process activities are
planned in advanced and progress is
Plan-driven measured against this plan.

and agile
processes In agile processes, planning is
incremental and it is easier to change
the process to reflect changing
customer requirements.
Software process models

• The waterfall model


• Plan-driven model. Separate and distinct phases of specification and development.
• Incremental development
• Specification, development and validation are interleaved. May be plan-driven or
agile.
• Reuse-oriented software engineering
• The system is assembled from existing components. May be plan-driven or agile.
• In practice, most large systems are developed using a process that incorporates elements
from all of these models.
Waterfall
model
The waterfall
model
Waterfall model problems

• Inflexible partitioning of the project into distinct stages makes it difficult to


respond to changing customer requirements.
• Therefore, this model is only appropriate when the requirements are well-
understood and changes will be fairly limited during the design process.
• Few business systems have stable requirements.
• The waterfall model is mostly used for large systems engineering projects where a
system is developed at several sites.
• In those circumstances, the plan-driven nature of the waterfall model helps
coordinate the work.
Incremental
Development
Incremental
development
Incremental development benefits
The cost of accommodating changing customer requirements is reduced.

It is easier to get customer feedback on the development work that has


been done.

More rapid delivery and deployment of useful software to the customer is


possible.
The process is not visible.
Incremental
development
problems System structure tends to
degrade as new increments are
added.
Reuse Software
Engineering
Reuse-oriented software engineering

• 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.
• Reuse is now the standard approach for building many types of business
system
Reuse-oriented Software Engineering
Types of software component

01 02 03
Web services that are Collections of objects Stand-alone software
developed according to that are developed as a systems (COTS) that
service standards and package to be are configured for use
which are available for integrated with a in a particular
remote invocation. component framework environment.
such as .NET or JEE.
Process
Activities
Process activities

• Real software processes are inter-leaved sequences of technical,


collaborative and managerial activities with the overall goal of specifying,
designing, implementing and testing a software system.
• The four basic process activities of specification, development, validation
and evolution are organized differently in different development
processes. In the waterfall model, they are organized in sequence, whereas
in incremental development they are inter-leaved.
Feasibility study
The process of establishing
what services are required
and the constraints on the
system’s operation and
development.
Requirements elicitation
and analysis

Software Requirements engineering


process
specification Requirements specification

Requirements validation
The requirements
engineering process
Software design and implementation

The process of
converting the system
Software design Implementation
specification into an
executable system.

Design a software Translate this structure


structure that realises into an executable
the specification; program;
A general
model of the
design
process
Design activities

Architectural design, where you identify the overall structure of the system, the principal components
(sometimes called sub-systems or modules), their relationships and how they are distributed.

Interface design, where you define the interfaces between system components.

Component design, where you take each system component and design how it will operate.

Database design, where you design the system data structures and how these are to be represented in
a database.
Software Validation
and Testing
Software validation
Verification and validation (V & V)
is intended to show that a system
Involves checking and review
conforms to its specification and
processes and system testing.
meets the requirements of the
system customer.

System testing involves executing


the system with test cases that
Testing is the most commonly
are derived from the specification
used V & V activity.
of the real data to be processed
by the system.
Development or component testing

• Individual components are tested independently;


• Components may be functions or objects or
coherent groupings of these entities.

Testing System testing

stages • Testing of the system as a whole. Testing of


emergent properties is particularly important.

Acceptance testing

• Testing with customer data to check that the


system meets the customer’s needs.
Testing phases in a plan-driven software process
Software evolution

• Software is inherently flexible and can change.


• As requirements change through changing business circumstances, the
software that supports the business must also evolve and change.
Software
Prototyping
A prototype is an initial The requirements
version of a system used to engineering process to help
demonstrate concepts and with requirements
try out design options. elicitation and validation;

Software A prototype can be used in:


In design processes to
explore options and

prototyping develop a UI design;

In the testing process to run


back-to-back tests.
Improved system usability.

A closer match to users’ real needs.

Benefits of Improved design quality.


prototyping
Improved maintainability.

Reduced development effort.


The Process of Prototype Development
May be based on rapid prototyping languages or tools

Prototype May involve leaving out functionality

• Prototype should focus on areas of the product that are not well-
development understood;
• Error checking and recovery may not be included in the prototype;
• Focus on functional rather than non-functional requirements such as
reliability and security
Throw-away prototypes

• Prototypes should be discarded after development as they are not a good


basis for a production system:
• It may be impossible to tune the system to meet non-functional
requirements;
• Prototypes are normally undocumented;
• The prototype structure is usually degraded through rapid change;
• The prototype probably will not meet normal organisational quality
standards.
Incremental
Development And
Incremental Delivery
Incremental delivery

• 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.
Incremental development

• Develop the system in increments and evaluate


each increment before proceeding to the
development of the next increment;
• Normal approach used in agile methods;
Incremental • Evaluation done by user/customer proxy.

development Incremental delivery


and delivery • Deploy an increment for use by end-users;
• More realistic evaluation about practical use of
software;
• Difficult to implement for replacement systems
as increments have less functionality than the
system being replaced.
Incremental delivery
Customer value can be delivered with
each increment so system functionality
is available earlier.

Incremental Early increments act as a prototype to


help elicit requirements for later
delivery increments.

advantages
Lower risk of overall project failure.

The highest priority system services


tend to receive the most testing.
Incremental delivery problems

Hard to identify Conflicts with the


Difficult to get useful customer
common facilities that are procurement model of
feedback
needed by all increments many organizations
BOEHM’s
Spiral Model
Boehm’s Spiral Model of the software
process
Objective setting

Spiral Risk assessment and reduction

model
sectors Development and validation

Planning
Spiral model usage

Spiral model has been very


influential in helping people think
In practice, however, the model
about iteration in software
is rarely used as published for
processes and introducing the
practical software development.
risk-driven approach to
development.
RUP
The Rational Unified Process
A modern generic process derived from the work on the UML and
associated process.

Brings together aspects of the 3 generic process models discussed


previously.

A dynamic perspective that shows phases over time;


Normally described from 3 A static perspective that shows process activities;
perspectives A practice perspective that suggests good practice.
Inception

Elaboration

RUP phases
Construction

Transition
RUP iteration

In-phase Cross-phase
iteration iteration
Workflow Description
Business modelling The business processes are modelled using
business use cases.

Static Requirements Actors who interact with the system are


identified and use cases are developed to
workflows in model the system requirements.

the Rational Analysis and design A design model is created and documented
using architectural models, component
Unified models, object models and sequence models.

Process
Implementation The components in the system are
implemented and structured into
implementation sub-systems. Automatic code
generation from design models helps
accelerate this process.
Workflow Description
Testing Testing is an iterative process that is carried
out in conjunction with implementation.
System testing follows the completion of the
implementation.
Deployment A product release is created, distributed to
Static users and installed in their workplace.
workflows in Configuration This supporting workflow managed changes
and change to the system.
the Rational management
Unified Project This supporting workflow manages the system
management development.
Process Environment This workflow is concerned with making
appropriate software tools available to the
software development team.
RUP good practice

1 2 3 4 5 6
Develop Manage Use component- Visually model Verify software Control changes
software requirements based software quality to software
iteratively architectures
Small Programming
vs
Large Programming
Programming in the small vs.
Programming in the large

• Programming in the small is a single-person


activity concerned with the development of
single-version software which is both specified
and meant to be used by the person who
develops it.

• Programming in the large is a multi-person


activity concerned with the development of
multi-version software which is both specified
and meant to be used by people other than the
team who develops it.
Differences between programming in the large and
programming in the small

programming in the small is a personal endeavour, while programming


in the large is a collective one;

programming in the small requires no communication between


developers, while programming in the large does;

software resulting from programming in the small is a one-off stable


product, while software resulting from programming in the large is
expected to undergo many changes.
End of chapter

You might also like