LOGIN

REGISTER
Seeker

TDD and FDD: XP-Derived Approaches

Select the language:

You must allow Vimeo cookies to view the video.

Unlock the full course and get certified!

You are viewing the free content. Unlock the full course to get your certificate, exams, and downloadable material.

*When you buy the course, we gift you two additional courses of your choice*

*See the best offer on the web*

Transcription TDD and FDD: XP-Derived Approaches


Within the ecosystem of agile practices, and closely related to Extreme Programming (XP), more specific approaches such as Test-Driven Development (TDD) and Feature-Driven Development (FDD) emerge.

Although sometimes considered independent frameworks or variants, they are often viewed as disciplines or sets of practices that delve into particular aspects of agile software development, emphasizing quality through rigorous testing (TDD) or organizing work around tangible customer functionality (FDD).

Both seek to improve quality, efficiency and value delivery in software development, especially in projects of a certain scale or complexity.

Test-Driven Development (TDD): Red-Green-Refactor Cycle

Test-Driven Development (TDD) is a software development practice that reverses the traditional flow: first write an automated test that defines a desired result or improvement, and then write the minimum code necessary for that test to pass.

It is founded on two main rules: don't write functional code unless there is a test that fails, and eliminate code duplication.

The core TDD cycle is known as Red-Green-Refactor:

  • Red: Write an automated test for the new functionality. The test will initially fail because the code does not yet exist.
  • Green: Write the simplest code possible for the test to pass.
  • Refactor: Improve the newly written (and existing) code to make it cleaner, simpler and more maintainable, ensuring that all tests still pass. TDD uses unit and acceptance testing to guide design and ensure continuous quality.

Feature-Driven Development (FDD): Focusing on Features of Value

Feature-Driven Development (FDD) is an iterative and incremental development process designed specifically to meet the needs of large software projects.

Its primary focus is to organize development around features, defined as small pieces of functionality that have direct value to the customer.

Each feature is small enough to be implemented in a short period (typically no more than two weeks), allowing for frequent and tangible deliveries of value.

FDD seeks to provide a more formalized structure than other agile methods for managing the complexity inherent in large projects.

FDD Phases and Roles

FDD is organized into five main phases that are developed iteratively:

Develop General Model: Create a high-level object model of the problem domain.

Build Feature List: Identify and list all required features, grouping them by subject area.

Plan by Feature: Sequence the implementation of features and assign feature sets to lead programmers.

  • Design by Feature: The feature team produces a detailed design package for each feature.
  • Build by Feature: The team implements the code corresponding to the feature, tests it and integrates it.

FDD also defines specific roles to manage this process, including: Project Manager, Lead Architect, Development Manager, Lead Programmer, Class Owner and Domain Expert.

This set of roles and phases provides a clear structure for large-scale development.

Summary

TDD (Test-Driven Development) and FDD (Feature-Driven Development) are specific approaches related to XP. TDD focuses on quality through rigorous testing, while FDD organizes work around features.

TDD reverses the traditional flow, writing the test first. Its cycle is Red (test fails), Green (code passes) and Refactor (improve code).

FDD is an iterative process for large projects, focused on features with direct customer value. It is organized in five phases and includes specific roles.


tdd and fdd xp derived approaches

Recent publications by professional agile coach

Are there any errors or improvements?

Where is the error?

What is the error?