Software Process - Topic 2lecturer 2 - Software Process PDF
Software Process - Topic 2lecturer 2 - Software Process PDF
Contents
Software Process
Software Process Model
Generic Software Process Models:
The Waterfall Model
Incremental Development
Reuse-oriented (component-based) Software Engineering
Software Prototyping
Incremental Delivery
Boehms Spiral Model
Rational Unified Process
Formal Methods
Introduction
Software Engineering is a layered technology.
It encompasses a process, methods and tools, and
based on a quality aspect.
Tools
How to build the
software (i.e. tasks)
Automated or semi-automated
support for the process &
methods
Methods
Process
A Quality Aspect
Organisations
commitment on quality
The GLUE
RECAP
What are the attributes of good software?
Quality Aspect
The software should deliver the required functionality and
performance (efficient) to the user and should be maintainable,
dependable and acceptable.
Efficiency (Performance)
Software should not make wasteful use of system resources
Maintainability
Software must evolve to meet changing needs
Dependability (Reliability)
Software must be trustworthy
Acceptability (Usability)
Software must be accepted by the users for which it was designed:
understandable, usable and compatible with other systems
(portability).
Validation
Developed software is checked to ensure it does what customer
wants.
Evolution
Running software must evolve eventually to meet the changing
customer needs.
Reusability management
Defines criteria and strategy to reuse components.
Measurement
Define and collect process, product and project measures for improvement.
Risk management
Assess risks that may affect the outcomes of the project or quality of the
product.
Incremental development
Specification, development and validation are interleaved. May be
plan-driven or agile.
Incremental Development
The idea:
1) Develop an initial implementation.
2) Expose it to users for review and comments.
3) Refining it through many versions until complete.
Concurrent
acti vities
Specification
Outline
description
Development
Validation
Initial
version
Intermedia
te
Intermediate
versions
versions
Final
version
Incremental Development
PRO:
The cost of accommodating changing customer
requirements is reduced.
The amount of analysis and documentation that has to be redone is
much less than is required with the waterfall model.
Incremental Development
CON:
Lack of process visibility.
Too quickly means not effective to produce documents so
often - Managers normally need reports/deliverables to
measure progress.
Incremental Development
When to use?
For small or medium-size interactive systems:
Customers feedback is important;
Increments are easier to manage.
Reuse--oriented SE
Reuse
Reuse--oriented SE
Reuse
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--oriented SE
Reuse
Types of software components
Web services that are developed according to service
standards and which are available for remote
invocation.
Collections of objects that are developed as a
package to be integrated with a component
framework such as .NET or J2EE.
Stand-alone software systems (COTS) that are
configured for use in a particular environment.
Software Prototyping
A prototype is an initial version of a system used
to demonstrate concepts and try out design
options.
A prototype can be used in:
The requirements engineering process to help with
requirements elicitation and validation;
In design processes to explore options and develop a
user interface design;
In the testing process to run back-to-back tests.
Software Prototyping
May be based on rapid prototyping languages or
tools.
May involve leaving out functionality.
Prototype should focus on areas of the product that
are not well-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.
Software Prototyping
Advantages:
Software Prototyping
Process
Establish
prototype
objecti ves
Define
prototype
functionality
Develop
prototype
Evalua te
prototype
Prototyping
plan
Outline
definition
Executa b le
prototype
Evalua tion
repor t
Software Prototyping
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 nonfunctional 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 Delivery
An iterative approach of the waterfall model.
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 Delivery
increment # n
Com m un ic a t i on
Pla n ni ng
M o de li ng
a nal y s is
d es i gn
Co n s t r u c t i o n
c od e
t es t
De p l o y m e n t
de liv e ry
fe e db a c k
deliv ery of
nt h increment
increment # 2
Com mu ni c a t i on
Pla n ni ng
M o de li ng
a naly s is
d es ig n
Co n s t ru c t i o n
c ode
De p l o y m e n t
t es t
d e l i v e ry
fe e db a c k
increment # 1
Com mu ni c a t i on
Pla n ni ng
M o de li ng
a naly s is
d es ig n
Co n s t ru c t i o n
c ode
De p l o y m e n t
t es t
d e l i v e ry
fe e db a c k
deliv ery of
1st increment
delivery of
2nd increment
Incremental Delivery
Incremental 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
PRO:
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.
Incremental Delivery
CON:
Increments should be relatively small (<20,000 lines of code).
Or else, problems would arise.
Incremental Delivery
When to use?
It is particularly useful when staffing is limited/unavailable.
Early increments can be developed with fewer people.
When satisfactory, more additional staff can be added for later stages.
Incremental Development/Delivery
versus Prototyping
Incremental development/delivery
Aim: To work with customers and evolve a final system from an initial
outline specification.
Should start with well-understood requirements and add new features
as proposed by the customers.
Throw-away prototyping
Aim: To understand the system requirements.
Should start with poorly understood requirements to clarify what is
really needed.
Once the requirements are understood, the prototype may be thrownaway and the actual development starts.
Evaluate alternatives,
identify, resolve risks
Planning
The project is reviewed and the next phase of the spiral is planned.
CON:
Difficult to convince users (in contracts) that the process is
controllable.
Require risk managers/experts to succeed.
If a major risk is not uncovered and managed, problems occur.
In-phase iteration
Each phase is iterative with results developed incrementally.
Cross-phase iteration
The whole set of phases may be enacted incrementally.
Elaboration
Develop an understanding of the problem domain and the
system architecture.
Construction
System design, programming and testing.
Transition
Deploy the system in its operating environment.
Manage requirements
Explicitly document customer requirements and keep track
of changes to these requirements.
Formal Methods
A set of activities that leads to formal mathematical
specification of software.
It enables engineers to specify, develop and verify a
software by applying a rigorous, mathematical
notation e.g. VDM, Z, B.
Ambiguity, incompleteness and inconsistency can be
discovered and corrected through mathematical
analysis.
Formal Methods
Example: B Method
OPERATIONS
INVARIANT
placeBid(uu,aa,bb) =
PRE uu : USER & aa : AUCTION & bb : NAT1
auction : POW(AUCTION) &
THEN
registered : POW(USER) &
SELECT
reserve : auction --> NAT1 &
aa : auction &
highest_bid : auction --> NAT &
aa : dom(highest_bidder) &
seller : auction --> registered &
uu /= seller(aa) &
uu /= highest_bidder(aa) &
highest_bidder : auction +-> registered &
bb > highest_bid(aa) &
balance : registered --> NAT &
bb <= balance(uu) &
name : registered >-> STRINGS &
auction_state(aa) = bidding &
password : registered --> STRINGS &
user_state(uu) = loggedIn
admin_amount : NAT &
THEN
highest_bidder(aa) := uu ||
auction_state : auction --> AUCTION_STATE &
highest_bid(aa) := bb ||
user_state : registered --> USER_STATE &
balance := balance <+ {uu |-> balance(uu) !(aa).(aa : auction => (seller(aa) /= highest_bidder(aa) ))
bid , highest_bidder(aa) |->
balance(highest_bidder(aa)) +
highest_bid(aa)}
END
END
;
Formal Methods
PRO:
Offers the promise of defect-free software.
CON:
The development of formal models is currently quite
time consuming.
Extensive training is required before applying the
method.
Difficult to use the models as a communication
mechanism for non-technical end users.
THANK YOU
Question?
Next :
Software Process Activities