Agile - Some Practices

Software Engineering

Agile - Some Practices

Created 3 years ago

Duration 0:03:59
lesson view count 177
Select the file type you wish to download
Slide Content
  1. Agile: Some Practices

    Slide 1 - Agile: Some Practices

    • Emerson Murphy-Hill
  2. Stories/Features:  Emergent Requirements

    Slide 2 - Stories/Features: Emergent Requirements

    • Customer-visible/customer-valued functionality
    • Title: Delete a Recipe
    • As the owner, I would like to be able to delete any of the existing coffee recipes so I can remove unpopular coffee types to make room for other selections.
  3. Short Iterations

    Slide 3 - Short Iterations

    • Timeboxed
    • Highest priority stories implemented in timeboxed increments or “internal releases”
    • Completed stories are potentially shippable and meet the “done criteria” established by the team
  4. Quarterly Release

    Slide 4 - Quarterly Release

    • Timeboxed
    • As small as possible, but still delivering business value
    • Get customer feedback early and often
  5. Continuous Integration

    Slide 5 - Continuous Integration

    • Writes up unit test cases and code for a task (part of a user story)
    • All unit tests for new functionality pass
    • Integrate new functionality to code base
    • ALL unit test cases for code base pass
    • Should happen once or twice a day.
    • Prevents IntegrationHell [integration could take longer than programming!]
  6. Test Driven Development (TDD)

    Slide 6 - Test Driven Development (TDD)

    • Write an automated unit test
    • Run tests to ensure they fail
    • Implement code to pass the test
    • Re-run tests to ensure they pass
    • Restructure the production and test code, as necessary
    • Run better
    • Better design
    • Example:
  7. Test-driven Development

    Slide 7 - Test-driven Development

  8. Incremental Design

    Slide 8 - Incremental Design

    • No Big Design Up Front
    • Knowledge-based design: the most effective design is in light of experience and the latest information
    • Refactoring: Improve the design of existing code without changing functionality
    • Simplify code
    • Opportunity for abstraction
    • Remove duplicate code