敏捷软件开发方法

敏捷,顾名思义,就是轻巧、机敏、迅捷、灵活、活力、高效。。。。,敏捷过程很容易适应变化并迅速做出自我调整,在保证质量的前提下,做到文档、度量适度。敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。

敏捷开发由几种轻量级的软件开发方法组成。他们包括:极限编程(XP)、Scrum、精益开发(Lean Development)、动态系统开发方法(DSDM)、特征驱动开发(Feature Driver Development)、水晶开发等等。

(1)、极限编程(XP):极限编程( XP )的主要目的是降低需求变化的成本。它引入一系列优秀的软件开发方法,并将它们发挥到极致。比如,为了能及时得到用户的反馈, XP 要求客户代表每天都必须与开发团队在一起。同时, XP 要求所有的编程都采用结对编程( pair-programming )的方式。这种方式是传统的同行审查( peer review )的一种极端表现,或者可以说是它的替代方式。

XP过程:

XP 定义了一套简单的开发流程,包括:编写用户案例,架构规范,实施规划,迭代计划,代码开发,单元测试,验收测试等等。

XP思想:

         像所有其他敏捷方法一样, XP 预期并积极接受变化。它具有以下的价值观或原则:

◎ 互动交流。团队成员不是通过文档来交流,文档不是必须的。团队成员之间通过日常沟通,简单设计,测试,系统隐喻以及代码本身来沟通产品需求和系统设计。

◎反馈。反馈是一种信息的交流,能使系统更加完善。反馈与交流密切相关,客户使用或功能测试,单元测试等都能为开发团队提供反馈信息。同时,开发团队也可以通过估计和设计用户案例的方式将信息反馈给客户。

◎ 简单。 XP 提倡简单的设计,简单的解决方案。 XP 总是从一个简单的系统入手,并且只创建今天,而不是明天,需要的功能模块。因为它认为,创建明天需要的功能模块可能会由于需求的变化而成为浪费。

◎ 勇气。 XP 在这一点所要达到的目的(我们认为)是鼓励一些有较高风险的良好的做法。例如,它要求程序员尽可能频繁地重构代码,必须删除过时的代码,不解决技术难题就不罢休,等等。

◎ 团队。 XP 提倡团队合作,相互尊重。 XP 以建立并激励团队为一项重要任务。同时它把互相尊重和实际的开发习惯相结合。比如,为了尊重其他团队成员的劳动成果,每个人不得将未通过单元测试的代码集成到系统中。因此,每个人的代码质量必须过关。

XP核心做法:

◎ 小规模,频繁的版本发布,短迭代周期。

◎ 测试驱动开发( Test-driven development )。

◎结对编程( Pair programming )。

◎持续集成( Continuous integration )。

◎每日站立会议( Daily stand-up meeting )。

◎共同拥有代码 Collative code ownership.

◎系统隐喻( System metaphor )。

(2)、Scrum

SCRUM是一个敏捷开发框架,它是由一个开发过程,集中角色以及一套规范的实施方法组成。它可以被运用于软件开发,项目维护,也可以被用来作为一种管理敏捷项目的框架。

其四种角色:

◎产品拥有者(Product Owner):该角色负责产品的远景规划,平衡所有的利益相关者的利益,确定不同的产品需求鸡鸭的优先级等。它是开发团队和客户或最终用户之间的联络点。

◎利益相关者(Stakeholder):该角色与产品之间有直接或间接的利益关系,通常是客户或最终用户代表。他们负责收集编写产品需求,审查项目成果等。

◎Scrum专家(Scrum Master):Scrum专家负责指导开发团队进行Scrum开发与实践。它也是开发团队与产品拥有者之间交流的联络点。

◎团队成员(Team Member):项目开发人员。

(3)、精益开发(Lean Development)

核心思想:精益开发的核心思想是查明和消除浪费。在软件开发过程中,错误( bugs ),没用的功能,等待以及其他任何对实现结果没有益处的东西都是浪费。浪费及其源头必须被分析查明,然后设法制止。

原则包括 :

◎强调学习。软件开发过程是一个不断学习的过程。每个团队成员都需要从日常的失败,互动,交流以及信息反馈中学习,不断改进所开发的产品和效率。

◎不做长久的计划。尽量不要在可能改变的事情上做无谓的努力,这样才能有效的避免浪费。

◎尽量缩短迭代周期。较短的迭代周期能够加速产品的开发及交付,加快交流,提高生产力。

◎充分的自主权。激励团队并让所有团队成员自我管理始终是所有敏捷方法获得成功的基本因素之一。

◎完整性。确保整个系统正常工作,同时真正满足客户的需求是整个团队需要努力实现的完整性。

◎ 全局观。精益开发强调整体优化的系统。无论开发的组织还是被开发的产品, 从整体上考虑优化比从各个局部去优化更高效。

               对于上述的每个原则,都有一些相应的工具对其加以实现。这些工具包括价值流图( Value Stream Mapping ),基于集合的开发( set-based development ),拉系统( pull system ),排队论( queuing theory ),等等。

(4)、动态系统开发

动态系统开发是众多敏捷开发方法中的一种,它倡导以业务为核心,快速而有效的进行系统开发。

基本原则:

◎ 用户必须持续参与;

◎ 必须授予DSDM团队制定决策的权利;

◎ 注重产品经常交付;

◎ 满足业务用户用途是接受交付品的主要依据;

◎ 迭代和增量式开发对得到正确的业务解决方案是必不可少的;

◎ 开发过程的所有变化可逆;

◎ 在高层次上制定需求基线;

◎ 测试自始至终贯穿于开发周期中;

◎ 所有项目涉众间的通力合作是不可或缺的。

(5)、特征驱动开发

特征驱动开发( FDD )是另一种敏捷开发方式,它将用户的功能需求划分成更小的功能特征,然后逐步地在每个迭代周期中开发实现这些产品特征。与 DSDM 方式一样, FDD 仍然会在项目初期对整个项目做较大的规划和建模,以获得对该系统的全面了解。但是相比较 DSDM 来说, FDD 在这些方面更简捷。

(6)、水晶开发

Cockburn除了归纳整理他自己的实践经验以外,他还积极地造访其他项目,和项目组成员进行广泛的讨论, 考察这些项目是怎样运作的。

水晶方法适用于一个办公室内的一个小组,2~8人。

角色有: sponsor发起人,任务下达者

Senior Designer-Programmer 高级设计开发人员,总设计师

Designer-Programmer 设计开发人员

User 用户

其中一个人是项目协调者(Project Coordinator)。Senior Designer-Programmer是关键人员

水晶方法的七大体系特征:经常交付、反思改进、渗透式交流、个人安全、焦点、与专家用户建立方便的联系、配有自动测试、配置管理和经常集成功能的技术环境。

尽管水晶方法并不要求掌握或者运用某些特定的策略或方法,但倘若在启动阶段能熟识一套有效的方法体系则是件有利的事情。水晶推荐的,非常具有意义且广为现代敏捷开发团队所采用的策略有:360度全方位考察、早期胜利、灵活程序框架、增量重建、信息传播器。

推荐的具体方法有:方法体系建成法、反思研讨会、闪电式计划、利用专门排列技术的特尔菲估计、每日起立会议、实质性交互设计、流程微观模型、肩并肩编程、燃烧图表。

转载于:https://www.cnblogs.com/jing-si/p/3611678.html

敏捷软件开发方法综述相关推荐

  1. 敏捷软件开发方法 —— Scrum

    Scrum的历史: Scrum在英语中是橄榄球的意思.1986年,"The New product Development Game"竹内弘高和野中郁次阐述了一种新的整体性的方法, ...

  2. atitit.软件开发方法总结O6

    atitit.软件开发方法总结O6 #--cmm/cmmi  都晓得这个. #--IPD集成产品开发 结构化的流程 IPD工具:包括业务及技术上的共工具. 5.考评:包括团队和个人绩效考核两个方面:首 ...

  3. 几种软件开发方法对比

    综述 软件开发方法是一种使用早已定义好的技术集及符号表示习惯来组织软件生产的过程. 本文对净室方法.结构化方法.面向对象方法.原型法.逆向工程等方法进行梳理,并对各种开发方法特点.优点进行对比. 净室 ...

  4. 敏捷软件开发方法论_什么是敏捷方法论? 现代软件开发讲解

    敏捷软件开发方法论 如今,每个技术组织似乎都在为软件开发或它的一种版本实践敏捷方法. 或者至少他们相信他们这样做. 无论您是敏捷应用程序开发的新手还是几十年前使用瀑布式软件开发方法学过的软件开发,如今 ...

  5. 一文详解为什么Serverless比其他软件开发方法更具优势

    本文定义并解释了Serverless与其他应用程序架构的不同之处,然后"证明"了Serverless应用程序架构在实施得当的情况下会优于非Serverless架构.最后总结了很多经 ...

  6. 编程学习笔记(第一篇)面向对象技术高级课程:绪论-软件开发方法的演化与最新趋势(1)...

    软件工程的课程,对于从事大中型的软件开发是至关重要的一门课程. <面向对象技术高级课程>深入.系统.完整地讲解当今主流的面向对象软件开发方法的分析.设计.实现及重构方法,深入讲解UML语言 ...

  7. 编程学习笔记(第三篇)面向对象技术高级课程:绪论-软件开发方法的演化与最新趋势(3)软件开发的现状、UML扩展...

    一.软件开发的现状 软件领域正在发生一个巨变,特别是近几年来,软件领域正在发生翻天覆地的变化. 这一变化主要以这个云 + 端大数据, 这些是随着目前最先进的一些技术的产生而产生的. 随着这些新的技术以 ...

  8. 插件体系结构软件开发方法研究

    插件体系结构软件开发方法研究 计算机软件与理论专业 研究生 一觉亮天 随着计算机技术的发展,软件体系结构和开发方法也在发生着重大变化.为了高效率地进行软件开发,并且开发出高质量的产品,人们一直在寻求更 ...

  9. 软件开发方法与需求分析

    软件开发方法 1.结构化开发方法特点:用户至上,严格区分工作阶段,每阶段有任务和结果, 强调系统开发过程的整体性和全局性,系统开发过程工程化,文档资料标准化, 自顶向下,逐步分解(求精). 2.原型开 ...

最新文章

  1. python培训学费多少钱-深圳龙华新区python编程培训机构,从哪几方面选择好学校...
  2. html5表单密码验证及提示,HTML5表单及其验证(示例代码)
  3. Flutter Hero动画让你的APP页面切换充满动效 不一样的体验 不一样的细节处理
  4. dg修改归档目录 oracle_OracleDG主库丢失归档增量同步
  5. 数学 - 基本初等函数导数公式及求导法则
  6. Web服务http日志收集
  7. 地球引擎中级教程——地球引擎对象(含练习)
  8. 人见人爱A+B(C++)
  9. 微信小程序开发一定要服务器么,该怎么选择小程序服务器?
  10. Linux C/C++编程:netstat分析tcp状态转移(socket通信)
  11. 游戏运营岗位介绍和面试题答案
  12. Spring mvc基于注解自定义servlet
  13. 预训练模型-代码补全(一):CodeGeeX(清华大学)
  14. PPPoE 技术白皮书
  15. 分享|上海推进城市数字化建设成果:数都上海2035(附pdf)
  16. [易水寒]大一实训笔记 第二篇
  17. 周董新专辑跨时代 flac版下载地址~
  18. IT公司为何不喜欢培训班出来的学员?还有必须要进行IT培训吗?
  19. Win2008 R2服务器入站规则和安全策略简介
  20. Windows10资源管理器占用CPU过高解决办法

热门文章

  1. ESP8266-Arduino编程实例-ISL29125 RGB颜色光传感器驱动
  2. 又到了打流感疫苗时,肿瘤患者能否接种?看看专家的回信!
  3. ip网络的时延:发送时延(传输时延),传播时延,处理时延,排队时延
  4. window10系统pgAdmin4 忘记主管理密码处理
  5. 如何在win7+centos7双系统中添加win7启动菜单
  6. 自动驾驶(七十一)---------Pure Pursuit轨迹追踪
  7. 云扩RPA助力中核财务数字化,迈入高质量发展新阶段
  8. 《黑客与画家》读书摘记
  9. 基于Halcon学习的缺陷检测【四】光伏电池片的指纹以及划痕检测【第一种方法】
  10. 二进制包(binary file)和源代码文件的区别