ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 软件开发-敏捷方法论

软件开发-敏捷方法论

原创 Linux操作系统 作者:vcdone 时间:2009-02-14 20:33:27 0 删除 编辑
2001年在软件工程界首次出现“敏捷”这个名词,17个过程方法学家举行了一个讨论会。发现他们的“轻量级”的方法有很多共同的地方,因此一致同意把这些方法统称为“敏捷”的方法。并且成立了个叫敏捷联盟的组织,还定下了所谓的“敏捷宣言”。从此,越来越多的人了解到敏捷方法。

敏捷方法有一些共同的特征。其中有两个最主要的特征是:轻量和简单。敏捷方法论包含最少的流程和文档,减少正式性。目的是做眼前能做的事情,而不去预测太远的未来,首先完成紧迫的事情。快速的、增量的开发能更快地交付客户使用,更快得到反馈。开发方法要称之为敏捷,需要具备4个基本特征:增量的、协作的、直接的、适应性强的。

1.SCRUM(橄榄球里的争球)方法论
关键词:30天迭代粒度,每日站立会议,进度透明,客户参与

Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。Scrum在英语的意思是橄榄球里的争球。虽然Scrum是为管理软件开发项目而开发的,它同样可以用于运行软件维护团队,或者作为计划管理方法。在SCRUM方法论中其核心仍然迭代和增量,首先对于产品需求会划分为多个迭代或增量,每个迭代都需要在1个月能够交付,而一个月即是一次冲刺,而一个迭代版本又需要转化到每天的进度跟踪和问题解决,这就是每天的15分钟会议(每日站立会议),在会议上必须回答当天的进度,明天的计划和是否存在问题。

Scrum是一个包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员。管理Scrum过程有很多实施方法,从白板上的即时贴到软件包。Scrum最大的好处是它非常容易学习,而且应用Scrum不需要太多的投入。

每一个冲刺完成后,都会举行一次冲刺回顾会议,在会议上所有团队成员都要反思这个冲刺。举行冲刺回顾会议是为了进行持续过程改进。会议的时间限制在4小时。Scrum提倡所有团队成员坐在一起工作,进行口头交流,以及强调项目有关的规范(disciplines),这些有助于创造自我组织的团队。

Scrum的一个关键原则是承认客户可以在项目过程中改变主意,变更他们的需求,而预测式和计划式的方法并不能轻易地解决这种不可预见的需求变化。同样,Scrum采用了经验方法– 承认问题无法完全理解或定义,而是关注于如何使得开发团队快速推出和响应不断出现的需求的能力最大化。其实践主要包括:
  • 客户成为开发团队中的一部分。 (例如客户肯定对开发的结果真正感兴趣。)
  • 频繁的包含可以工作的功能的中间可交付成果。
  • 频繁的风险和缓解计划是由开发团队自己制定。
  • 计划和模块开发的透明 – 让每一个人知道谁负责什么,以及什么时候完成。
  • 频繁的利益所有人会议,以跟踪项目进展
  • 平衡的 (发布,客户,员工,过程) 仪表板更新 – 拥有预警机制提前了解可能的延迟或偏差。
  • 没有问题会被藏在地毯下。认识到或说出任何没有预见到的问题并不会受到惩罚。
  • 在工作场所和工作时间内必须全身心投入。– 完成更多的工作并不意味着需要工作更长时间。
2.FDD(Feature-Driven Development)-特征驱动开发
关键词:Feature,客户价值,两周迭代粒度,Domain Model

Feature-Driven本质上还是Model Driven,是先规划出整套的Domain Model,做为系统起始的核心。 接下来就是依据Model,开始找出所有的Feature。而Feature = 可以为客户产生价值的最小开发单位。群集后的Feature称之为Feature Set。而系统的某一个主题领域就是组合了很多Feature Set。接下来,项目经理就是依据Feature来规画开发的周期,书上建议每次的周期是两周,所以每个Feature必然不可以超过两周,会超过两周的Feature必须再予以细分。所谓两周内的工作,包含为这个Feature设计、开发、测试、布置。所谓两周内的工作,包含为这个Feature设计、开发、测试、布置。

在RUP中强调的是用例驱动,通过用例进行需求的分析和建模,再过渡到架构设计和后续的开发中。而在FDD中强调特征驱动,特征是比用例更加小的粒度单位,而且特征更加能够体现客户价值。在传统的瀑布模型中我们往往在后续编码完成后才能够看到交付的功能,而FDD本身也是一种迭代的思路,只是迭代的单位是Feature,而这些Feature将贯彻从需求到编码测试的全过程,只到每个功能都能够满足一个客户价值的实现。因此通过特征和特征集将传统的瀑布方法进行了横切,一切软件开发活动包括项目计划都是以特征为单位和特征驱动。在FDD中主要包括5步流程,具体如下:
  • Develop an Overall Model (开发一个主域模型)
  • Build a Features List (通过主域模型分解特征集合)
  • Plan By Feature (根据特征制定项目计划和编排进度)
  • Design By Feature (根据特征进行设计,开始迭代)
  • Build By Feature (根据特征进行编码,测试和构建)
3.DSDM-动态系统开发方法,也称业务中心框架开发方法
关键词:业务为中心 用户参与 迭代 快速交付 团队协作和沟通



DSDM(动态系统开发方法,也称业务中心框架开发方法)是众多敏捷开发方法中的一种,它倡导以业务为核心,快速而有效的进行系统开发。我们可以把DSDM看成一种控制框架,重点在于快速交付、并补充如何应用这些控制的指导原则的框架。

DSDM是一整套的方法论,不仅仅包括软件开发内容和实践,也包括了组织结构,项目管理,估算,工具环境,测试,配置管理,风险管理,重用等各个方面的内容。

DSDM 的基本观点是,任何事情都不可能一次性的圆满完成,应该用20%的时间完成80%的有用功能,以适合商业目的为准。实施的思路是,在时间进度和可用资源预先固定的情况下,力争的最大化满足业务需求(传统方法一般是需求固定,时间和资源可变),交付所需要的系统。对于交付的系统,必须达到足够的稳定程度以在实际环境中运行;对于业务方面的某些紧急需求,也要求能够在短时间内得到满足,然后在以后迭代阶段中对功能进行进一步完善。对于DSDM主要包括以下9条基本原则:
  • 用户必须持续参与
  • 必须授予DSDM团队制定决策的权力
  • 注重产品的经常交付
  • 满足业务用途是接受交付品的主要依据
  • 迭代和增量式开发对得到正确的业务解决方案是必不可少的
  • 开发过程中的所有变化可逆
  • 在高层次上制定需求的基线
  • 测试自始自终贯穿于开发周期之中
  • 所有项目涉众间的通力合作是不可或缺的
4.Crystal Methods-水晶方法族
关键词:协作 角色 文档 迭代 风险管理

水晶方法论由Alistair Cockburn在20实际90年代末提出。之所以是个系列,是因为他相信不同类型的项目需要不同的方法。虽然水晶系列不如XP那样的产出效率,但会有更多的人能够接受并遵循它。

水晶方法把开发看作是一系列的协作游戏,而写文档的目标就是只要能帮助团队在下一个游戏中取得胜利就行了。水晶方法的工作产品包括用例、风险列表、迭代计划、核心领域模型,以及记录了一些选择结果的设计注释。水晶方法也为这些产品定义了相应的角色。然而,值得注意的是,这些文档没有模板,描述也可不拘小节,但其目标一定要清晰,那就是满足下次游戏就可以了。我总是将这些思想以下面的方式向我的团队成员表达:通过它们,你只要了解你明天加入这个团队所要知道的内容就行了。

对于水晶方法论,根据方法论的轻重可以分为透明水晶和橙色水晶等。透明水晶一般是轻量级的团队适用。不管是哪种水晶,都会对团队的角色,团队的工件和产出,核心实践,支持过程等进行定义。

5. XP(极限编程)
关键词:UserStory 测试驱动 结对编程 持续集成 重构 小版本发布 沟通


ExtremeProgramming(极限编程,简称XP)是由KentBeck在1996年提出的。KentBeck在九十年代初期与 WardCunningham共事时,就一直共同探索着新的软件开发方法,希望能使软件开发更加简单而有效。Kent仔细地观察和分析了各种简化软件开发的前提条件、可能行以及面临的困难。1996年三月,Kent终于在为DaimlerChrysler所做的一个项目中引入了新的软件开发观念

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15027599/viewspace-551935/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-07-31

  • 博文量
    190
  • 访问量
    120309