Agentic AI Atlasby a5c.ai
OverviewWikiGraphFor AgentsEdgesSearchWorkspace
/
GitHubDocsDiscord
i.2Wiki
Agentic AI Atlas · Feature-Driven Development (FDD) (Library)
library/feature-driven-developmenta5c.ai
Search the atlas/
Wiki · linked records

Article and nearby pages

I.Current articlepp. 1 - 1
Aerospace Engineering Specialization (Library)AI Agents and Conversational AI Specialization (Library)Algorithms and Optimization Specialization (Library)Arts and Culture Specialization (Library)ATDD/TDD Methodology (Library)AutoMaker (Library)
II.Documented nodesrefs · 1
Feature-Driven Development · Specialization
I.
Wiki article

library/feature-driven-development

Reading · 10 min

Feature-Driven Development (FDD) (Library) reference

Feature-Driven Development (FDD) is an agile methodology that organizes software development around building small, client-valued features in short, predictable cycles. Created during a massive Singapore banking project with 50+ developers, FDD combines the discipline needed for large-scale projects with agile responsiveness.

Page nodewiki/library/feature-driven-development.mdNearby pages · 111Documents · 1

Continue reading

Nearby pages in the same section.

Aerospace Engineering Specialization (Library)AI Agents and Conversational AI Specialization (Library)Algorithms and Optimization Specialization (Library)Arts and Culture Specialization (Library)ATDD/TDD Methodology (Library)AutoMaker (Library)Automotive Engineering Specialization (Library)Backend Development (Library)BDD/Specification by Example (Library)Bioinformatics and Genomics Specialization (Library)Biomedical Engineering Specialization (Library)BMAD Method (Library)Business Analysis and Consulting (Library)Business Strategy and Operations (Library)Business Strategy Specialization (Library)CC10X Methodology (Library)CCPM - Claude Code PM Methodology (Library)Chemical Engineering Specialization (Library)Civil Engineering Specialization (Library)ClaudeKit Methodology (Library)Cleanroom Software Engineering (Library)CLI and MCP Development Specialization (Library)Code Migration and Modernization Specialization (Library)COG Second Brain (Library)Common Utilities (Library)Computer Science Specialization (Library)Cryptography and Blockchain Development Specialization (Library)Customer Experience and Support Specialization (Library)Data Engineering, Analytics, and BI Specialization (Library)Data Science and Machine Learning Specialization (Library)Intelligence, Decision Support and Decision Making (Library)Desktop Product Development Specialization (Library)DevOps, SRE, and Platform Engineering Specialization (Library)Digital Marketing and Content Strategy Specialization (Library)Domain-Driven Design (DDD) Methodology (Library)Double Diamond Methodology (Library)Education and Learning Specialization (Library)Electrical Engineering Specialization (Library)Embedded Systems Engineering Specialization (Library)Entrepreneurship and Startup Processes (Library)Environmental Engineering Specialization (Library)Event Storming (Library)Everything Claude Code Methodology (Library)Example Mapping Methodology (Library)Extreme Programming (XP) (Library)Finance, Accounting, and Economics Specialization (Library)FPGA Programming and Hardware Description Specialization (Library)Game Product Development Specialization (Library)Gas Town Methodology (Library)GPU Programming and Parallel Computing (Library)GSD-Adapted Workflows for Babysitter SDK (Library)Healthcare and Medical Management Specialization (Library)Human Resources and People Operations Specialization (Library)Humanities and Anthropology Specialization (Library)Hypothesis-Driven Development (Library)Impact Mapping Methodology (Library)Industrial Engineering Specialization (Library)Jobs to Be Done (JTBD) Methodology (Library)Kanban (Library)Knowledge Management (Library)Legal and Compliance Specialization (Library)Logistics and Operations Specialization (Library)Maestro App Factory (Library)Marketing and Brand Management Specialization (Library)Materials Science Specialization (Library)Mathematics Specialization (Library)Mechanical Engineering Specialization (Library)Meta Specialization - Process, Skill, and Agent Creation (Library)Metaswarm Methodology (Library)Mobile Product Development Specialization (Library)Nanotechnology Specialization (Library)Network Programming and Protocols Specialization (Library)Enhanced Ontology-Driven Development (ODD) Methodology (Library)Operations Management Specialization (Library)Performance Optimization and Profiling Specialization (Library)Philosophy and Theology Specialization (Library)Physics Specialization (Library)Pilot Shell Methodology for Babysitter SDK (Library)Planning with Files (Library)Product Management and Product Strategy Specialization (Library)Production contract (Library)Programming Languages and Compilers Development Specialization (Library)Project Management and Leadership Specialization (Library)Public Relations and Communications Specialization (Library)QA, Testing, and Test Automation (Library)Quantum Computing Specialization (Library)Research Specialization (Library)Robotics and Simulation Engineering Specialization (Library)RPIKit Methodology (Library)Ruflo Methodology (Library)RUP (Rational Unified Process) (Library)Sales and Business Development Specialization (Library)Scientific Discovery and Problem Solving Specialization (Library)Scrum (Library)SDK, Platform, and Systems Development (Library)Security, Compliance, and Risk Management Specialization (Library)Security Research and Vulnerability Analysis Specialization (Library)Shape Up (Library)Social Sciences Specialization (Library)Software Architecture and Design Patterns Specialization (Library)Spec Kit Methodology (Library)Spiral Model (Library)Superpowers Extended Methodology (Library)Supply Chain Management Specialization (Library)Technical Documentation Specialization (Library)Travel (Curated-Dataset + SQL-Tool Pattern) (Library)UX/UI Design and User Experience Specialization (Library)V-Model Methodology (Library)Venture Capital and Investment Due Diligence Specialization (Library)Waterfall Methodology (Library)Web Product Development Specialization (Library)

Documented graph nodes

Records linked directly from this page’s Page node.

Feature-Driven Development · Specialization

Feature-Driven Development (FDD)

**Creator**: Jeff De Luca and Peter Coad **Year**: 1997 **Category**: Feature-Centric Agile / Progress Tracking **Priority**: High

Overview

Feature-Driven Development (FDD) is an agile methodology that organizes software development around building small, client-valued features in short, predictable cycles. Created during a massive Singapore banking project with 50+ developers, FDD combines the discipline needed for large-scale projects with agile responsiveness.

FDD is particularly well-suited for:

  • **Large teams** (15-500+ developers)
  • **Enterprise projects** requiring rigorous tracking
  • **Client-facing applications** with clearly defined features
  • **Projects requiring high visibility** of progress
  • **Brownfield development** with existing codebases

Key Principles

Five-Step Process

1. **Develop Overall Model** - Domain walkthrough and object modeling 2. **Build Features List** - Feature decomposition in <action> <result> <object> format 3. **Plan by Feature** - Sequencing, Chief Programmer assignment, iteration scheduling 4. **Design by Feature** - Detailed design with sequence diagrams and design inspection 5. **Build by Feature** - Implementation, testing, code inspection, integration, promotion

Core Characteristics

  • **Parking Lot Diagrams**: Visual progress tracking with colored feature set boxes
  • **Class Ownership**: Individual developers own classes (reduces merge conflicts)
  • **Feature Teams**: Chief Programmer + 2-5 developers per team
  • **Regular Builds**: 2-week iterations with working builds
  • **Client-Valued Features**: Everything organized around delivering business value
  • **Inspections**: Design and code inspections ensure quality

Feature Format

FDD features follow a strict template:

Code
<action> <result> <object>

**Examples**:

  • Calculate total of sale
  • Validate password of user
  • Display history of account
  • Generate report of transactions
  • Update status of order

Features should be small enough to implement in 2 hours to 2 weeks.

Usage

Basic Usage

javascript
import { babysit } from '@a5c-ai/babysitter-sdk';

const result = await babysit({
  process: 'methodologies/feature-driven-development',
  inputs: {
    projectName: 'E-Commerce Platform',
    domainDescription: 'Online retail system with shopping cart, payment, and order management',
    iterationWeeks: 2,
    teamSize: 12,
    chiefProgrammers: 3
  }
});

With Predefined Features

javascript
const result = await babysit({
  process: 'methodologies/feature-driven-development',
  inputs: {
    projectName: 'Banking System',
    domainDescription: 'Core banking with accounts, transactions, and reporting',
    features: [
      {
        id: 'f-001',
        title: 'Calculate interest of account',
        action: 'Calculate',
        result: 'interest',
        object: 'account',
        priority: 'high',
        estimatedDays: 3
      },
      {
        id: 'f-002',
        title: 'Validate balance of transaction',
        action: 'Validate',
        result: 'balance',
        object: 'transaction',
        priority: 'high',
        estimatedDays: 2
      }
    ],
    iterationWeeks: 2
  }
});

Brownfield Project

javascript
const result = await babysit({
  process: 'methodologies/feature-driven-development',
  inputs: {
    projectName: 'Legacy Modernization',
    domainDescription: 'Modernize order management system',
    existingCodebase: {
      structure: 'Monolithic Java application',
      mainPackages: ['com.company.orders', 'com.company.customers'],
      database: 'Oracle 11g',
      frameworks: ['Spring', 'Hibernate']
    },
    iterationWeeks: 2,
    teamSize: 8,
    chiefProgrammers: 2
  }
});

Input Schema

typescript
interface FDDInputs {
  // Required
  projectName: string;              // Project name
  domainDescription: string;        // High-level business domain description

  // Optional
  iterationWeeks?: number;          // Default: 2
  features?: Array<Feature>;        // Pre-defined features (will generate if not provided)
  existingCodebase?: Object;        // For brownfield projects
  teamSize?: number;                // Default: 6
  chiefProgrammers?: number;        // Default: 2
}

interface Feature {
  id: string;
  title: string;                    // In <action> <result> <object> format
  action: string;
  result: string;
  object: string;
  priority: 'high' | 'medium' | 'low';
  estimatedDays: number;
  dependencies?: string[];          // IDs of dependent features
}

Output Schema

typescript
interface FDDOutput {
  success: boolean;
  projectName: string;

  // Step 1: Domain Model
  domainModel: {
    classes: Array<{
      name: string;
      responsibilities: string;
      attributes: string[];
      methods: string[];
      stereotype: string;
    }>;
    relationships: Array<{
      from: string;
      to: string;
      type: string;
      description: string;
    }>;
    modelDiagram: string;
  };

  // Step 2: Features List
  featuresList: {
    featureSets: Array<{
      id: string;
      name: string;
      description: string;
      features: Feature[];
    }>;
    totalFeatures: number;
    parkingLotLayout: string;
  };

  // Step 3: Plan
  plan: {
    iterations: Array<{
      number: number;
      features: Feature[];
      chiefProgrammerAssignments: Array<{
        chiefProgrammer: string;
        features: string[];
        classOwners: string[];
      }>;
    }>;
    classOwnership: Record<string, string>;
    schedule: {
      totalWeeks: number;
      iterationCount: number;
      startDate: string;
      estimatedEndDate: string;
    };
  };

  // Steps 4 & 5: Iterations
  iterations: Array<{
    iterationNumber: number;
    features: Feature[];
    results: Array<{
      chiefProgrammer: string;
      features: Array<{
        feature: Feature;
        design: DesignResult;
        build: BuildResult;
      }>;
    }>;
    parkingLot: ParkingLotResult;
    metrics: {
      totalFeatures: number;
      completedFeatures: number;
      completionRate: number;
    };
  }>;

  // Final Parking Lot
  parkingLot: {
    svgContent: string;
    completionPercentage: number;
    featureSetStatus: Array<{
      name: string;
      completed: number;
      total: number;
      percentage: number;
      color: string;
    }>;
  };

  // Metrics
  metrics: {
    totalFeatures: number;
    completedFeatures: number;
    completionRate: number;
    totalIterations: number;
    averageFeaturesPerIteration: number;
    featureSetCompletion: Array<{
      name: string;
      total: number;
      completed: number;
      percentage: number;
    }>;
  };
}

Process Workflow

Step 1: Develop Overall Model

**Duration**: 1-3 days for medium projects

  • Domain walkthrough with business experts
  • Study existing requirements and documentation
  • Identify major domain objects and entities
  • Define classes with responsibilities, attributes, and methods
  • Map relationships (associations, inheritance, composition)
  • Create UML class diagrams
  • Identify bounded contexts

**Artifacts**:

  • artifacts/fdd/domain-model.md - Human-readable model
  • artifacts/fdd/domain-model.json - Machine-readable structure

Step 2: Build Features List

**Duration**: 1-2 days

  • Identify major feature sets (functional areas)
  • Decompose into individual features using <action> <result> <object> format
  • Prioritize features by business value
  • Identify dependencies
  • Organize into parking lot structure
  • Map features to domain classes

**Artifacts**:

  • artifacts/fdd/features-list.md - Organized feature list
  • artifacts/fdd/features-list.json - Structured feature data

Step 3: Plan by Feature

**Duration**: 1 day

  • Sequence features based on dependencies
  • Assign features to Chief Programmers
  • Identify class owners (individual ownership)
  • Organize into 2-week iterations
  • Balance workload across teams
  • Generate initial parking lot diagram

**Artifacts**:

  • artifacts/fdd/feature-plan.md - Detailed plan
  • artifacts/fdd/feature-plan.json - Plan data
  • artifacts/fdd/parking-lot-initial.svg - Initial progress visualization

Step 4: Design by Feature

**Duration**: 1 day or less per feature

For each feature:

  • Refine domain model
  • Create sequence diagrams
  • Design class methods and interfaces
  • Identify algorithms and patterns
  • Perform design inspection (peer review)
  • Document design decisions

**Artifacts**:

  • artifacts/fdd/designs/{feature-id}-design.md - Design documentation per feature

Step 5: Build by Feature

**Duration**: 2 hours to 2 weeks per feature

For each feature:

  • Implement code following design
  • Respect class ownership
  • Write unit tests
  • Perform code inspection
  • Run all tests
  • Integrate with main build
  • Promote to build (mark complete)

**Artifacts**:

  • artifacts/fdd/builds/{feature-id}-build.md - Build report per feature

Parking Lot Diagram

Generated at each iteration showing:

  • Feature sets as colored boxes
  • Completion percentage per set
  • Overall project progress

**Color Coding**:

  • 🟢 **Green** (100%): Complete
  • 🟡 **Yellow** (50-99%): In progress (majority done)
  • 🔴 **Red** (1-49%): In progress (early stage)
  • ⚪ **Gray** (0%): Not started

Examples

See the examples/ directory for:

  • e-commerce.json - E-commerce platform with shopping cart
  • banking.json - Core banking system
  • healthcare.json - Patient management system
  • brownfield.json - Legacy modernization project

Integration with Other Methodologies

FDD + Spec-Kit

Use Spec-Kit's constitution and specification phases, then apply FDD for implementation:

javascript
// 1. Run Spec-Kit for requirements
const specResult = await babysit({
  process: 'methodologies/spec-driven-development',
  inputs: { projectName: 'Banking System', /* ... */ }
});

// 2. Use FDD for feature-driven implementation
const fddResult = await babysit({
  process: 'methodologies/feature-driven-development',
  inputs: {
    projectName: 'Banking System',
    domainDescription: specResult.specification.summary,
    features: convertUserStoriesToFeatures(specResult.specification.userStories)
  }
});

FDD + DDD

Use Domain-Driven Design for "Develop Overall Model" phase:

javascript
// Deep domain modeling with DDD, then FDD for delivery
const dddModel = await babysit({
  process: 'methodologies/domain-driven-design',
  inputs: { /* ... */ }
});

const fddResult = await babysit({
  process: 'methodologies/feature-driven-development',
  inputs: {
    projectName: 'Complex Domain',
    domainDescription: dddModel.description,
    // Use DDD model as input
  }
});

FDD + Agile

FDD naturally integrates with Scrum:

  • FDD iterations = Sprints
  • Chief Programmers = Senior developers
  • Feature sets = Epics
  • Features = User stories

Best Practices

1. Keep Features Small

Features should be completable in 2 hours to 2 weeks. If larger, decompose further.

**Good**:

  • Calculate total of sale
  • Validate email of user

**Too Large**:

  • Build complete checkout system
  • Implement entire authentication

2. Respect Class Ownership

Each class should have a single owner (developer). This:

  • Reduces merge conflicts
  • Improves code quality (single responsible person)
  • Enables expertise development

3. Regular Builds

Integrate and build every day or even more frequently. This:

  • Catches integration issues early
  • Maintains working software
  • Enables continuous progress tracking

4. Use Parking Lot for Communication

The parking lot diagram is your primary communication tool:

  • Share with stakeholders daily
  • Use in stand-ups
  • Display prominently
  • Update in real-time

5. Chief Programmer Role

Chief Programmers should:

  • Be senior developers with domain expertise
  • Lead design by feature sessions
  • Conduct code inspections
  • Coordinate with class owners
  • Report progress

6. Inspections Are Critical

Both design and code inspections:

  • Catch defects early
  • Share knowledge across team
  • Maintain code quality
  • Should be brief (30-60 minutes)

Parking Lot Diagram

The parking lot is FDD's signature artifact:

Code
┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐
│  User Mgmt      │  │  Shopping Cart  │  │  Payment        │
│                 │  │                 │  │                 │
│      85%        │  │      45%        │  │      100%       │
│                 │  │                 │  │                 │
│  17/20 features │  │  9/20 features  │  │  15/15 features │
└─────────────────┘  └─────────────────┘  └─────────────────┘
    🟡 Yellow           🔴 Red               🟢 Green

┌─────────────────┐  ┌─────────────────┐
│  Reporting      │  │  Admin Panel    │
│                 │  │                 │
│      0%         │  │      12%        │
│                 │  │                 │
│  0/25 features  │  │  3/25 features  │
└─────────────────┘  └─────────────────┘
    ⚪ Gray              🔴 Red

Comparison with Other Methodologies

AspectFDDScrumXPWaterfall
**Team Size**15-500+3-92-12Any
**Iteration**2 weeks1-4 weeks1-2 weeksMonths
**Progress Tracking**Parking LotBurndownStory BoardGantt
**Planning**Feature-basedSprint-basedStory-basedPhase-based
**Code Ownership**IndividualCollectiveCollectiveIndividual
**Documentation**ModerateLightMinimalHeavy
**Best For**Large teamsSmall teamsTechnical excellenceFixed requirements

References

Official Resources

  • Feature Driven Development Official Site
  • FDD Parking Lot Diagrams
  • FDD Processes

Articles & Guides

  • Monday.com FDD Guide 2026
  • Wikipedia: Feature-Driven Development
  • A Practical Guide to FDD

Books

  • **"Java Modeling in Color with UML"** by Peter Coad et al. - FDD foundations
  • **"A Practical Guide to Feature-Driven Development"** by Stephen Palmer and John Felsing

Academic Papers

  • De Luca, J. & Coad, P. (1999). "Java Modeling in Color with UML"
  • Palmer, S. R., & Felsing, J. M. (2002). "A Practical Guide to Feature-Driven Development"

Troubleshooting

Features Too Large

**Problem**: Features taking weeks to complete

**Solution**:

  • Decompose into smaller features
  • Aim for 2-hour to 2-week range
  • Use sub-features if needed
  • Example: "Process payment" → "Validate payment info", "Charge credit card", "Generate receipt"

Parking Lot Not Updating

**Problem**: Parking lot shows no progress

**Solution**:

  • Ensure features are marked "promoted" after build
  • Check integration process
  • Verify parking lot task is running
  • Review feature completion criteria

Merge Conflicts

**Problem**: Constant merge conflicts

**Solution**:

  • Review class ownership assignments
  • Ensure one owner per class
  • Consider refactoring to reduce class coupling
  • Use feature branches with frequent integration

Design Inspections Slow

**Problem**: Design reviews taking too long

**Solution**:

  • Limit to 30-60 minutes
  • Focus on critical design decisions
  • Use checklists
  • Include only key team members

License

This methodology implementation is part of the Babysitter SDK and follows the same license terms.

Contributing

To improve this FDD implementation: 1. Review the backlog in methodologies/backlog.md 2. Propose enhancements via issues 3. Submit pull requests with improvements 4. Share real-world usage experiences

---

**Implementation Status**: ✅ Implemented **Last Updated**: 2026-01-23 **Version**: 1.0.0

Trail

Wiki

Library

Feature-Driven Development (FDD) (Library)

Continue reading

Aerospace Engineering Specialization (Library)
AI Agents and Conversational AI Specialization (Library)
Algorithms and Optimization Specialization (Library)
Arts and Culture Specialization (Library)
ATDD/TDD Methodology (Library)
AutoMaker (Library)
Automotive Engineering Specialization (Library)
Backend Development (Library)

Page record

Open node ledger

wiki/library/feature-driven-development.md

Documents

Feature-Driven Development · Specialization