Introduction to Agile Development

Duration: 3 days
Type: beginner

Description

This course is a two part introduction to Agile Development. The first part is a theoretical discussion of what distinguishes Agile methods from traditional processes. The second part is an in-depth practical introduction to Agile tools and techniques. Examples are given from many different environments, including Java, C#, Ruby and Perl.

The first part of the course is suitable for anyone involved in softeare development. The second is designed for software developers only.

Prerequisites

For the second part of the course delegates should be software developers with experience of working on medium and large scale projects.

List of Modules

Existing Development Methods

Why no one really does waterfall development
When unstructured development works and fails
When bureaucratic development works and fails
The good news about established methods
The weaknesses of existing methods

Summarizing Agile Development

Delivering software is everything
Agile methods value developers
Agile methods value customers
Iteration is at the core of Agility
Test, test, test and test again
Automate absolutely everything

Comparing Three Agile Processes

Feature Driven Development (FDD)
The SCRUM Methodology
Extreme Programming (XP)

When Agility Isnt Enough

When being Agile is not worthwhile
Can Agility work in large projects?
Can Agility survive corporate culture?

Key Skills for Agile Developers

Coding using Test Driven Development
Continuous integration and source control
Build automation and the 'Big Red Button'
Refactoring to increase code quality
Rapid modelling using sketches

Introducing Test Driven Development

Defining your intent through tests
Writing just enough code to pass
Adding tests and refining the code
Testing up to the point of boredom
Triangulating on hard problems
Moving up and down the gears
You aren't going to need it
Building a suite of test cases

Refactoring in Depth

Refactoring as the 'second hat'
Refactoring is essential to TDD
Support for refactoring in the editor
Refactoring to keep the code alive
Detecting smells in code and tests
The most productive refactorings

Automating the Build Process

Introduction or review of Ant/NAnt/MSBuild
Triggering Unit Tests and creating reports
Calculating test coverage of your code-base
Choosing and generating metrics with value

Architecture and Modelling in an Agile Project

Common myths about Agility and architecture
Defining an architecture in small increments
Estimating and coping with technical risks
How Agile developers model their designs
Models as sketches rather than blueprints

Lightweight Containers and Mock Objects

Problems testing classes with dependencies
Using mocking to replace dependencies
Different types of data collection in mocks
Errors and 'Crash Test Dummy' mocks
Using the test as the mock (Self Shunt)
Automatically generating mock objects
Externalizing dependencies using Factories
Dependency Injection and Inversion of Control
Using Spring to manage class dependencies