0% found this document useful (0 votes)
78 views42 pages

SWLec 4

The document discusses agile software development processes and frameworks like Scrum and XP. It describes the principles of agile development including rapid delivery, customer involvement, and responding to change. It also covers Scrum phases and roles like the product owner.

Uploaded by

Omar Abdelaziz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
78 views42 pages

SWLec 4

The document discusses agile software development processes and frameworks like Scrum and XP. It describes the principles of agile development including rapid delivery, customer involvement, and responding to change. It also covers Scrum phases and roles like the product owner.

Uploaded by

Omar Abdelaziz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 42

Chapter 3: Agile Software Development

Revision

Software • Plan-driven processes

process • Agile processes

Software • Waterfall model


process • Incremental (exploratory) development
• Reuse-oriented development
model
Software • Specification
• Development
Process • Validation
Activities • Evolution
Agenda
• Rapid software development
• Agile manifesto
• The principles of agile methods
• Agile method applicability
• Problems with agile methods
• Plan-driven and agile development
• Popular agile software development frameworks
• Scrum

• XP
Rapid software development
• Rapid development and delivery is now often the most
important requirement for software systems
• Businesses operate in a fast –changing requirement and it
is practically impossible to produce a set of stable
software requirements.
• Software has to evolve quickly to reflect changing
business needs.
Rapid software development
• Specification, design and implementation are inter-leaved
• System is developed as a series of versions with
stakeholders involved in version evaluation.
• User interfaces are often developed using an IDE and
graphical toolset.
Agile methods
 The aim of agile methods is :
 to reduce overheads in the software process (e.g. by limiting
documentation)
 to be able to respond quickly to changing requirements
without excessive rework.
Agile manifesto
• 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
• That is, while there is value in the items on the right, we value the
items on the left more
The principles of agile methods

Principle Description
Customer Customers should be closely involved throughout the development
involvement process. Their role is provide and prioritize new system requirements
and to evaluate the iterations of the system.
Incremental The software is developed in increments with the customer specifying
delivery the requirements to be included in each increment.
People not The skills of the development team should be recognized and
process exploited. Team members should be left to develop their own ways of
working without prescriptive processes.
Embrace change Expect the system requirements to change and so design the system
to accommodate these changes
Maintain Focus on simplicity in both the software being developed and in the
simplicity development process. Wherever possible, actively work to eliminate
complexity from the system.
Agile method applicability
• Product development where a software company is developing
a small or medium-sized product for sale.
• Custom system development within an organization,
• where there is a clear commitment from the customer to
become involved in the development process
• and where there are not a lot of external rules and
regulations that affect the software.
• Because of their focus on small, tightly-integrated teams, there
are problems in scaling agile methods to large systems.
Problems with agile methods
• It can be difficult to keep the interest of customers who are
involved in the process.
• Team members may be unsuited to the intense involvement
that characterises agile methods.
• Prioritising changes can be difficult where there are
multiple stakeholders.
• Maintaining simplicity requires extra work.
Plan-driven and agile development
• Plan-driven development
• A plan-driven approach to software engineering is based around
separate development stages with the outputs to be produced
at each of these stages planned in advance.
• Not necessarily waterfall model – plan-driven, incremental
development is possible
Plan-driven and agile development
• Agile development
• Specification, design, implementation and testing are
interleaved
• and the outputs from the development process are decided
through a process of negotiation during the software
development process.
Technical, human, organizational issues

 Most projects include elements of plan-driven and agile

processes. Deciding on the balance depends on:

 Is it important to have a very detailed specification and

design before moving to implementation?


Technical, human, organizational issues

 Most projects include elements of plan-driven and agile

processes. Deciding on the balance depends on:

 Is it important to have a very detailed specification and

design before moving to implementation?

 If so, you probably need to use a plan-driven approach.


Technical, human, organizational issues

 Is an incremental delivery strategy, where you deliver the

software to customers and get rapid feedback from them,

realistic?
Technical, human, organizational issues

 Is an incremental delivery strategy, where you deliver the

software to customers and get rapid feedback from them,

realistic?

 If so, consider using agile methods.


Technical, human, organizational issues

 How large is the system that is being developed?

 ________ are most effective when the system can be

developed with a small co-located team who can

communicate informally.

 Large systems that require larger development teams so a

_______ may have to be used.


Technical, human, organizational issues

 Agile methods are most effective when the system can be

developed with a small co-located team who can

communicate informally.

 Large systems that require larger development teams so a

plan-driven approach may have to be used.


Technical, human, organizational issues
 How is the development team organized?
 If the development team is distributed or if part of the
development is being outsourced, then you may need to
develop design documents to communicate across the
development teams.
 You may need to plan in advance what these are.
Technical, human, organizational issues
 What type of system is being developed?

 Plan-driven approaches may be required for systems that

require a lot of analysis before implementation (e.g. real-

time system with complex timing requirements).


Technical, human, organizational issues
 Are there cultural or organizational issues that may affect the
system development?
 Traditional engineering organizations have a culture of plan-
based development, as this is the norm in engineering.
 How good are the designers and programmers in the development
team?
 It is sometimes argued that agile methods require higher skill
levels than plan-based approaches in which programmers
simply translate a detailed design into code
Popular agile software development frameworks
• Popular agile software development frameworks
include (but are not limited to):
• Scrum
• Extreme programming (XP)
• Kanban
Scrum
Scrum
 Scrum is an agile process that allows us to focus on delivering
the highest business value in the shortest time
 It allows us to rapidly and repeatedly inspect actual working
software (every two weeks to one month)
 The business sets the priorities. Teams self-organise to
determine the best way to deliver the highest priority features
 Every two weeks to a month any one can see real working
software and decide to release it as is or continue to enhance it
for another sprint.
There are three phases in Scrum
• The initial phase is an outline planning phase where you
establish the general objectives for the project and design the
software architecture.
• This is followed by a series of sprint cycles, where each cycle
develops an increment of the system.
• The project closure phase wraps up the project, completes
required documentation such as system help frames and user
manuals and assesses the lessons learned from the project.
There are three phases in Scrum
The Sprint cycle
• Sprints are fixed length, normally 2–4 weeks.
• The starting point for planning is the product backlog, which
is the list of work to be done on the project.
• The selection phase involves all of the project team who work
with the customer to select the features and functionality to be
developed during the sprint.
The Sprint cycle
• Once these are agreed, the team organize themselves to
develop the software.
• During this stage the team is isolated from the customer and
the organization, with all communications channelled through
the so-called ‘Scrum master’.
• The role of the Scrum master is to protect the development
team from external distractions.
• At the end of the sprint, the work done is reviewed and
presented to stakeholders. The next sprint cycle then begins.
The product owner
• represents the product's stakeholders and the voice of the customer

• is responsible for the product backlog and accountable for maximizing the
value that the team delivers.

• The product owner defines


• the product in customer-centric terms (typically user stories),
• adds them to the product backlog,
• and prioritizes them based on importance and dependencies.

• The product backlog is a model of work to be done and contains an


ordered list of product requirements that a scrum team maintains for
a product.
Product Backlog
Scrum master
• is a facilitator who arranges daily meetings
• tracks the backlog of work to be done
• records decisions
• measures progress against the backlog
• communicates with customers and management
outside of the team.
Teamwork in Scrum
• The whole team attends short daily meetings where
• all team members share information,
• describe their progress since the last meeting,
problems that have arisen and
• what is planned for the following day.
• This means that everyone on the team knows what is
going on and, if problems arise, can re-plan short-term
work to cope with them.
Scrum benefits
• The product is broken down into a set of manageable and
understandable chunks.
• The whole team have visibility of everything and consequently
team communication is improved.
• Customers see on-time delivery of increments and gain feedback
on how the product works.
• Trust between customers and developers is established and a
positive culture is created in which everyone expects the project to
succeed.
Extreme Programming(XP)
Extreme programming
 Perhaps the best-known and most widely used agile method.
 Extreme Programming (XP) takes an ‘extreme’ approach to
iterative development.
 New versions may be built several times per day;
 Increments are delivered to customers every 2 weeks;
 All tests must be run for every build and the build is only
accepted if tests run successfully.
The extreme programming release cycle
Extreme programming practices
Incremental Requirements are recorded on Story Cards and the Stories to be included
planning in a release are determined by the time available and their relative priority.
The developers break these Stories into development ‘Tasks’.

Small The minimal useful set of functionality that provides business value is
releases developed first. Releases of the system are frequent and incrementally add
functionality to the first release

Simple Enough design is carried out to meet the current requirements and no
design more.

Test-first An automated unit test framework is used to write tests for a new piece of
development functionality before that functionality itself is implemented.
Extreme programming practices
Refactoring All developers are expected to refactor the code
continuously as soon as possible code improvements are
found. This keeps the code simple and maintainable.

Pair programming Developers work in pairs, checking each other’s work and
providing the support to always do a good job.

Collective ownership The pairs of developers work on all areas of the system, so
that no islands of expertise develop and all the developers
take responsibility for all of the code. Anyone can change
anything.
Extreme programming practices
Continuous As soon as the work on a task is complete, it is integrated into the
integration whole system. After any such integration, all the unit tests in the
system must pass.

Sustainable Large amounts of overtime are not considered acceptable as the net
pace effect is often to reduce code quality and medium-term productivity

On-site A representative of the end-user of the system (the Customer) should


customer be available full time for the use of the XP team. In an extreme
programming process, the customer is a member of the development
team and is responsible for bringing system requirements to the team
for implementation.
Task
Task
 What's the difference between XP and Scrum ?

You might also like