Professional Documents
Culture Documents
CP5046 - Week 2 Part 1 - Student Preparation - Software Processes
CP5046 - Week 2 Part 1 - Student Preparation - Software Processes
jcu.edu.au
Topics
• What is a software process?
• What are software process models?
• What is process improvement?
jcu.edu.au
A software process is collection of technical,
collaborative, and managerial activities
jcu.edu.au
Common software process activities are:
jcu.edu.au
There are two types of software process
jcu.edu.au
A software process model is used to describe
how software process activities work together
Three common software processes models are:
• The waterfall model
• Plan-based only. Separate and distinct phases of specification and development
jcu.edu.au
The waterfall model works when software
requirements won't change quickly
jcu.edu.au
In waterfall, each activity should
be completed before moving on
jcu.edu.au
The incremental development model
interleaves and cycles over some activities
jcu.edu.au
Please note: “incremental” is sometimes
confused with “iterative”
• It’s likely that useful software gets to the customer more quickly
• Customers gain value from the software earlier than is possible with a
waterfall process
jcu.edu.au
However, Incremental development has some
drawbacks:
• Managers need regular deliverables to measure progress - but
progress might be hard to see
• Because - it’s not cost-effective to produce documents that reflect every
incremental version of the software as it’s being developed
jcu.edu.au
Integration and configuration is described
in terms of software systems reuse
jcu.edu.au
Activities are organized differently in
different software processes
• For example, in the waterfall model, they are organized in sequence,
whereas in incremental development they are interleaved
jcu.edu.au
1) Software specification is captured in the
form of software requirements
jcu.edu.au
A plan-based software specification is created by
a rigorous “requirements engineering” process
jcu.edu.au
Agile software specification is much simpler
and less rigorous
• Agile methods incrementally refine software requirements in the
form of user stories
jcu.edu.au
2) Software development consists of
software design and software implementation
jcu.edu.au
Plan-based development behaves like this:
jcu.edu.au
Agile development is simpler than plan-based
development
jcu.edu.au
Here’s how plan-based software design
works
jcu.edu.au
The common software design activities are:
jcu.edu.au
3) Software validation demonstrates how well
software meets customer requirements
jcu.edu.au
It’s possible to split up software testing
jcu.edu.au
Stages of testing
• Component testing
• Individual components are tested independently. May be functions or objects
or a collection of related code
• System testing
• 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
jcu.edu.au
In a plan-based software process, testing* is
necessarily more involved…
jcu.edu.au
Process improvement
jcu.edu.au
Process improvement is a way of enhancing
the quality of software and the process
jcu.edu.au
The maturity approach is cyclic:
jcu.edu.au
Measurement Analysis Change
jcu.edu.au
Metrics are useful in the maturity approach:
jcu.edu.au
Now it’s time to talk about
agile processes…
jcu.edu.au
A dissatisfaction with the overheads of plan-based
software processes led to the agile manifesto
• Agile methods focus on the code rather than the design
• They are related to the incremental* approach discussed previously
• But are improved to deliver working software that evolves to meet
changing requirements
jcu.edu.au
Agile processes are applicable in these
situations:
• Small or medium-sized software
• Virtually all consumer products and apps are now developed using an
agile processes
jcu.edu.au
Okay, let’s introduce you to an important
agile process called XP
jcu.edu.au
Extreme programming (XP)
• A very influential agile process, developed in the late 1990s, that
introduced a range of agile development techniques
jcu.edu.au
XP operates on a release cycle
jcu.edu.au
The XP process is based on several agile
principles
jcu.edu.au
XP has several important practices
• System metaphor for shared understanding
• Test-first development
• Pair programming
jcu.edu.au
Key practice: User stories for requirements
• In XP, a customer or user is part of the XP team and is responsible for
making decisions on requirements
jcu.edu.au
User stories are written on cards (physical or
virtual), for example:
jcu.edu.au
And here is a more sophisticated user story
with more elements:
jcu.edu.au
Other user story elements are:
• The stub – the “title” of the user story, short version of the value
statement
• Acceptance criteria – these written by the customer and allow them
to see when all the tasks that implement a user story have been
completed
• Story size – is one type of “story estimation” (more about this later)
jcu.edu.au
Thoughts about user stories:
• Each one only captures a single, self-contained software requirement
jcu.edu.au
And here that epic user story is split into
more focused tasks (or simpler stories…)
jcu.edu.au
Conventional wisdom in software
engineering is to design for change
• Spending time and effort anticipating changes should reduce costs
later in the life cycle – but this is generally not true
jcu.edu.au
Thoughts about refactoring
• The project team looks for possible improvements and make these
improvements even where there is no immediate need for them
• This improves the understandability of the software and so reduces the need
for documentation!
• The replacement of inline code with calls to methods that have been
included in a program library
jcu.edu.au
Testing in XP
• Testing is central to XP - the software is tested after every change has
been made
• XP testing features:
• 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
jcu.edu.au
An example test case description for dose
checking from the Mentcare case study
jcu.edu.au
In test-first development, tests are executable
components made before tasks are implemented
• These testing components should be stand-alone, should simulate the
submission of input to be tested and should check that the result
meets the output specification
jcu.edu.au
Problems with test-first development
• Some developers prefer programming to testing so they take short
cuts when writing tests. E.g. write incomplete tests that do not check
for all possible exceptions that may occur
jcu.edu.au
Pair programming involves programmers
working in pairs, developing code together
jcu.edu.au
Thoughts about Pair programming
• Pairs should be created dynamically - so that all team members work
with each other during the development process
jcu.edu.au
Key points
• Software processes are the activities involved in producing a software
system. Software process models are abstract representations of
these processes
• General process models describe the organization of software
processes
• Examples of these general models include the ‘waterfall’ model, incremental
development, and reuse-oriented development
• Requirements engineering is the process of developing a software
specification – used by plan-based processes
jcu.edu.au
Key points
• Design and implementation processes are concerned with
transforming a requirements specification into an executable software
system.
• Software validation is the process of checking that the system
conforms to its specification and that it meets the real needs of the
users of the system.
• Software evolution takes place when you change existing software
systems to meet new requirements. The software must evolve to
remain useful
jcu.edu.au
Key points
• The principal approaches to process improvement are agile
approaches, geared to reducing process overheads, and maturity-
based approaches based on better process management and the use
of good software engineering practice
jcu.edu.au
Key points
• Agile development practices include
• User stories for system specification
• Frequent releases of the software,
• Continuous software improvement
• Test-first development
• Customer participation in the development team.
jcu.edu.au