2. Learning outcomes:
Section 1 – Introduction to Agile
Section 2 – Lean Software Development
Section 3 - Kanban
Section 4 – Test-Driven Development
Section 5 - Scrum
Assessment:
Case studies
Videos
Quizzes on website
3. Section 1 –
Introduction to
Agile
❖ Contents:
• What is Agile?
• Agile Software Development values
• Why Agile?
• Agile Software Development Principles
• Agile software development methods
4. “Software development fails to deliver, and fails to
deliver value. The failure has huge economic and
human impact. We need to find a new way to develop
software.”
Kent Beck
5. What is Agile?
Agile software development is an approach to software development under
which requirements and solutions evolve through the collaborative effort
of self-organizing and cross-functional teams and their customer(s)/end
user(s). It advocates adaptive planning, evolutionary development, early
delivery, and continual improvement, and it encourages rapid and flexible
response to change.
6.
7. Agile software development values
Based on their combined experience of developing software and helping others do
that, the seventeen signatories to the manifesto proclaimed that they 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
8. Why Agile?
Diverse range of practices which aim to address the
weaknesses of the plan-based models.
Minimise risks, but accept that certain risks can never be
eliminated
Increase speed and flexibility
Decrease overhead and bureaucracy
Not a single approach
Derived from “12 principles”
Fundamental idea: Live with change
9. Agile software development principles
The Manifesto
for Agile
Software
Development is
based on
twelve
principles:
Customer satisfaction by early and continuous delivery of valuable software
Welcome changing requirements, even in late development
Working software is delivered frequently (weeks rather than months)
Close, daily cooperation between business people and developers
Projects are built around motivated individuals, who should be trusted
Face-to-face conversation is the best form of communication (co-location)
Working software is the primary measure of progress
Sustainable development, able to maintain a constant pace
Continuous attention to technical excellence and good design
Simplicity—the art of maximizing the amount of work not done—is essential
Best architectures, requirements, and designs emerge from self-organizing teams
Regularly, the team reflects on how to become more effective, and adjusts accordingly
10. Agile software development methods
Popular agile software development frameworks include (but are not limited to):
Adaptive software development (ASD)
Agile modeling
Agile unified process (AUP)
Disciplined agile delivery
Dynamic systems development method (DSDM)
Extreme programming (XP)
Feature-driven development (FDD)
Lean software development
Kanban
Rapid application development (RAD)
Scrum
Scrumban
11. Section 2 – Lean
Software
Development
❖ Contents:
• What is Lean?
• Lean Principles
• The Lean Software Development Process
Video
• Pros
• Cons
12. What is
Lean?
Lean software development is a
translation of lean
manufacturing principles and practices to
the software development domain.
Adapted from the Toyota Production
System, it is emerging with the support of
a pro-lean subculture within
the Agile community.
Lean offers a solid conceptual framework
values and principles, as well as good
practices, derived from experience, that
support agile organizations.
13. Lean Principles
Lean development
can be summarized
by seven
principles, very
close in concept to
lean
manufacturing
principles:
Eliminate waste
Amplify learning
Decide as late as possible
Deliver as fast as possible
Empower the team
Build integrity in
See the whole
16. Advantages
The MVP is delivered quickly.
The expenses are quite low.
The team is motivated to make
every product feature perfect,
not simply accomplish the tasks.
17. Cons
The documentation needs to be absolutely precise
and a skilled analyst is needed to ensure 100%
understanding of the requirements.
This approach is suitable only for highly skilled
developers with immense knowledge in the field;
learning on the go is impossible and not
acceptable, as it puts the project at risk.
While highly motivated to deliver a polished
product, the developers might lose focus on the
initial objectives, so flexible decision making from
the developers should be backed up with diligent
process monitoring by the team lead or the analyst.
18. Section 3 –
Kanban
❖ Contents:
• What is Kanban?
• Elements of Kanban Board
• Types of boards
• Pros
• Cons
19. What is Kanban
Kanban is a popular framework used to
implement agile software development.
It requires real-time communication of
capacity and full transparency of work.
Work items are represented visually on a
kanban board, allowing team members to
see the state of every piece of work at
any time.
20. Elements of a
kanban board
▶ Visual Signals
▶ Columns
▶ Work In Progress (WIP)
Limits
▶ Commitment point
▶ Delivery point
22. Pros
Visually see work in
progress
Instantly understand
impediments (things
causing you to delay) and
take steps to remove them
Improve communication
between yourself and
others on your team
Empower teams to self-
manage visual processes
and work flows
Helps with long-distance
projects
Inspire team collaboration
23. Cons
Outdated Kanban board
can lead to issues in the
development process.
Some time Kanban team
make the board
overcomplicate.
Lack of timing is another
disadvantage because
there is no timeframes are
associated with each
phase.
24. Section 4 – Test-
Driven
Development
(TDD)
❖ Contents:
• What is TDD?
• The TDD cycle
• Short Video
• Relation to other methodologies
• Pros
• Cons
25. What is Test-Driven
Development?
• It a software development process
that relies on the repetition of a very
short development cycle
• The developer first writes an
automated test describing the desired
functionality..
• and only after this writes and
refactors code until it passes the test.
28. How does TDD relate to other
methodologies?
▶ The good thing about
TDD is it can be
adopted into any
development process –
Kanban, Lean, Scrum,
etc.
▶ It is a development
tool to use within
other methodologies
that promotes
interweaving between
coding, testing and
design
29. Pros
FORCES CODE TO BE
MODULAR
TESTS CAN BE USED AS
DOCUMENTATION
PEACE OF MIND – IF ALL
TESTS PASS, SOFTWARE
LIKELY HAS FEW OR NO
BUGS
MAKES CODE EASIER TO
MAINTAIN AND
REFACTOR
HELPS CLARIFY CODE
REQUIREMENTS
PROVIDES EARLY
INSIGHT INTO POSSIBLE
DESIGN PROBLEMS
30. Cons
▶ Challenging to apply to legacy code
▶ Initially slows down development
▶ Can be difficult to adapt to
▶ Creating tests for all cases can be
tedious
▶ Not everyone is good at writing proper
tests
31. Section 5 –
Scrum
❖ Contents:
• What is Scrum?
• Scrum Core Values
• Scrum Events
• Scrum Artefacts
• Scrum Master role
• How it all fits together
• Short Video
• Case Studies
32. What is Scrum?
▶ Scrum is an Agile framework
within which people can address
complex adaptive problems. It is
a way for small teams to manage
themselves and plan their
project without outside
interference.
▶ It is the most
popular methodology within
Agile development, with over
half of all dev teams using it.
33.
34. Scrum Events
▶ Sprint – the length of time to
achieve a small goal in the
overall project, usually two
week
▶ Sprint Planning – the planning
of the upcoming sprint
▶ Daily Scrum – a brief team
meeting in the morning,
covering what everyone did
yesterday and today's plan
▶ Sprint Review – inspect the
results achieved after a sprint
▶ Sprint Retrospective – think
about what could be done
better for next sprint
35. Scrum Artefacts
▶ Product Backlog - an ordered list of
everything that is known to be
needed in the product
▶ Sprint Backlog - the set of Product
Backlog items selected for the
Sprint
▶ Increment - the sum of all the
Product Backlog items completed
during a Sprint and the value of
the increments of all previous
Sprints
36. The Scrum Master
▶ The Scrum Master is responsible
for promoting and supporting
Scrum. Scrum Masters do this by
helping everyone understand
Scrum theory, practices, rules,
and values.
▶ They are not the team leader
per se, rather they serve as a
facilitator within the team and
between the team and outside
people.
▶ The Scrum Master usually
organizes the Scrum Events
40. Additional
Reading
• Section 1 – Stober, T. 2010. Agile software
development. Heidelberg ; New York : Springer.
• Section 2 – Janes, A. 2014. Lean software
development in action. Heidelberg : Springer.
• Section 3 – Pham, A. and Pham, D. 2013.
Business-driven IT-wide agile (Scrum) and Kanban
(Lean) implementation. Boca Raton, FL : CRC
Press, pp. 14-22.
• Section 4 – Madeyski, L. 2010. Test-driven
development : an empirical evaluation of agile
practice. Heidelberg ; New York : Springer-
Verlag.
• Section 5 – Schmidt, C. 2016. Agile software
development teams : the impact of agile
development on team performance. Cham ; New
York : Springer, pp. 16-18.
41. References
• Section 1 – http://agilehandbook.com/agile-
handbook.pdf
• Section 2 –
http://jultika.oulu.fi/files/nbnfioulu-
201511212155.pdf
• Section 3 –
https://pdfs.semanticscholar.org/4577/29c971
69b428d9f1815cf27aa95b5d1eaf2f.pdf
• Section 4 – Cline, A. 2015. Agile development in
the real world. Berkeley, CA : Apress, pp. 208-
209.
• Section 5 -
https://www.scrum.org/resources/what-is-
scrum