This part of the course is inspired by the Agile MOOC from Bertrand Meyer.
2. 17 authors
Famous ones:
-
Ward Cunningham (Wiki)
-
Kent Beck (XP, JUnit)
-
Ken Schwaber et Jeff Sutherland (Scrum)
-
Alistair Cockburn
-
Martin Fowler
-
…
3. The 12 principles
You will find an update version of the principles on Wikipedia:
-
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 principal 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
4. The agile values
General ideas that precede the principles.
From the manifesto itself:
-
Individuals and interactions over processes and tools
-
Working software over comprehensive documentation
-
Customer collaboration over contract negotiation
-
Responding to change over following a plan
Do not forget the quote that goes with: while there is value in the items on the right, we value the items on the left more.
— http://agilemanifesto.org/
|
From the Agile MOOC:
-
New, reduced role for manager
-
No "Big Upfront" steps
-
Iterative development
-
Limited, negociated scope
-
Focus on quality, achieved through testing
5. The principles
Several types:
-
Organizational / Managerial
-
Technical
5.1. Good NON AGILE principles!
-
Process, procedure and methods
-
Insist on requirements and their quality
5.2. Organizational principles
-
Put the customer at the centre
-
Accept change
-
Let the team self-organize
-
Maintain a sustainable pace
5.3. More Organizational principles
-
Produce "minimalist" software
-
Develop required features
-
and only those
-
develop only code and tests
-
YAGNI: You Ain’t Gonna Need It |
5.4. More Organizational principles: the LEAN view
7 waste of software dev. (M. Poppendieck): - Overproduction: extra/unused features - Inventory: partially developed work not released - Extra processing: unused artifacts - Motion: seeking information - Defects: escaped defects not caugth by tests - Waiting - Transportation: handoffs
5.5. Technical principles
-
Develop iteratively
-
Frequent working iterations
-
Closed-window rule
-
-
Treat tests as a key resource
-
All tests must pass (regression)
-
Test first (TDD)
-
-
Express requirements through scenarios
-
User stories
-
6. Roles
-
What happens to the manager?
-
Scrum Roles
-
Product Owner
-
SCRUM Master
-
Team
-
-
Other roles
In Scrum ⇒ no manager! |
6.1. The (self-organizing) Team
-
Specialists but no specific domain
-
Cross-functional: anyone able to take any task
-
Select the major goals for the iteration
-
Assign tasks
-
Demonstrate results
6.2. Product Owner
-
Interface with the Customer
-
Defines the product features
-
Prioritizes features
-
Allows release presentation
6.3. Scrum master
-
makes sure that the team properly applies the methodology
-
ensures that the team is functional
-
enables cooperation
-
protect the team
-
helping remove impediments
7. Practices
-
Plannings & management
-
Meetings & Scrums
-
Development & releases
-
Retrospectives
-
Tests
7.1. Plannings & managements
-
Planning poker
-
Scrum of Scrums
-
Storyboards
7.2. Meetings
-
Daily meetings
-
Morning
-
"Stand-up" (<15')
-
Everybody participate
-
Commitments/Impediments
-
-
Planning meetings
-
Sprint Backlog
-
-
Retrospective meeetings
-
What went right?
-
What could be improved?
-
-
Review meetings
-
Customers involved
-
7.3. Focus on the Daily meeting
The 3 classical questions:
-
What did you do yesterday?
-
What will you do today?
-
Are there any impediments in your way?
7.4. Development
-
Pair programming
-
Mentoring
-
Single code base (vs. branching)
-
Shared code
-
Leave optimization till last
-
Simple design
-
Incremental design
-
Refactoring
7.5. Release
-
Early and often
-
Continuous Integration
-
Small, Incremental
-
Weekly cycles
7.6. Tests
-
Coding standards
-
Systematic Unit Tests
-
TDD
8. Artifacts
-
Product Backlog
-
User stories
-
Sprint Backlog
-
Burdown
8.1. Product Backlog
-
Property of the Product Owner
-
Maintained throughout the project
-
Open
-
Contains backlog items
-
Includes estimates of business value
-
Includes estimates of dev. effort
8.2. User stories
- As a
-
…
- I want to
-
…
- So that
-
…
Good features (XP ⇒ INVEST):
-
Independent (from other stories)
-
Negociable
-
Valuable (for the stakeholders)
-
Estimable
-
Small
-
Testable
Properties:
-
Id
-
Client priority
-
Cost estimation (points, time, …)
-
Formulation "As a …"
Organizing Stories as matrix instead of simple list: Story Mapping.
Must, Should, Could, Wont ⇒ MoSCoW
Another way of presenting: by flow (dependencies between stories)
8.3. Storyboard
8.4. Velocity
Not progess over time |
-
Number of items delivered
-
Burndown chart
8.5. Sprint Backlog
Group of User Stories, taken from the Product Backlog and treated in a specific sprint.
8.6. Burndown
Quizz
QUESTION
|