0% found this document useful (0 votes)
34 views73 pages

Chapter 3

Uploaded by

Eslam Esam
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)
34 views73 pages

Chapter 3

Uploaded by

Eslam Esam
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/ 73

Chapter 3 – Agile Software Development

30/10/2014 Chapter 3 Agile Software Development 1


Topics covered

 Agile Manifesto

 Agile methods

 Agile user story

 Scaling Scrum

30/10/2014 Chapter 3 Agile Software Development 2


History

 Dissatisfaction in software industry 1980-1990


 Developed late 1990 to overcome problems in old methods
 Refactoring
 Pair programming
 Scrum
 XP
 CI
 Agile manifesto 2001
 TDD
 BDD
 Clean Code
3
Agile in a nutshell

 Rapid development and delivery


 Frequent delivery
 Incremental versions
 Minimal documentation
 Extensive tool support
 Interleaved activities
 Respond to changes quickly
 Reduced process overhead
30/10/2014 Chapter 3 Agile Software Development 4
Agile methods

30/10/2014 Chapter 3 Agile Software Development 5


30/10/2014 Chapter 3 Agile Software Development 6
Agile manifesto & Values

 We are uncovering better ways of developing software


by doing it and helping others do it. Through this work
we have come to value:
1. Individuals and interactions over processes and tools

2. Working software over comprehensive documentation

3. Customer collaboration over contract negotiation

4. 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.

30/10/2014 Chapter 3 Agile Software Development 7


The 12 principles of agile methods

1. Customer satisfaction by early and continuous delivery of


valuable software.
2. Welcome changing requirements, even in late development.
3. Deliver working software frequently (weeks rather than months).
4. Close, daily cooperation between business people and
developers
5. Projects are built around motivated individuals, who should be
trusted
6. Face-to-face conversation is the best form of communication
(co-location)
30/10/2014 Chapter 3 Agile Software Development 8
The 12 principles of agile methods

7. Working software is the primary measure of progress


8. Sustainable development, able to maintain a constant pace
9. Continuous attention to technical excellence and good design
10. Simplicity—the art of maximizing the amount of work not
done—is essential
11. Best architectures, requirements, and designs emerge from
self-organizing teams
12. Regularly, the team reflects on how to become more effective,
and adjusts accordingly

30/10/2014 Chapter 3 Agile Software Development 9


Agile principles in a nutshell

Principle Description
Customer involvement Customers should be closely involved throughout the
development process. Their role is provide and prioritize new
system requirements and to evaluate the iterations of the
system.
Incremental delivery The software is developed in increments with the customer
specifying the requirements to be included in each increment.

People not process The skills of the development team should be recognized and
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 simplicity Focus on simplicity in both the software being developed and
in the development process. Wherever possible, actively work
to eliminate complexity from the system.

30/10/2014 Chapter 3 Agile Software Development 10


When Agile is applicable

 Small/medium size products.

 Customer is available and involved

 Cross functional team

 Organization mindset

30/10/2014 Chapter 3 Agile Software Development 11


Agile development techniques

30/10/2014 Chapter 3 Agile Software Development 12


eXtreme Programming

30/10/2014 Chapter 3 Agile Software Development 13


The extreme programming release cycle

30/10/2014 Chapter 3 Agile Software Development 14


Extreme programming practices (a)

Principle or practice Description


Incremental planning Requirements are recorded on story cards and the stories to be
included in a release are determined by the time available and
their relative priority. The developers break these stories into
development ‘Tasks’. See Figures 3.5 and 3.6.

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

Simple design Enough design is carried out to meet the current requirements
and no more.
Test-first development An automated unit test framework is used to write tests for a
new piece of functionality before that functionality itself is
implemented.
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.
30/10/2014 Chapter 3 Agile Software Development 15
Extreme programming practices (b)

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.
Continuous integration As soon as the work on a task is complete, it is integrated into
the whole system. After any such integration, all the unit tests in
the system must pass.
Sustainable pace Large amounts of overtime are not considered acceptable as
the net effect is often to reduce code quality and medium term
productivity
On-site customer A representative of the end-user of the system (the customer)
should 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.
30/10/2014 Chapter 3 Agile Software Development 16
How to map XP practices to Agile?

 Incremental development is supported through small,


frequent system releases.
 Customer involvement means full-time customer
engagement with the team.
 People not process through pair programming, collective
ownership and a process that avoids long working hours.
 Change supported through regular system releases.
 Maintaining simplicity through constant refactoring of
code.

30/10/2014 Chapter 3 Agile Software Development 17


Influential XP practices

 Difficult to integrate with management strategy in most


organizations.
 Used practices
 User stories for specification

 Refactoring

 Test-first development

 Pair programming

30/10/2014 Chapter 3 Agile Software Development 18


User stories for requirements

30/10/2014 Chapter 3 Agile Software Development 19


User story template

30/10/2014 Chapter 3 Agile Software Development 20


Sample user story

30/10/2014 Chapter 3 Agile Software Development 21


Sample user story
Sample user story

30/10/2014 Chapter 3 Agile Software Development 23


User story details

30/10/2014 Chapter 3 Agile Software Development 24


Levels of requirements

30/10/2014 Chapter 3 Agile Software Development 25


Done definition

30/10/2014 Chapter 3 Agile Software Development 26


Sample test case description

30/10/2014 Chapter 3 Agile Software Development 27


Refactoring

 Remove duplicate code.

 Logical naming for attributes and methods.

 Replace inline with method calls.

 Enhancing performance

 Documenting complex functions

 Re-architecture

30/10/2014 Chapter 3 Agile Software Development 29


TDD: Test Driven 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.

30/10/2014 Chapter 3 Agile Software Development 30


Practice: Red-Green-Refactor

 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.

30/10/2014 Chapter 3 Agile Software Development 31


Pair programming

 Pairs: developing code together

 Collective ownership

 Considered as informal review process.

 It encourages refactoring as the whole team can benefit


from improving the system code.

 Knowledge sharing

30/10/2014 Chapter 3 Agile Software Development 32


Agile project management

30/10/2014 Chapter 3 Agile Software Development 33


Manger role

 Manage the project


 Delivery on time
 Within the budget
 What should be delivered
 When should be delivered
 Who will develop the deliverables
 Agile project management requires a different approach,
which is adapted to incremental development and the
practices used in agile methods.
30/10/2014 Chapter 3 Agile Software Development 34
Scrum

 A lightweight agile software development framework for


managing product and application development

 Phases
 Discovery: specs, plan & design
 Implementation: series of sprint cycles
 Closure: user manuals, project retrospective, lessons
learnt

30/10/2014 Chapter 3 Agile Software Development 35


Scrum terminology (a)

Scrum term Definition

Development team A self-organizing group of software developers, which should be no more than
7 people. They are responsible for developing the software and other
essential project documents.
Potentially shippable The software increment that is delivered from a sprint. The idea is that this
product increment should be ‘potentially shippable’ which means that it is in a finished state and
no further work, such as testing, is needed to incorporate it into the final
product. In practice, this is not always achievable.

Product backlog This is a list of ‘to do’ items which the Scrum team must tackle. They may be
feature definitions for the software, software requirements, user stories or
descriptions of supplementary tasks that are needed, such as architecture
definition or user documentation.

Product owner An individual (or possibly a small group) whose job is to identify product
features or requirements, prioritize these for development and continuously
review the product backlog to ensure that the project continues to meet critical
business needs. The Product Owner can be a customer but might also be a
product manager in a software company or other stakeholder representative.
30/10/2014 Chapter 3 Agile Software Development 36
Scrum terminology (b)

Scrum term Definition


Scrum A daily meeting of the Scrum team that reviews progress and prioritizes
work to be done that day. Ideally, this should be a short face-to-face
meeting that includes the whole team.

ScrumMaster The ScrumMaster is responsible for ensuring that the Scrum processis
followed and guides the team in the effective use of Scrum. He or sheis
responsible for interfacing with the rest of the company and for ensuring
that the Scrum team is not diverted by outside interference. The Scrum
developers are adamant that the ScrumMaster should not be thought of
as a project manager. Others, however, may not always find it easy to
see the difference.

Sprint A development iteration. Sprints are usually 2-4 weekslong.

Velocity An estimate of how much product backlog effort that a team can cover in
a single sprint. Understanding a team’s velocity helps them estimate
what can be covered in a sprint and provides a basis for measuring
improving performance.

30/10/2014 Chapter 3 Agile Software Development 37


Scrum overview

30/10/2014 Chapter 3 Agile Software Development 38


The Scrum sprint cycle

30/10/2014 Chapter 3 Agile Software Development 39


Product Backlog

30/10/2014 Chapter 3 Agile Software Development 40


Product backlog vs iteration backlog

30/10/2014 Chapter 3 Agile Software Development 41


Release vs Sprint

30/10/2014 Chapter 3 Agile Software Development 42


The Sprint cycle

 Team committed to develop the selected stories

 Team is isolated from the customer

 External communication thru ‘Scrum master’.

 At the end of the sprint, the work done is reviewed and


presented to stakeholders. The next sprint cycle then
begins.

30/10/2014 Chapter 3 Agile Software Development 43


Inside a sprint – little of everything all time

30/10/2014 Chapter 3 Agile Software Development 44


Scrum benefits

 The product is broken down into a set of manageable


and understandable chunks.
 Unstable requirements do not hold up progress.
 The whole team have visibility of everything and
consequently team communication is improved.
 Customers see on-time delivery and provide early
feedback.
 Trust between customers and developers is established

30/10/2014 Chapter 3 Agile Software Development 45


User story estimation

30/10/2014 Chapter 3 Agile Software Development 46


Estimation

 Relative estimation is better than absolute

 Fibonacci numbers are mostly used

 No point of discussing one point difference

 The range has more lower value numbers

 Story point estimation

30/10/2014 Chapter 3 Agile Software Development 47


Story point

 Units of relative size

 Combination of a story’s [Complexity/Difficulty –

Relative time – Uncertainty]

 Estimation don’t expire

 Mapped to hours when assigned to developer

30/10/2014 Chapter 3 Agile Software Development 48


Story point

30/10/2014 Chapter 3 Agile Software Development 49


Planning Poker

 For each user story

 The Product Owner explains the story along with its conditions

 Team member assigns Fibonacci number to the story using cards

 All the estimates are revealed at the same time

 If estimates are not equal then, the highest and lowest estimators

should mainly discuss and share their reasons

30/10/2014 Chapter 3 Agile Software Development 50


Done Definition

30/10/2014 Chapter 3 Agile Software Development 51


Release planning

30/10/2014 Chapter 3 Agile Software Development 52


Velocity

 Metric for measure of progress

𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑠𝑡𝑜𝑟𝑦 𝑝𝑜𝑖𝑛𝑡𝑠


𝑣 =
𝑠𝑝𝑟𝑖𝑛𝑡

𝑏𝑎𝑐𝑘𝑙𝑜𝑔 𝑠𝑖𝑧𝑒
 𝑝𝑟𝑜𝑗𝑒𝑐𝑡 𝑑𝑢𝑟𝑎𝑡𝑖𝑜𝑛 =
𝑣𝑒𝑙𝑜𝑐𝑖𝑡𝑦

30/10/2014 Chapter 3 Agile Software Development 53


Velocity estimation

30/10/2014 Chapter 3 Agile Software Development 54


Velocity estimation (Historical data)

30/10/2014 Chapter 3 Agile Software Development 55


Velocity estimation (Historical data)

1 2

30/10/2014 Chapter 3 Agile Software Development 56


Velocity estimation (pilot sprint)

30/10/2014 Chapter 3 Agile Software Development 57


Velocity estimation (dry run)

30/10/2014 Chapter 3 Agile Software Development 58


Velocity (Estimated – Planned - Actual)

30/10/2014 Chapter 3 Agile Software Development 59


Agile project tracking & control

30/10/2014 Chapter 3 Agile Software Development 60


Tracking Agile project

30/10/2014 Chapter 3 Agile Software Development 61


Release tracking: Burn-down chart

30/10/2014 Chapter 3 Agile Software Development 62


Release tracking: Burn-up chart

30/10/2014 Chapter 3 Agile Software Development 63


Iteration tracking: Burn-down chart

30/10/2014 Chapter 3 Agile Software Development 64


Iteration tracking: Burn-up chart

30/10/2014 Chapter 3 Agile Software Development 65


Would you take corrective action?

30/10/2014 Chapter 3 Agile Software Development 66


What about this one?

30/10/2014 Chapter 3 Agile Software Development 67


Conclusion

 Agile is NOT a silver bullet


 Agile is NOT a process, rather, methodologies and mind-set
 Agile implementations are NOT document-less
 Agile teams are NOT constantly under pressure
 An Agile environment is NOT chaotic and free of discipline

Chapter 3 Agile Software Development 68


Questions

1. What is the difference between agile values, principles and

techniques?

2. based on your understanding, summarize the agile manifesto

(values).

3. Agile philosophy is to welcome changes. Discuss!

4. Simplicity is essential. Discuss!

5. What is the difference between micro-managed and self-managed

team? which is best?


Chapter 3 Agile Software Development 69
Questions

6. Based on your understanding, discuss the following terms

Incremental planning

Test driven development

Customer involvement

Continous integration

Pair programming

7. Mention some benefits of pair programming.

Chapter 3 Agile Software Development 70


Questions

8. Mention the different level of requirements in Agile requirement

specification activity

9. What is user story? what are the main components of user story?

10. What is the difference between user story and epic?

11. What is the Definition of Done? who is responsible to put such

definition?

12. Mention some items that would be valid in the definition of done.

Chapter 3 Agile Software Development 71


Questions

13. a good user story is the one that is indepedent, valuable,

estimatable and negotiable. Discuss!

14. What is the difference between TDD and Code-first development?

15. What is Agile Scrum? what is it used for?

16. What is the role product owner and scrum master in Agile team?

17. Whtat is the difference between spring & release?

16. What is meant by: product backlog, velocity, potentially shippable

product?
Chapter 3 Agile Software Development 72
Questions

17. What is the measurement metric for user stories?

18. How do you estimate the velocity of the team for a new project?

mention the methods used of quantifying team velocity.

19. What is burn-down chart? what is it used for?

Chapter 3 Agile Software Development 73

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy