2014-03-28 08:45:51 happylee6688 阅读数 12273
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10394 人正在学习 去看看 CSDN讲师
上篇文章中,我们探讨了什么是XP极限编程,以及极限编程的管理思想、核心价值观等等。在敏捷开发之旅的第三站,我想要和大家一起分享FDD特征驱动开发方法。

特征驱动开发——Feature Driven Development

还是老规矩,讨论之前,我们先了解一下什么是Feature?什么是FDD?

Feature


在FDD中,Feature(特征)是一个基本的开发单位,是(FDD)项目中的一个增量,是指用户眼中最小的有用的功能,可以在很短时间内实现(一般在两周之内)。
  • 特征是小的
特征之所以是小的,是因为他可以在两周之内实现,任何一个过于复杂而无法在两周之内完成的功能,可进一步呗分解小到足以被称为一个特征。使特征小一些也意味着客户能经常看到可测量的进度。
  • 特征是具有客户价值的
在业务系统中,一个特征映射到业务过程中某些活动的一个步骤。在其他系统中,特征等同于由用户完成的一项任务中的一个步骤。

FDD


特征驱动开发(FDD),是敏捷开发方法中的一种,他来源与新加坡的一个大型软件开发项目,由著名软件专家Jeff de Luca 、Eric Lefebvre、Peter Coad共同提出的。它强调特征驱动,快速迭代,即能保证快速开发,又能保证适当文档和质量。

他提出的每个功能开发时间不超过两周,为每个用例user case限定了粒度,具有良好可执行性,也可以对项目的开发进程进行精确及时地监控。他抓住了软件开发的核心问题领域,即正确和及时地构造软件。

FDD还打破了传统的将领域和业务专家/分析师与设计者和实现者隔离开来的壁垒。分析师被从抽象的工作中解脱出来,直接参与到开发人员和用户所从事的系统构造工作中。

开发过程


FDD方法包括5个过程,其中的按照功能设计和构建是反复的迭代过程。



  • 开发整体模型
这是FDD开始一个项目的初始工作,在主设计师的指导下,带领领域专家和开发小组成员一起工作。主要是收集系统的功能需求,然后使用四色原型进行域建模。我个人认为,在此阶段中,能够得出系统的架构设计图。
  • 构建功能列表
这个过程确定所有用于支持需求的功能。由领域专家和开发小组进行功能分解。根据领域专家对领域的划分,将整个领域分成一定数量的区域(主要功能集),每个区域再细化为一定数量的活动。活动中的每一步被划分称为一个功能。形成了具有层次结构的分类功能列表。个人认为,在此阶段中,能够形成系统的概要设计。
  • 计划功能开发
项目经理、开发经理和开发小组根据功能的依赖性、开发小组的工作负荷以及要实现的功能的复杂性,计划实现功能的顺序,完成一个功能开发计划。它提供了对项目的高层视图,让业务代表了解功能开发、测试和发布日期,以便业务代表和部署小组能够计划交付哪些功能的日期。本阶段的主要成果是,能够形成项目开发计划。
  • 按照功能设计
项目经理和上一阶段指定的各个功能集的主要程序员一起对功能进行详细设计。同时在域模型的基础上进行分析、设计,得出分析模型、设计模型。由于一次设计并不全面,因此也可以直接进入设计模型。根据设计的结果制定出项目的里程碑。这里会有一个设计评审的环节。本阶段的成果应该包括了:详细设计、项目里程碑计划等。
  • 按照功能构建
按照设计进行编码实现,由程序员实现各自负责的类。在代码完成后有必要的组织代码复查、评审。在测试和检查通过后检入到配置管理库中进行构建。第5和第4 阶段是一个迭代的过程,迭代周期一般为2个星期。这样经过不断的迭代,不断的实现功能集中的功能。每一个里程碑的时候进行评估、回顾。并考虑下一个里程碑 的继续,直到最后项目的完成。

最佳实践

  • 领域对象建模
是对象分解的一种形式,主要包括构造类图,用于描述问题领域中重要对象的类型及其相互关系,为系统设计提供了一种整体框架,使得系统可以按照特征迭代增量地进行开发。
  • 按照特征开发
按照一组小功能、对客户有价值的功能列表进行开发并跟踪过程。FDD将需求问题分解成可以解决的小问题,对每个问题分解为分层列表的功能需求,即特征。然后,开始设计并实现每一个特征。一旦系统的功能特征被标识以后,它们通常在FDD方法中用于驱动和跟踪开发过程。
  • 类(代码)拥有权
FDD规定每一个类都有一个指定的人/角色负责类代码的一致性、性能和概念的完整性。FDD方法采用的开发技术是面向对象,类定义一个单一的概念和实体,最合适作为最小的代码分配要素,代码的所有权即为类的所有权。
  • 特征小组
FDD把类即特征分配给一个确定的开发者。由于一个特征的实现会涉及到多个类及其所有者,因此,特征的所有者(特征组长)需要协调多个开发人员的工作。特征小组与开发小组类似。但有一个重要的区别:特征小组的组长更像是教练而不是超级程序员。
  • 审查
指的是检查软件错误的复审方法,这是FDD确保软件设计和代码质量的一个关键技术。审查将开发小组和FDD以主程序元为主的结构完美地结合起来,这种混合是一种新型的开发方式。
  • 定期构建
定期地取出已完成功能的全部源代码和它所依赖的库、组件,组成完整的可以运行的系统。构建增加功能的基线,确保总是有一个可以运行、向客户演示的软件系统,可以使客户观察到系统开发的进度和实现的功能是否是需要的。
  • 配置管理
一个FDD项目只需要保证对完成的代码文件最新版本的确认和历史追踪。根据开发软件的复杂性,分析制品、设计制品以及测试用例、测试脚本等也应该受控于版本控制。
  • 可视性进度报告
项目成员应该根据完成的工作向各级管理报告工作进度,FDD提供了一个简单、低开销地收集准确和可靠项目信息的方法,提供了大量直观、直接的报告样式,向项目所有相关人员报告项目进度。

与XP的比较

  • 隐寓和模型
XP过程以在卡片上记录故事开始业务分析。每个故事就是系统要做的事情。整个项目在“每个人——客户、程序员和经历——能够讲出系统如何工作的整体故事”隐寓的指导下进行的。

FDD使用特征,执行领域走查,同时要建立一个全面的领域对象模型,以便特征小组对每一组特征产生更好的设计。
  • 开发团队
在开发队伍规模上,XP通常不超过10人;FDD的理想团队成员数在16~20人,也有更大团队的实际经验。
  • 代码拥有权
XP鼓励集体拥有代码,任何人都可以在需要时添加或修改代码。与之相反,在FDD中,整个开发团队拥有代码的集体所有权。当需要集体验证譬如说软件架构的设计或用户界面构造的时候,FDD就将类所有者与特征小组和审查结合起来满足需要。
  • 测试
XP利用双人结对编程来不断地在设计和代码层执行走查和非形式化审查。FDD则提倡采用结构化的形式化审查技术。

XP中的正确性是由运行单元和功能测试来定义的。在FDD中,单元测试是“按照功能构建”过程的一个部分。FDD没有定义参与测试的形式化等级,由主程序员决定做什么更适合。
  • 项目追踪
XP让项目经理决定项目追踪方法,鼓励减少数据搜集的工作量,鼓励使用大型图表。在FDD中的按特征追踪项目的方法,描述了工作量小、准确度量项目进度的手段,提供了用数据构造多种使用的进度图表。

结束语


作为敏捷开发的方法之一,特征驱动开发很好的实现了敏捷的思想,它强调的是整体模型,是从全局观的角度考虑问题的。同时,我们也要认识到一点,特征驱动开发相对于其他的方法,还是比较复杂的。其方法的精致和结构的规整,很容易让使用者在本身固有的重型思维方式的引导下,走入于agile背道而驰的泥坑。这本身也是其复杂性的一个表现。

因此,要想使用FDD并不容易,但不可否认的一点,FDD的确是一种非常好的敏捷开发方法论。而它具体的实施效果最终还是要看领导者以及实施者、使用者的具体实践。


2017-07-12 11:58:27 a958832776 阅读数 267
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10394 人正在学习 去看看 CSDN讲师

之前一直接触极限开发和敏捷开发,但是具体说说他们的含义与联系时就有点尴尬了,不知道如何描述了。于是就静下心来好好整理整理。

介绍

2001年,为了解决许多公司的软件团队陷入不断增长的过程泥潭,一批业界专家一起概括出了一些可以让软件开发团队具有快速工作、响应变化能力的价值 观和原则,他们称自己为敏捷联盟。敏捷开发过程的方法很多,主要有:SCRUM,Crystal,特征驱动软件开发(Feature Driven Development,简称FDD),自适应软件开发(Adaptive Software Development,简称ASD),以及最重要的极限编程(eXtreme Programming,简称XP)。极限编程(XP)是于1998年由Smalltalk社群中的大师级人物Kent Beck首先倡导的。

极限编程

    设计和编程都是人的活动。忘记这一点,将会失去一切。      

                                                             -- Bjarne Stroustrup   

极限编程(XP)是敏捷方法中最著名的一个。它是由一系列简单却互相依赖的实践组成。这些实践结合在一起形成了一个胜于部分结合的整体。

敏捷开发

   人与人之间的交互是复杂的,并且其效果从来都是难以预期的,但却是工作中最重要的方面。

                                                            -- Tom DeMacro和Timothy Lister

    敏捷软件开发宣言:

    个体和交互     胜过 过程和工具
    可以工作的软件 胜过 面面俱到的文档
    客户合作       胜过 合同谈判
    响应变化       胜过 遵循计划

保持设计尽可能的干净、简单,并使用许多单元测试和验 收测试作为支援。这保持了设计的灵活性、易于理解性。团队利用这种灵活性,持续地改进设计,以便于每次迭代结束生成的系统都具有最适合于那次迭代中需求的 设计。

这里只是了解大概的关系,具体的需要自己去实现。

2017-04-21 08:53:41 huver2007 阅读数 743
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10394 人正在学习 去看看 CSDN讲师

测试驱动开发

测试驱动开发基本思想是,开发人员先编写测试用例,再编写能通过用例的代码。就像砌砖师傅先用桩子拉上线再砌墙一样。

思想:

•       Test Driven Development测试驱动开发

•       Acceptance TestDriven Development验收测试驱动开发

•       测试驱动设计,测试也是一项设计活动,编写用例的同时已在思考设计

•       持续集成,用例必须能自动化,且集成到CI环境中

优点:

•       提高代码行测试覆盖率

•       100%通过率,处理不通过的问题是优先级最高任务

•       快速变更的能力,变更后快速通过持续集成自动化测试

•       有信心重构,重构后的代码能快速测试

•       减少技术债,减少BUG泄露

敏捷转型过程中,测试驱动开发通常是最重要也最艰难的一个,只有实现快速自动化测试,才可能快速交付。前景非常诱人,但是在这个过程中我们的付出可能也是最多的。

按照敏捷思想,大部分的测试工作应该是开发来完成的,测试人员重点是保证开发测试的正确性,比如:测试方案、测试计划等。测试驱动开发的推广过程中,首要的问题是将开发人员长期以来形成的思维观念和意识形态转变过来,大部分开发人员只喜欢编码,不喜欢测试,更无法理解为什么没有产品代码的时候就先写单元测试;其次是相关的技术支持,测试驱动开发对开发人员提出了更高的要求,不仅要掌握测试和重构,还要懂得设计模式等设计方面的知识。

那么测试驱动开发跟持续集成如何关联到一起哪?简单总结一下:

•     Add atest

•     Addcode to pass the test

•     Passall existing tests

•     Cleanup the code

•     Checkin

•     ContinuousIntegration                        =

(   Auto Compile                                      +

Auto Build                                            +

Auto Deploy                                         +

Auto fullregression testing                 +    

Check in codefrequently                      )

 

 

2017-07-18 22:58:30 lanchunhui 阅读数 2792
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10394 人正在学习 去看看 CSDN讲师

测试驱动开发 TDD(Test-Driven Development)是敏捷开发的一项核心实践,同时也是一种设计技术和方法。

  • 既然是测试驱动,便是测试,测试用例先行;
    • 首先编写好测试用例,期待值,实际值;
  • 开发的目的是让测试运行通过;
  • 开发围绕测试展开;

0. 常见测试方法

  • 功能测试、单元测试、系统测试和负荷测试等;

1. 基本思想

在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践,但不只适用于XP(Extreme Programming),同样可以适用于其他开发方法和过程。

2019-02-28 11:52:34 qq_38274970 阅读数 19
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10394 人正在学习 去看看 CSDN讲师
今天我们来学习什么是敏捷开发,那敏捷开发是用来干嘛的,有什么作用呢?首先我们来看下我们今天学习的内容,如下:

在这里插入图片描述

什么是敏捷开发?

敏捷开发(Agile Development) 是一种以人为核心、迭代、循序渐进的开发方法。

怎么理解呢?
首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发

在敏捷开发中为什么说是以人为核心呢?

我们大部分人都学过瀑布开发模型,它是以文档为驱动的,为什么呢?因为在瀑布的整个开发过程中,要写大量的文档,把需求文档写出来后,开发人员都是根据文档进行开发的,一切以文档为依据;而敏捷开发它只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心。

那什么是迭代呢?

迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。

Scrum开发流程中的三大角色

产品负责人(Product Owner):
主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。

流程管理员(Scrum Master):
主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。

开发团队(Scrum Team):
主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5~10人左右,每个成员可能负责不同的技术方面,但要求每成员必须要有很强的自我管理能力,同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到Sprint的目标。

什么是Sprint呢?

Sprint指的是一次迭代,而一次迭代的周期是1个月时间(即4个星期),也就是我们要把一次迭代的开发内容以最快的速度完成它,这个过程我们称它为Sprint。

如何进行Scrum开发?

1、我们首先需要确定一个Product Backlog(按优先顺序排列的一个产品需求列表),这个是由Product Owner 负责的;

2、Scrum Team根据Product Backlog列表,做工作量的预估和安排;

3、有了Product Backlog列表,我们需要通过 Sprint Planning Meeting(Sprint计划会议) 来从中挑选出一个Story作为本次迭代完成的目标,这个目标的时间周期是1~4个星期,然后把这个Story进行细化,形成一个Sprint Backlog;

4、Sprint Backlog是由Scrum Team去完成的,每个成员根据Sprint Backlog再细化成更小的任务(细到每个任务的工作量在2天内能完成);

5、在Scrum Team完成计划会议上选出的Sprint Backlog过程中,需要进行 Daily Scrum Meeting(每日站立会议),每次会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,每个人回答完成后,要走到黑板前更新自己的 Sprint burn down(Sprint燃尽图);

6、做到每日集成,也就是每天都要有一个可以成功编译、并且可以演示的版本;很多人可能还没有用过自动化的每日集成,其实TFS就有这个功能,它可以支持每次有成员进行签入操作的时候,在服务器上自动获取最新版本,然后在服务器中编译,如果通过则马上再执行单元测试代码,如果也全部通过,则将该版本发布,这时一次正式的签入操作才保存到TFS中,中间有任何失败,都会用邮件通知项目管理人员;

7、当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行 Srpint Review Meeting(演示会议),也称为评审会议,产品负责人和客户都要参加(最好本公司老板也参加),每一个Scrum Team的成员都要向他们演示自己完成的软件产品(这个会议非常重要,一定不能取消);

8、最后就是 Sprint Retrospective Meeting(回顾会议),也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中;

三大神器?

Product Backlog:把产品进行排列
Sprint Backlog:把大的模块化为小的模块然后进行迭代
燃尽图:表示每天的工作量是否完成或者是达标

希望能帮助到你,谢谢!

敏捷开发总结

阅读数 453

没有更多推荐了,返回首页