Archive for March 2009

Challenges with Agile Stories

March 1, 2009

This post is the result of group notes on:

“How do we get from stories to effect story tests?”

1. Use a template for stories

As a <role> I want <feature>so that <benefit>.

2. Describe the feature and break down into logical groups or “stories”

3. Elaborate stories with concrete examples that become “acceptance tests”

Acceptance tests are:

  • not a substitute for unit tests
  • different from UI testing
  • focused on business rules

4. Tools for Test Automation

  • Fit/FitNesse
  • xBehave (e.g. nBehave, jBehave)
  • xUnit

Fit example:
Story: As a user, I want to see full names, so that the screens are easy to read.

Story Test: I enter the first name “Joe”, last name “Smith” and I then see the full name “Joe Smith”.

First Name Last Name Full Name?
Joe Smith Joe Smith

5. Differences Between Story Tests and Unit Tests

Unit Tests Story Tests System Tests
Execute code paths
Boundary conditions
Safety for later refactoring
Examples
Behaviour
End to end scenarios

6. Is is Worth the Effort?

  • Version control

Developing Discipline in the Agile Process

March 1, 2009

This post is the result of group notes on:

“Developing Discipline in the Agile Process”

There were also two related issues:

  • Fighting scope creep
  • Paired programming

How do we ensure stories get done?

  • Scrum/Story Board
  • Stand-up meetings – check status
  • Switch tasks dynamically
  • Ready access to answers
  • Ability to re-prioritize the backlog

How do we avoid scope creep?

  • Refactor often to keep the code clean
  • Story specifications
  • Use TDD to minimize scope

Agile Architecture

March 1, 2009

This session included Architecture with the related topic “Documentation on Agile Teams”

Architecture

Technical debt: price paid for previous actions (e.g. hacks, no unit test, hasty design decisions)

  1. Big Picture
  2. Think Design
  3. Do What Works (and keep it simple)
  4. Discipline & Execution

Architecture Meetings

Additional meetings outside the “iterations” used to plan architectural work.

Bit picture + right team => can product good design + refactoring/polishing

Emergent Architecture

Designs made as you implement will converge if the right decisions are made.

Develop vertical slices (thin lines) early in project to exercise all key architectural blocks.

Requires discipline!

Design Patterns & Ubiquitous Language

Should be underpinnings of system design.

Simple Design

Focus on the simplest solution that works now.

Loose coupling between classes. (Tight coupling leads to technical debt, but too much loose coupling can lead to overly generalized code).

Enables future improvements/expansions

Architecture Workflow

architecture-flow

Product vs. Project

Product issues focus on long-term success of the product and project issues focus on show term issues typically to keep customers or internal stakeholders happy.

Conflict between these two perspectives often leads to technical debt.

  • Must have discipline to write clean, simple code
  • Product owner must be able to present a clear view – honestly
  • Team must push back and challenge product owner for the best long term outcomes

Agile Testing

March 1, 2009

Challenges

  • Value of testing not recognized
  • Laziness
  • Code can break when refactoring
  • Unit testing is boring – uncool
  • Legacy project – testing is such a small dent – demotivating
  • Multiple developers working on the code base breaks other person’s automated tests
  • Coverage – metrics demotivate
  • Setup for test – framework

Solutions

  • Tools to make it easier to write the tests
  • Have someone review the automated tests
  • Demo how code should be used (in unit test code)
    • Aids with documentation (someone else will benefit from investment in testing)
  • Write test first – then the code
    • If interface is agreed upon; it aids TDD
  • Isolated test to module
  • Utilize module owner accountability to overcome demotivation
  • Rewards – motivation token

Output from our Session on Agile Development

March 1, 2009

This was a fun session as the kind folks at Creative Options offered a great space along with food and drinks. Most enjoyable and many thanks to the Creative Options gang!

Format

We ran this session like an Open Spaces conference. People proposed Agile Development topics and then we did some affinity grouping to settle in one four topics which we then discussed:

  1. Challenges with Agile Stories
  2. Developing Discipline in the Agile Process
  3. Agile Testing
  4. Agile Architecture

People then attended one or more sessions. Each group had a recorder who recorded their ideas and comments. You can see the output from each group by clicking on the links above.


%d bloggers like this: