我为什么要使用功能驱动开发?

时间:2021-07-02 19:36:22

Extreme Programming, Scrum and Test Driven Development definitely seem to be the most popular Agile methods at the moment. But someone recently suggested that I take a look at Feature Driven Development.

极限编程,Scrum和测试驱动开发肯定是目前最流行的敏捷方法。但有人最近建议我看看功能驱动开发。

Have you ever used this method with any success? What are the advantages of using it?

你有没有成功使用过这种方法?使用它有什么好处?

2 个解决方案

#1


8  

FDD is what I like to think of as a wrapper methodology, in that it allows you to apply a method to manage projects at a very high level, but it still allows you to use other methodologies at a lower level.

我喜欢将FDD视为一种包装方法,因为它允许您应用一种方法来管理非常高级别的项目,但它仍允许您在较低级别使用其他方法。

FDD's focus is on being able to set estimates and schedules and to report on the status of a project as a whole, or at a very granular level, but it doesn't prescribe a specific method to apply in order to create the schedule, leaving that up to you to decide. The idea is that you can look at your project and state with some certainty what the project status is, whether you are on time, slipping, early and so on.

FDD的重点是能够设定估计和时间表并报告整个项目的状态,或者在非常精细的层面上报告,但它没有规定应用的具体方法来创建时间表,离开由你来决定。这个想法是你可以看看你的项目,并确定项目状态是什么,你是按时,滑倒,早期等等。

I use FDD as a means to organise my projects into manageable stages, so that I know WHEN to sign off and commence any given stage. But by itself, FDD would be pretty useless. For example, I personally use Evidence Based Scheduling and a combined BDD/TDD as elements of a development processes that are managed under a kind of FDD umbrella. Personally, I couldn't do the full XP, or SCRUMM without running into problems because my projects and team would be hindered if they were forced to engage in practices from other methodologies that don't add value to our own unique circumstances.

我使用FDD作为将项目组织成可管理阶段的手段,以便我知道何时签署并开始任何特定阶段。但就其本身而言,FDD将毫无用处。例如,我个人使用基于证据的调度和组合的BDD / TDD作为在一种FDD伞下管理的开发过程的元素。就个人而言,我无法在没有遇到问题的情况下完成整个XP或SCRUMM,因为如果他们*参与其他不会增加我们自身独特环境价值的方法,我的项目和团队就会受到阻碍。

In any case, it is better not to fixate on any given methodology, because the needs/conditions of the company and project are likely to change regularly, and you need to be flexible in how you approach managing projects if you want them to be successful. No single methodology is a silver bullet, so the trick is to determine which methods work for you and tune your methodology to suit your individual needs. This is what being "Agile" is fundamentally about.

在任何情况下,最好不要注意任何给定的方法,因为公司和项目的需求/条件可能会定期更改,并且如果您希望它们成功,您需要灵活地管理项目的方式。没有一种方法是灵丹妙药,因此诀窍在于确定哪种方法适合您并调整您的方法以满足您的个人需求。这就是“敏捷”从根本上讲是什么。

#2


4  

FDD is an older methodology. It has lot's of the ideas of other agile methodologies and misses some of them. Like Scrum it's a bit management-focussed and I think you need some elements from XP for practical implementations.

FDD是一种较老的方法。它有很多其他敏捷方法的想法,并且错过了其中一些方法。像Scrum一样,它有点集中管理,我认为你需要XP中的一些元素来实现实现。

FDD is certainly interesting to look into. But just like Scrum and XP I think you have to understand the mechanics and not just implement the practices to be succesful. If you just "do FDD" or "do Scrum" you're not as adaptive as you should be.

FDD当然很有意思。但就像Scrum和XP一样,我认为你必须了解机制,而不仅仅是实践成功。如果你只是“做FDD”或“做Scrum”,你就不会像你应该那样适应。

The things I would look into if you want to understand agile would be

如果你想了解敏捷,我会考虑的事情是

Scrum or FDD to understand what management can get out of agile.
XP to understand how enable agile from a technology perspective.
Crystal Clear to understand the communications aspects.
Lean Agile to get a completely different perspective on agile methodologies

Scrum或FDD可以了解管理层可以从敏捷中获得什么。 XP从技术角度理解如何实现敏捷。 Crystal Clear了解通信方面。精益敏捷,以便对敏捷方法有一个完全不同的视角

I wouldn't call TDD an agile methodology by the way. It's an practice from XP but not a complete methodology per se.

顺便说一句,我不会称TDD是一种敏捷的方法。这是XP的一种做法,但本身并不是一种完整的方法论。

#1


8  

FDD is what I like to think of as a wrapper methodology, in that it allows you to apply a method to manage projects at a very high level, but it still allows you to use other methodologies at a lower level.

我喜欢将FDD视为一种包装方法,因为它允许您应用一种方法来管理非常高级别的项目,但它仍允许您在较低级别使用其他方法。

FDD's focus is on being able to set estimates and schedules and to report on the status of a project as a whole, or at a very granular level, but it doesn't prescribe a specific method to apply in order to create the schedule, leaving that up to you to decide. The idea is that you can look at your project and state with some certainty what the project status is, whether you are on time, slipping, early and so on.

FDD的重点是能够设定估计和时间表并报告整个项目的状态,或者在非常精细的层面上报告,但它没有规定应用的具体方法来创建时间表,离开由你来决定。这个想法是你可以看看你的项目,并确定项目状态是什么,你是按时,滑倒,早期等等。

I use FDD as a means to organise my projects into manageable stages, so that I know WHEN to sign off and commence any given stage. But by itself, FDD would be pretty useless. For example, I personally use Evidence Based Scheduling and a combined BDD/TDD as elements of a development processes that are managed under a kind of FDD umbrella. Personally, I couldn't do the full XP, or SCRUMM without running into problems because my projects and team would be hindered if they were forced to engage in practices from other methodologies that don't add value to our own unique circumstances.

我使用FDD作为将项目组织成可管理阶段的手段,以便我知道何时签署并开始任何特定阶段。但就其本身而言,FDD将毫无用处。例如,我个人使用基于证据的调度和组合的BDD / TDD作为在一种FDD伞下管理的开发过程的元素。就个人而言,我无法在没有遇到问题的情况下完成整个XP或SCRUMM,因为如果他们*参与其他不会增加我们自身独特环境价值的方法,我的项目和团队就会受到阻碍。

In any case, it is better not to fixate on any given methodology, because the needs/conditions of the company and project are likely to change regularly, and you need to be flexible in how you approach managing projects if you want them to be successful. No single methodology is a silver bullet, so the trick is to determine which methods work for you and tune your methodology to suit your individual needs. This is what being "Agile" is fundamentally about.

在任何情况下,最好不要注意任何给定的方法,因为公司和项目的需求/条件可能会定期更改,并且如果您希望它们成功,您需要灵活地管理项目的方式。没有一种方法是灵丹妙药,因此诀窍在于确定哪种方法适合您并调整您的方法以满足您的个人需求。这就是“敏捷”从根本上讲是什么。

#2


4  

FDD is an older methodology. It has lot's of the ideas of other agile methodologies and misses some of them. Like Scrum it's a bit management-focussed and I think you need some elements from XP for practical implementations.

FDD是一种较老的方法。它有很多其他敏捷方法的想法,并且错过了其中一些方法。像Scrum一样,它有点集中管理,我认为你需要XP中的一些元素来实现实现。

FDD is certainly interesting to look into. But just like Scrum and XP I think you have to understand the mechanics and not just implement the practices to be succesful. If you just "do FDD" or "do Scrum" you're not as adaptive as you should be.

FDD当然很有意思。但就像Scrum和XP一样,我认为你必须了解机制,而不仅仅是实践成功。如果你只是“做FDD”或“做Scrum”,你就不会像你应该那样适应。

The things I would look into if you want to understand agile would be

如果你想了解敏捷,我会考虑的事情是

Scrum or FDD to understand what management can get out of agile.
XP to understand how enable agile from a technology perspective.
Crystal Clear to understand the communications aspects.
Lean Agile to get a completely different perspective on agile methodologies

Scrum或FDD可以了解管理层可以从敏捷中获得什么。 XP从技术角度理解如何实现敏捷。 Crystal Clear了解通信方面。精益敏捷,以便对敏捷方法有一个完全不同的视角

I wouldn't call TDD an agile methodology by the way. It's an practice from XP but not a complete methodology per se.

顺便说一句,我不会称TDD是一种敏捷的方法。这是XP的一种做法,但本身并不是一种完整的方法论。