This part of the course is inspired by the Agile MOOC from Bertrand Meyer.

1. The Agile Manifesto

manifesto
Figure 1. Le manifeste Agile (http://agilemanifesto.org/)
February 2001!

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

12principles

You will find an update version of the principles on Wikipedia:

  1. Customer satisfaction by early and continuous delivery of valuable software

  2. Welcome changing requirements, even in late development

  3. Working software is delivered 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)

  7. Working software is the principal 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

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

…​

Example of Story Card (source: https://mazoea.wordpress.com/agile/)

storycard

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 …​"

US
Figure 2. Card example (http://www.agiliste.fr/guide-de-demarrage-scrum/)

Organizing Stories as matrix instead of simple list: Story Mapping.

Must, Should, Could, Wont ⇒ MoSCoW

storymap
Figure 3. Exemple de Story Map (http://www.agilegarden.fr/un-lancement-de-projet-ludique-et-productif/)

Another way of presenting: by flow (dependencies between stories)

mvp priorities
Figure 4. Example of Story Map by flow (http://blog.cayenneapps.com/2014/11/25/5-steps-to-building-minimum-viable-product-with-story-mapping/)

8.3. Storyboard

Example of storyboard (https://www.vikingcodeschool.com/software-engineering-basics/agile-development-with-xp-and-scrum)

agile story board

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

burndown inputs
Figure 5. Exemple d’inputs pour mon Burn-down (http://www.agiliste.fr/instruments-pilotage-projet/)
burndown
Figure 6. Exemple de Burn-down résultant (http://www.agiliste.fr/instruments-pilotage-projet/)

9. Classical process

scrum overview
Figure 7. Agile process (http://scrumprimer.org)

Quizz

QUESTION
socrative1