FDD是Agile的流程之一,与Scrum和XP有所区别。FDD可运用于小项目和大型项目

敏捷团队对Iteration Zero应当比较熟悉,他包括一系列初始化工作,为后续迭代做好启动准备。敏捷社区认为Iteration Zero很重要,Scrum和XP则不这样认为。
FDD由5个过程组成,前3个过程属于Iteration Zero的范围,但FDD不使用Iteration Zero这种叫法。对这5个过程的进入标准、任务、检验标准、退出标准,以及参与角色等详细描述,参考:The Latest FDD Processes
   

FDD Process #1: Develop an Overall Model
首先是针对整体问题域的walkthrough,然后将问题域分组,并分组对子域进行walkthrough,创建对象模型并细化,添加备注等

Big Design Up Front中,建模由项目骨干使用重型的CASE工具,经历较长的时间完成,最终模型将形成大型文档丢给一堆开发者
FDD跟Big Design Up Front不一样,他的建模是一个比较激烈、高度交互、协作,且有趣的过程。业务人员和开发者都参与,由经验丰富的建模专家担任首席架构师角色,建模一般采用Peter Coad的彩色建模方法(非必要)。主要目的是通过讨论,团队中业务人员和开发者都清楚的了解业务概念、之间的关系、业务处理的交互过程,可以使用共同的语言(业务概念词汇等)进行交流。相比较之下,对象模型只是粗浅的、比较简单的、"just enough"就成,通过后续的迭代精细化,在后续的整个迭代过程中,这个对象模型作为讨论、澄清需求的主要手段
共同语言有利于避免在大型项目中,业务人员对相同的东西使用不同的称呼,或者同样的词汇却指的是不同的东西

Tasks:
1. Form the Modelling Team - Project Manager
2. Domain Walk-through - Modelling Team
3. Study Documents - Modelling Team
4. Develop the Model - Modelling Team in Small Groups
5. Refine the Overall Object Model - Chief Architect, Modelling Team
6. Write Model Notes - Chief Architect, Chief Programmers

示例对象模型:
   

FDD Process #2: Build a Features List
FDD并非模型驱动的开发方式,虽然对象模型在整个项目周期中起着非常重要的作用,但他是需求驱动开发方式的一种。他由特征(小的,客户层面的需求)驱动开发,模型只是产生特征的一个指导。每个特征的工作量上限不应当超过2周
与Scrum和XP不同,FDD并不使用扁平化的user stories,他的特征列表由业务模块(Subject Areas)、业务活动(Business Activities)、活动步骤(Steps)3个层级组成,这有利于大型项目中对众多特征的管理。最上层的Subject Area基本直接由项目范围分解而来
特征列表中的问题都在对象建模期间讨论过,由Chief Programmer创建,业务人员进行检验,这样也有利于Chief Programmer彻底清楚真正的需求

Tasks
1. Form the Features List Team - Project Manager, Development Manager
2. Build Features List - Features List Team
Features List Team由Chief Programmer组成

FDD Process #3: Plan by Feature
建立进度计划,分派职责,特征被分派给各个负责人
综合考虑特征间的依赖关系、Feature Team的工作量、特征的复杂度等因素,确定特征的开发顺序、分派给哪些Chief Programmer、Class Onwer等
与传统敏捷思想不同,FDD采用individual class ownership,而非collective方式管理源码,当然随着团队规模的扩大可以灵活加入collective ownership方式。当然FDD中并不会让individual class ownership而影响特征的完成进度。首先在FDD中,code ownership意味着职责而不是不让别人修改,代码所有者应当清楚自己负责的代码被修改了哪些东西,并负责检查,确保采用了正确的修改方式。另外在individual class ownership方式下提高写作开发效率的另一措施是依据实际情况动态构建feature team

Tasks:
1. Form the Planning Team - Project Manager
2. Determine the DevelopmentSequence - Planning Team
3. Assign Business Activities to ChiefProgrammers - Planning Team
4. Assign Classes to Developers - Planning Team
Planning Team由Development Manager和Chief Programmer组成
Planning Team为每个业务规则指定一个日期(到年或者月,很粗的一个计划)

Milestones:
   
   

Plan:
   
   

Plan on the Wall:
   

最重要的一点,类似iteration zero的过程在什么时间点算是结束,FDD中仍然采用"just enough"原则,并不必在这一过程中得到完善的模型,清楚需求的方方面面,只是在寻求一个足够启动的基础,模型、特征列表、计划都是灵活的,随着迭代的进展而细化。当然结束点的判断需要经验,经验丰富的建模专家担任首席架构师角色将承担起这一责任
有些项目前期可能需要评估、选择、安装相关工具,设置开发环境,决定采用哪些基础组件等,FDD流程中并不讨论这些,"just enough",可以启动项目开发就行

FDD Process #4: Design By Feature
Features在阶段3中被分派给各Chief Programmer,阶段4中Chief Programmer按照计划将每次需要开发的Features取出来,确定需要使用到哪些class,这些class owner组成Feature Team。Feature Team细化设计,完成Sequence Diagram等,Chief Programmer负责在这些基础上完善模型(包括添加class、修改已有class的方法、属性等),最后开发者完成类和方法的prologue

Tasks:
1. Form Feature Team - Chief Programmer
2. Domain Walk-through - Domain Expert
3. Study the Referenced Documents - Feature Team
4. Develop the Sequence Diagram(s) - Feature Team
5. Refine the Object Model - Chief Programmer
6. Write Class and Method Prologues - Feature Team

Feature Team划分:
   

FDD Process #5: Build By Feature
开发员以特征为单位进行开发、单元测试,Chief Programmer进行代码审查,对通过审查的代码进行构建
Tasks:
1. Implement Classes and Methods - Feature Team
2. Code Inspection - Feature Team
3. Unit Test - Feature Team
4. Promote to the Build - Chief Programmer, Feature Team

进度管理
总体进度:
   

进度完成趋势:
   

进度完成趋势图:
   

参考:
An Introduction to Feature-Driven Development - Part 1
The Latest FDD Processes
FDD Overview Presentation
FDD Implementations

特征驱动开发 Feature-Driven Development - FDD相关推荐

  1. 敏捷开发系列之旅 第三站(认识FDD特征驱动开发)

    上篇文章中,我们探讨了什么是XP极限编程,以及极限编程的管理思想.核心价值观等等.在敏捷开发之旅的第三站,我想要和大家一起分享FDD特征驱动开发方法. 特征驱动开发--Feature Driven D ...

  2. 【中级软考】什么是“敏捷过程的开发方法(敏捷方法agile)“(极限编程XP、特征驱动开发FDD、并列争球法Scrum、水晶法Crystal、开放源码法、自适应软件开发 ASD方法)

    文章目录 敏捷方法 1 极限编程 XP 1.四大价值观 2.十二个最佳实践 2 特征驱动开发 FDD 1.FDD 角色定义 2.核心过程 3.最佳实践 3 并列争球法 Scrum 1.Scrum 的五 ...

  3. Transformer课程 业务对话机器人Rasa 3.x 会话驱动开发(Conversation-Driven Development)

    Transformer课程 业务对话机器人Rasa 3.x 会话驱动开发(Conversation-Driven Development) Rasa 官网 https://rasa.com/ Conv ...

  4. 优美的测试代码 - 行为驱动开发(BDD)

    可理解的代码非常重要,测试代码也是如此.在我看来,优秀的测试代码,必须做到一个重要的事情就是保持测试逻辑的清晰.一个完整的测试案例通常包括三个部分: 1. SetUp 2. Exercise 3. V ...

  5. 工蜂集成TAPD、Jenkins实现特性驱动开发手册

    文章目录 一.前言 二.GitLab工作流 1.什么是GitLab工作流? 2.Git.GitHub和GitLab工作流的区别 3. GitLab为软件开发阶段提供的解决方案 三.FDD(特性驱动开发 ...

  6. 行为驱动开发BDD和Cucunber简介

    测试驱动开发(TDD) 1.测试驱动开发,即Test-Driven Development(TDD),测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论.TDD的原理是在开发功能代码之前 ...

  7. 行为驱动开发BDD概要

    BDD脱胎于TDD 行为驱动开发(Behavior-Driven Development,简称BDD),是在测试驱动开发(Test-Driven Development,TDD)基础上发展而来的一种软 ...

  8. 解读 TDD 测试驱动开发

    转自:http://www.jianshu.com/p/62f16cd4fef3 本文结构: 什么是 TDD 为什么要 TDD 怎么 TDD FAQ 学习路径 延伸阅读 什么是 TDD TDD 有广义 ...

  9. 领域驱动开发(domain driven development)

    链接: https://www.zhihu.com/question/56332619/answer/250971065 什么是领域驱动开发 将问题抽象为一个领域解决方案.并针对此领域(即抽象)进行开 ...

最新文章

  1. 软件质量与测试 第4周小组作业
  2. 【iOS学习笔记】IOS开发中设置applicationIconBadgeNumber和消息推送
  3. 创新实训个人记录:approximation factor, maximum matchingvertex cover
  4. 9/100. Reverse Linked List
  5. The proctime attribute ‘rowtime‘ must not replace an existing field.
  6. RPC简介及框架选择
  7. php 读取文件fread,PHP: 读取文件 fgets 和 fread 的差异
  8. 从飞鸽传书口水仗想到的
  9. 2020年计算机一级B押题,2021年全国计算机一级选择题真题押题.doc
  10. 关于tomcat5.5或6.0免安装版,点击startup.bat启动自动消失问题
  11. bash脚本之条件判断
  12. d3 svg path添加文本_svg演示kafka的broker和zookeeper动态交互
  13. 181102每日一句
  14. 树莓派所用到的软件工具及获取方法汇总
  15. VMware虚拟机快速安装Ubuntu教程
  16. 连续分配存储管理,覆盖交换和存储碎片
  17. 5.19 对学生按姓名进行随机排序 [原创Excel教程]
  18. phpstorm database 使用
  19. 三步修改jupyter notebook默认路径
  20. 腾讯企业邮箱多少钱?注册好腾讯企业邮箱怎么登录?

热门文章

  1. 通用运输APP/小型物流托运APP/客运班车APP/PHP+MYSQL管理后端
  2. 舔狗日记网PHP源码
  3. VSTS 2010体验 - TFS 2010变化巨大
  4. vs.php在win2008+vs2008下开发调试配置
  5. 利用jquery load 局部刷新数据
  6. Node.js: fs.readFile/writeFile 和 fs.createReadStream/writeStream 区别
  7. 流量劫持能有多大危害?
  8. Magento Helper简介
  9. php 保存远程图片到本地
  10. Apache Benchmark(简称ab)压力测试安装与解释