week01b - Monash University

advertisement
CSE3308/DMS/2005/3
Monash University - School of Computer
Science and Software Engineering
Software Engineering: Analysis and
Design - CSE3308
Software Development Processes
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.1
Lecture Outline
 Traditional/Waterfall
 Prototyping
 Rapid
Application Development (RAD)
 Evolutionary



Incremental
Spiral
Component Assembly
 Agile
Methods (e.g. XP)
 Formal Methods
 Fourth Generation Techniques
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.2
The Waterfall Model
Project
Definition
Requirements
Analysis
Design
Program
Implementation
Component
Testing
Integration
Testing
System
Testing
System
Delivery
Maintenance
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.3
Waterfall Model








Most widely used, though no longer state-of-the-art
Each step results in documentation
May be suitable for well-understood developments
using familiar technology
Not suited to new, different systems because of
specification uncertainty
Difficulty in accommodating change after the process
has started
Can accommodate iteration but indirectly
Working version not available till late in process
Often get blocking states
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.4
Prototyping
 Specifying
requirements is often very difficult
 Users don’t know exactly what they want until
they see it
 Prototyping involves building a mock-up of
the system and using to obtain for user
feedback
 Closely related to what are now called “Agile
Methods”
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.5
Prototyping
Listen to
Customer
Build/Revise
Mock-up
Customer
test-drives
mock-up
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.6
Prototyping
 Ideally
mock-up serves as mechanism for
identifying requirements
 Users like the method, get a feeling for the
actual system
 Less ideally may be the basis for completed
product



prototypes often ignore quality/performance/maintenance
issues
may create pressure from users on deliver earlier
may use a less-than-ideal platform to deliver e.g Visual
Basic - excellent for prototyping, may not be as effective
in actual operation
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.7
Rapid Application Development
 Similar
to waterfall but uses a very short
development cycle (60 to 90 days to
completion)
 Uses component-based construction and
emphasises reuse and code generation
 Use multiple teams on scaleable projects
 Requires heavy resources
 Requires developers and customers who are
heavily committed
 Performance can be a problem
 Difficult to use with new technology
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.8
Rapid Application Development
Team 1
Team 2
Team 3
Business
modelling
Business
Business
modelling
modelling
Data
modelling
Data
modelling
Data
modelling
Process
modelling
Process
modelling
Process
modelling
Application
generation
Applicatio
n
Application
Testing
and
turnover
generation
generation
Testing and
turnover
CSE3308 - Software Engineering: Analysis and Design, 2005
Testing
and
turnover
Lecture 1B.9
Incremental Development






Applies an iterative philosophy to the waterfall model
Divide functionality of system into increments and use
a linear sequence of development on each increment
First increment delivered is usually the core product,
i.e only basic functionality
Reviews of each increment impact on design of later
increments
Manages risk well
Extreme Programming (XP), and other Agile Methods,
are incremental, but they do not implement the
waterfall model steps in the standard order
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.10
Incremental Development
1st Increment
analysis
design
coding
testing
delivery
2nd Increment
analysis
design
coding
Project
Definition
testing
delivery
3rd Increment
analysis
design
coding
testing
delivery
4th Increment
analysis
CSE3308 - Software Engineering: Analysis and Design, 2005
design
coding
testing
Lecture 1B.11
delivery
The Spiral Model
 Development
cycles through multiple (3-6)
task regions (6 stage version)






customer communication
planning
risk analysis
engineering
construction and release
customer evaluation
 Incremental


releases
early releases may be paper or prototypes
later releases become more complicated
 Models
software until it is no longer used
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.12
Spiral Model
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.13
Spiral Model
 Not
a silver bullet, but considered to be one
of the best approaches
 Is a realistic approach to the problems of
large scale software development
 Can use prototyping during any phase in the
evolution of product
 Requires excellent management and risk
assessment skills
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.14
Component Assembly
 Incorporates
features of the spiral model
 Usually based on object technologies, but not
necessarily e.g. Visual Basic (older versions)
 Compose applications from pre-packaged
software components
 Can greatly boost productivity and reuse
 Relies heavily on quality and robustness of
the software components
 Fits into the Engineering/Construction task
region of the spiral model
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.15
Component Assembly
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.16
Agile Methods



In the last few years, a group of influential writers and
consultants have got behind a group of software
development processes known collectively as “Agile
Methods”
Agile Methods reject the notion that we should design
for future change – don’t “borrow trouble”
There is a “Manifesto for Agile Software Development”:
“We are uncovering better ways of developing software by doing it
and helping others do it. Through this work we have come to
value:
» Individuals and interactions over processes and tools
» Working software over comprehensive documentation
» Customer collaboration over contract negotiation
» Responding to change over following a plan”

Seductive, isn’t it?
 Beware: it is not yet widely accepted in industry, and its own
proponents admit that it is not always a good choice
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.17
Agile Methods: XP
 The
best-known agile development process
eXtreme Programming (XP), introduced by
Kent Beck in 1999. It’s main principles are:
 Rapid feedback
» Very frequent builds – many per day
» Tests written first
 Assume simplicity
» Don’t borrow trouble – but “simplicity” is not easy. It
can often take skill, effort and experience to
recognize the simplest solution (as we will see with
Design Patterns later in the semester)
 Incremental change
 Embracing change
 Quality work
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.18
Agile Methods: XP (2)

The XP methodology has many practices. Beck
emphasizes that you can’t pick and choose: if you’re
not doing them all, you’re not doing XP
 The Planning Game
 Small releases
 Metaphor
 Simple Design
 Testing – tests are written first, by both programmers and customer
 Refactoring
 Pair programming
 Collective ownership
 Continuous integration
 40-hour week
 On-site customer
 Coding standards
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.19
Agile Methods: When not to try XP

XP is very appealing to many programmers – often
because they think can get away from heavy
documentation
 in fact the test-first practice creates a lot of documentation,
though in code form

Beck himself indicates that there are situations where
XP is not appropriate. These include:
 When it is not supported by the company culture
» e.g. belief in big specifications, or overtime seen as a proxy
for commitment to company
 More than 10 or 20 programmers (this is a big one!)
 Project too big for regular complete integration
 Where it inherently takes a long time to get feedback
 Where you can’t realistically test
» e.g. already in production using a $1,000,000 machine that
is already at full capacity
 When the physical environment is wrong
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.20
Formal Methods
 Use
of mathematical techniques to specify
the requirements of the system e.g the B
method, Z, VDM, Object-Z
 Mainly used in life or mission-critical
applications, e.g heart pacemakers, NASA
 Can get very high quality software
 Problems



Time-consuming and expensive
Few developers have necessary skills, so extensive
training required
Difficult to use as a tool to communicate with users
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.21
Fourth Generation Techniques
 The
use of CASE and 4GL tools which let you
specify the software at a high-level
 Example: Hamilton-1 uses a formal
specification language to generate complete
system from requirements analysis ($100,000
per license)
 Use of 4GT has grown considerably in the last
decade
 Some indications of productivity
improvements for small and intermediate
applications
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.22
Fourth Generation Techniques
 Large
projects require as much or more
analysis, design and testing to achieve the
time gains from the elimination of coding
 Often problems with efficiency of
automatically generated code
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.23
References
 Pressman,
R., Software Engineering: A
Practitioner's Approach, McGraw-Hill, 2000,
(Chapters 1 and 2).
 Martin, Robert C., Agile Software
Development: Principles, Patterns, and
Practices, Prentice Hall, 2002.
 Beck, Kent, eXtreme Programming eXplained:
Embrace Change, Addison-Wesley, 1999.
CSE3308 - Software Engineering: Analysis and Design, 2005
Lecture 1B.24
Download