Professional Documents
Culture Documents
SOFTWARE PROCESSES
Software Engineering
Objectives
2
Architectural
design
Detailed
design
Coding and
unit testing
Integration
and testing
Operation and
maintenance
Waterfall Model
Requirements analysis and definition: The functionalities to be provided by
the system (e.g a search engine, a password-protected login) are
established through consultation with end-users.
System and software design: During this phase, an overall system architecture
is established so that the developer can get an idea how the different subsystems interact together.
Implementation and Unit testing: During this stage, the software is
implemented as a set of programs or program units, using an appropriate
programming platform. After the software has been implemented, the
software is tested to ensure that it is working properly.
Waterfall Model
6
Activity 1
10
Give an example
(1) where it is advisable to use waterfall model as a
software process (with justifications).
(2) where it is not advisable to use waterfall model
as a software process (with justification)
A prototype is a simplified subset of the proposed system that simulates the actual processing
that will be done by the real system. Typically it consists of a few screen designs and reports
that provide just sufficient functionality to allow users to experience how the proposed system
might look and feel.
the customer defines a general set of objectives for software but does not provide detailed
requirements,
OR, the developer may be unsure about the efficiency of an algorithm, the adaptability of an
operating system, the form of human-machine interaction.
The end-product should be better requirements definition for the final software.
Prototyping Model
13
Prototyping Model
14
Note: Iteration occurs as the prototype is tuned to satisfy the needs of the
customer and the developer better understands what needs to be done.
Benefits of Prototypes
15
Drawbacks of Prototypes
16
The customer may want to adopt the prototype which he/she sees as a
working version of the software. He may be unaware that the prototype is
a quick-and-dirty solution.
Some prototypes are so realistic that they give the impression that the
project is almost finished whilst still at the systems analysis stage. This can
put severe pressure on the development team.
There is always the risk that the developer forgets about initial inhibitions and adopt
these as long-term solutions.
Activity 2 (Group)
17
Determine objectives
alternatives and
constraints
Risk
analysis
Evaluate alternatives
identify, resolve risks
Risk
analysis
Risk
analysis
REVIEW
Requirements plan
Life-cycle plan
Development
plan
Integration
and test plan
Prototype 3
Prototype 2
Operational
protoyp e
Risk
analysis Prototype 1
S/W
requirements
Requirement
validation
Product
design
Detailed
design
Code
Unit test
Design
V&V
Integr ation
test
Acceptance
test
Develop, v erify
Service
next-level product
Spiral Model
19
No fixed phases such as specification or design - loops in the spiral are chosen
depending on what is required
Each pass through planning sector results in adjustments to project plan, cost,
schedule, no. of iterations
1. Objective setting
Specific objectives for the phase are identified
Constraints on the process are identified and a detailed
management plan is drawn up
Identify project risks
Alternative strategies planned
2. Risk assessment and reduction
Risks are assessed and activities put in place to reduce the
key risks E.g. if there is a risk that requirements are
inappropriate, a prototype may be developed
A development model for the system is chosen which can be any of the generic
models
E.g.if user interface risks are dominant, prototyping model is chosen; if safety risks
are considered, Formal Systems Model is chosen
4. Planning
The project is reviewed and the next phase of the spiral is planned
Incremental Model
25
Incremental Model
26
The plan addresses the modification of the core product to better satisfy
customer needs and the delivery of additional features and functionality
(< 20,000 loc). Increment should at least deliver some system functionality.
Hard to decide on the right size of each increment
Contractual problems
The normal contract may include a specification; without a specification,
different forms of contract have to be used.
Validation problems
Without a specification, what is the system being tested against?
Maintenance problems
Continual change tends to corrupt software structure making it more
expensive to change and evolve to meet new requirements.
08/06/11
31
32
Drawbacks of RAD
37
Agile methods break tasks into small increments with minimal planning, and
do not directly involve long-term planning.
Iterations are short time frames known as timebox that typically last from
one to four weeks.
This helps minimize overall risk, and lets the project adapt to changes
quickly.
Team composition in an agile project is usually cross-functional and selforganizing without consideration for any existing corporate hierarchy or the
corporate roles of team members.
Team members normally take responsibility for tasks that deliver the
functionality an iteration requires.
Agile Methods
Dissatisfaction with the overheads involved in design methods
led to the creation of agile methods. These methods:
Agile methods are probably best suited to small/mediumsized business systems or PC products.
Description
Customer involvement
Incremental delivery
Embrace change
Maintain simplicity
08/06/11
08/06/11
Select user
stories for this
release
Evaluate
system
Break down
stories to tasks
Release
software
Plan release
Develop/integ
rate/
test software
08/06/11
Small Releases
Simple Design
Refactoring
Collective Ownership
Continuous Integration
Sustainable pace
On-site Customer
Requirements Scenarios
In XP, user requirements are expressed as
scenarios or user stories.
These are written on cards and the development
team break them down into implementation tasks.
These tasks are the basis of schedule and cost
estimates.
The customer chooses the stories for inclusion in the
next release based on their priorities and the
schedule estimates.
XP and Change
Conventional wisdom in software engineering is to
design for change. It is worth spending time and
effort anticipating changes as this reduces costs
later in the life cycle.
XP, however, maintains that this is not worthwhile
as changes cannot be reliably anticipated.
Rather, it proposes constant code improvement
(refactoring) to make changes easier when they
have to be implemented.
Testing in XP
Test-first development.
Incremental test development from scenarios.
User
involvement in test development and
validation.
Automated test harnesses are used to run all
component tests each time that a new release is
built.
08/06/11
Pair Programming
In XP, programmers work in pairs, sitting together to develop
code.
This helps develop common ownership of code and spreads
knowledge across the team.
It serves as an informal review process as each line of code is
looked at by more than 1 person.
It encourages refactoring as the whole team can benefit from
this.
Measurements suggest that development productivity with
pair programming is similar to that of two people working
independently.
08/06/11
Activity 3
55
Answer Activity 3
56
Answer Activity 3
57
What are the barriers to introducing agile methods into large companies?
Project managers may be reluctant to accept the risks of a new approach.
The established quality procedures in large companies may be incompatible with
the informal approach to documentation in agile methods.
The existing teams may not have the high level of skills to make use of agile
methods.
There may be cultural resistance if there is a long history of plan-driven
development in the company.
This approach is becoming more important but still limited experience with it
Analysis
Specification
Design
Implementation
Testing
Maintenance
60
Component-Based (Re-use)
Development Model
Philosophy:
Advantages:
Reduces the amount of software to be developed and so
reduces cost and risk.
Leads to faster delivery of software
Drawbacks
61
Customer
Characteristics
Business
Conditions
Process
People
Technology
Development
Environment
Summary
1.0 The Waterfall Model
2.0 Evolutionary Process Models
2.1 Prototyping
2.2 The Spiral Model
3.0 Incremental Process Models
3.1 The Incremental Model
3.2 The RAD Model
4.0 Specialised Process Models
4.1 Component-Based Development
5.0 Unified Process Modelling
6.0 Software Process Improvement
Key points
An iterative approach to software development leads to
faster delivery of software.
Agile methods are iterative development methods that aim to
reduce development overhead and so produce software
faster.
Extreme programming includes practices such as systematic
testing, continuous improvement and customer involvement.
The approach to testing in XP is a particular strength where
executable tests are developed before the code is written.
The need for SPI has been pointed out as critical to the success
of a software process.
Acknowledgements