24
Agile Declan Whelan It’s not something you do, it’s something you are.

Agile, TDD and .NET

Embed Size (px)

DESCRIPTION

Brief overview of Agile and TDD.

Citation preview

Page 1: Agile, TDD and .NET

Agile

Declan Whelan

It’s not something you

do,it’s something

you are.

Page 2: Agile, TDD and .NET

WaterfallRequirements

Code

Test

Deploy

Page 3: Agile, TDD and .NET

Challenged46%

Failed19%

Successful35%

Software Projects

“The CHAOS Chronicles” 2006 The Standish Group

Page 4: Agile, TDD and .NET

Rarely19%

Never45%

Sometimes16%

Often13%

Always7%

Software Features Used

“The CHAOS Chronicles” 2006 The Standish Group

Page 5: Agile, TDD and .NET

Requirements• Business

Requirements

• Technical Requirements

Analysis & Design• System

Specifications

• Component Specifications

Code• C#, C, C+

+ etc.• Big-

Bang Integration

Test• Validati

on Tests• Verificat

ion Tests

Deploy

Time

CostOf

Change

Waterfall

Page 6: Agile, TDD and .NET

“… risky and invites failure.”

Winston Royce

Page 7: Agile, TDD and .NET

agility

values, principles and practices thatfoster team communication and learning

to regularly deliver customer value through working software

Page 8: Agile, TDD and .NET

agile values

Page 9: Agile, TDD and .NET

individual and interactionsover processes and tools

Page 10: Agile, TDD and .NET

working software over comprehensive documentation

Page 11: Agile, TDD and .NET

customer collaboration over contract negotiation

Page 12: Agile, TDD and .NET

responding to change over following a plan

Page 13: Agile, TDD and .NET

agile principles

Page 14: Agile, TDD and .NET

working software as primary measure of progress

Page 15: Agile, TDD and .NET

craftsmanship

Page 16: Agile, TDD and .NET

emergent design

Page 17: Agile, TDD and .NET

do the

simplest thing that could possibly work

Page 18: Agile, TDD and .NET

feedback

Page 19: Agile, TDD and .NET

agile practices

Page 20: Agile, TDD and .NET

Agile Practices – They Aren’t New!

Source: Software Best-Practices: Agile Deconstructed - Steven Fraser OOPSLA 2007

20001960 199019801970

Requirements forever

Pair Programming 50s

Test-Driven Design

Project Planning

Risk Management

Software Reuse

Software Architecture

Collective Ownership

Documentation

Cont. Integration

Simple Design

Data Hiding

Software Metrics

On-Site Customer

Coding Standards

Incremental Releases

Patterns

Evolutionary Design

Sustainable Pace

Metaphor

Refactoring

Retrospectives

Page 21: Agile, TDD and .NET
Page 22: Agile, TDD and .NET

Red Green Refactor

1. Write the test code2. Compile the test code (it should fail)3. Implement just enough to compile4. Run the test and see it fail5. Implement just enough to make it pass6. Run the test and see it pass7. Refactor for clarity and to remove duplication8. Repeat from step 1

Page 23: Agile, TDD and .NET

Simple Design Rules

1.Has a test2.Intent revealing3.No duplication4.Minimum number of

classes/methods

Page 24: Agile, TDD and .NET

TDD Resources

• “Test-Driven Development”Kent Beck

• “xUnit Test Patterns”Gerard MeszarosRick Mugride, Ward Cunningham

• “Pragmatic Unit Testing in C# with NUnit”Andrew Hunt, David Thomas

• http://www.testdriven.com• http://www.nunit.org/ - NUnit