InfoQ

News

Jeff De Luca, on FDD: Modeling, Code Ownership, Choosing an Agile Method

Posted by Geoffrey Wiseman on May 02, 2007 06:00 AM

Community
Agile
Topics
Collaboration ,
Customers & Requirements ,
Agile Techniques ,
Methodologies
Tags
FDD

In an eight-page interview with Stefan Roock, Jeff De Luca, who created and documented Feature Driven Development, discusses developing an overall model, code ownership, choosing an agile method, and more.

Developing an Overall Model

Contrasting feature-driven development with other Agile methods, Jeff says the initial phase of FDD (Develop an Overall Model) allows project teams to come to grips with the overall project such that they can answer questions like, "How much of the project is left?":

If we are too pure in our iterative/incremental approach - that is we are also slicing through requirements and analysis - then of course it is hard for us to answer the questions "How far along are you?" and "How far is there left to go?" because we haven't even looked across the rest of the requirements yet. So, there has to be some informational/analytical activity at the start to give us the knowledge to set a baseline that we can track and report against so that we can answer those questions. FDD is the only agile method that gets this part right.

Addressing the idea that this phase can be seen as Big Design Up-Front (BDUF):

Not "all of the design up front" as the pejorative use of BDUF has come to mean - but "just enough design" and note that this first activity in FDD is as much about requirements and requirements analysis as it is about high-level design.

Code Ownership

Jeff De Luca also takes a strong stand against collective code ownership:

Collective ownership is code for "no ownership". It's not a structure I believe in.

And in favour of individual code ownership:

The concept of module or component ownership has long been practised and long been known to be a best practice. That's how all professional development at scale is done. Everyone can't know everything about everything - that is brittle and it can't scale.

And what's especially ironic about this is that one of the fundamental principles of OO is encapsulation; how a class does what it does is private and internal to that class and those implementation details can vary wildly as long as the class presents a consistent interface to the rest of the world (the other classes). Well, humans naturally encapsulate. If you practice class ownership you get much better consistency of implementation and interface.

Although he tempers that stance with:

Class ownership is not a life sentence. If you get the Customer class you're not stuck on Customer forever. These owners can and do change throughout a project.

Choosing an Agile Method

Jeff De Luca takes a pratical approach to choosing an agile method, when talking about the different agile methodologies and their suitability to different kinds of projects:

I don't think the Agile methods classify ... by project type. When it comes to this sort of thing I tell people to get Jim Highsmith's Agile Software Development Ecosystems book. That's the only book that talks about all the Agile methods, in some detail, in the one book. You read that book, and one or two of the methods are going to resonate with you and your team. And whichever methods those are, they are the ones you should explore. In other words I'm saying that the Agile methods are more suited to types of people and organisational cultures than types of project.

The interview ends with references for further reading on FDD.

For more information these topics, consider reading InfoQ's coverage of agile methods, feature-driven development, and modeling.

Related Sponsor

VersionOne is recognized by Agile practitioners as the leader in Agile project management tools. Companies such as Adobe, BBC, CNN, Dow, HP, IBM, Sony and 3M have turned to VersionOne to help deliver greater value to their customers.
Author's name is wrong by Bernd Schiffer Posted May 3, 2007 9:11 AM
Re: Author's name is wrong by Geoffrey Wiseman Posted May 3, 2007 9:14 AM
  1. Back to top

    Author's name is wrong

    May 3, 2007 9:11 AM by Bernd Schiffer

    Should be Stefan Roock, not Broock...

  2. Back to top

    Re: Author's name is wrong

    May 3, 2007 9:14 AM by Geoffrey Wiseman

    Unfortunate; thanks for catching this, it's fixed now.

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.