精华内容
参与话题
问答
  • 敏捷开发

    千次阅读 多人点赞 2019-08-12 20:39:23
    敏捷开发前言迭代开发增量开发敏捷开发的好处早期交付降低风险如何进行每一次迭代敏捷开发的价值观十二条原则 前言    迭代开发   敏捷开发的核心是迭代开发(iterative development)。敏捷一定是采用迭代开发...

    前言

      

    迭代开发

      敏捷开发的核心是迭代开发(iterative development)。敏捷一定是采用迭代开发的方式。那么什么是"迭代开发"呢?迭代的英文是 iterative,直译为"重复",迭代开发其实就是"重复开发"。
      对于大型软件项目,传统的开发方式是采用一个大周期(比如半年)进行开发,整个过程就是一次"大开发";迭代开发的方式则不一样,它将开发过程拆分成多个小周期,即一次"大开发"变成多次"小开发",每次小开发都是同样的流程,所以看上去就好像重复在做同样的步骤。
      举例来说,SpaceX 公司想造一个大推力火箭,将人类送到火星。但是,它不是一开始就造大火箭,而是先造一个最简陋的小火箭 Falcon 1。结果,第一次发射就爆炸了,直到第四次发射,才成功进入轨道。然后,开发了中型火箭 Falcon 9,九年中发射了70次。最后,才开发 Falcon 重型火箭。如果 SpaceX 不采用迭代开发,它可能直到现在还无法上天。
      迭代开发将一个大任务,分解成多次连续的开发,本质就是逐步改进。开发者先快速发布一个有效但不完美的最简版本,然后不断迭代。每一次迭代都包含规划、设计、编码、测试、评估五个步骤,不断改进产品,添加新功能。通过频繁的发布,以及跟踪对前一次迭代的反馈,最终接近较完善的产品形态。

    增量开发

      迭代开发只是要求将开发分成多个迭代,并没有回答一个重要的问题:怎么划分迭代,哪个任务在这个迭代,哪个任务在下个迭代?这时,一般采用"增量开发"(incremental development)划分迭代。
      所谓的"增量开发",指的是软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。
      举例来说,房地产公司开发一个10栋楼的小区。如果采用增量开发的模式,该公司第一个迭代就是交付一号楼,第二个迭代交付二号楼…每个迭代都是完成一栋完整的楼。而不是第一个迭代挖好10栋楼的地基,第二个迭代建好每栋楼的骨架,第三个迭代架设屋顶…
    增量开发加上迭代开发,才算是真正的敏捷开发。

    敏捷开发的好处

    早期交付

      敏捷开发的第一个好处,就是早期交付,从而大大降低成本。
      还是房地产公司为例,如果按照传统的"瀑布开发模式",先挖10栋楼的地基、再盖骨架、然后架设屋顶,每个阶段都等到前一个阶段完成后开始,可能需要两年才能一次性交付10栋楼。也就是说,如果不考虑预售,该项目必须等到两年后才能回款。
      敏捷开发是六个月后交付一号楼,后面每两个月交付一栋楼。因此,半年就能回款10%,后面每个月都会有现金流,资金压力就大大减轻了。

    降低风险

      敏捷开发的第二个好处是,及时了解市场需求,降低产品不适用的风险。
      请想一想,哪一种情况损失比较小:10栋楼都造好以后,才发现卖不出去,还是造好第一栋楼,就发现卖不出去,从而改进或停建后面9栋楼?
      对于软件项目来说,先有一个原型产品,了解市场的接受程度,往往是项目成功的关键。有一本书叫做《梦断代码》,副标题就是"20+个程序员,三年时间,4732个bug,100+万美元,最后失败的故事",这就是没有采用敏捷开发的结果。相反的,Instagram 最初是一个地理位置打卡 App,后来发现用户不怎么在乎地理位置,更喜欢上传照片,就改做照片上传软件,结果成了独角兽。
      由于敏捷开发可以不断试错,找出对业务最重要的功能,然后通过迭代,调整软件方向。相比传统方式,大大增加了产品成功的可能性。如果市场需求不确定,或者你对该领域不熟悉,那么敏捷开发几乎是唯一可行的应对方式。

    如何进行每一次迭代

      虽然敏捷开发将软件开发分成多个迭代,但是也要求,每次迭代都是一个完整的软件开发周期,必须按照软件工程的方法论,进行正规的流程管理。

     &emssp;具体来说,每次迭代都必须依次完成以下五个步骤。

    • 需求分析(requirements analysis)
    • 设计(design)
    • 编码(coding)
    • 测试(testing)
    • 部署和评估(deployment / evaluation)
      每个迭代大约持续2~6周。

    敏捷开发的价值观

    《敏捷软件开发宣言》里面提到四个价值观。

    • 程序员的主观能动性,以及程序员之间的互动,优于既定流程和工具。
    • 软件能够运行,优于详尽的文档。
    • 跟客户的密切协作,优于合同和谈判。
    • 能够响应变化,优于遵循计划。

    十二条原则

    该宣言还提出十二条敏捷开发的原则。

    • 通过早期和持续交付有价值的软件,实现客户满意度。
    • 欢迎不断变化的需求,即使是在项目开发的后期。要善于利用需求变更,帮助客户获得竞争优势。
    • 不断交付可用的软件,周期通常是几周,越短越好。
    • 项目过程中,业务人员与开发人员必须在一起工作。
    • 项目必须围绕那些有内在动力的个人而建立,他们应该受到信任。
    • 面对面交谈是最好的沟通方式。
    • 可用性是衡量进度的主要指标。
    • 提倡可持续的开发,保持稳定的进展速度。
    • 不断关注技术是否优秀,设计是否良好。
    • 简单性至关重要,尽最大可能减少不必要的工作。
    • 最好的架构、要求和设计,来自团队内部自发的认识。
    • 团队要定期反思如何更有效,并相应地进行调整。
    展开全文
  • 敏捷开发流程总结

    万次阅读 多人点赞 2015-09-22 10:02:54
    Agile——敏捷开发,作为CMM神话崩溃后被引入的一套新的软件开发模式,这几年来被广泛引起关注,并被寄予厚望。敏捷开发在其他业界的应用是否理想不得而知,但以下总结了我所在公司的敏捷开发试验,希望可以达到...

    敏捷开发

    包括了XP(Extreme Programming:极限编程)的四个价值观:沟通简单反馈、勇气,此外,还扩展了第五个价值观:谦逊。
    敏捷开发是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,目标是提高开发效率和响应能力。除了原则和实践,模式也是很重要的,多研究模式及其应用可以使你更深层次的理解敏捷开发。
    敏捷开发宣言——
    个体和交互 胜过 过程和工具
    可以工作的软件 胜过 面面俱到的文档
    客户合作 胜过 合同谈判
    响应变化 胜过 遵循计划
    虽然右项也有价值,但是我们认为左项具有更大的价值。
    以上的宣言比较抽象,基于该理念,以下是ThoughtsWork咨询公司的推崇的n个敏捷开发实践:



    Iteration
    迭代开发。可以工作的软件胜过面面俱到的文档。因此,敏捷开发提倡将一个完整的软件版本划分为多个迭代,每个迭代实现不同的特性。重大的、优先级高的特性优先实现,风险高的特性优先实现。在项目的早期就将软件的原型开发出来,并基于这个原型在后续的迭代不断晚上。迭代开发的好处是:尽早编码,尽早暴露项目的技术风险。尽早使客户见到可运行的软件,并提出优化意见。可以分阶段提早向不同的客户交付可用的版本。


    IterationPlanningMeeting
    迭代计划会议。每个迭代启动时,召集整个开发团队,召开迭代计划会议,所有的团队成员畅所欲言,明确迭代的开发任务,解答疑惑。


    Story Card/Story Wall/Feature List
    在每个迭代中,架构师负责将所有的特性分解成多个Story Card。每个Story可以视为一个独立的特性。每个Story应该可以在最多1个星期内完成开发,交付提前测试(Pre-Test)。当一个迭代中的所有Story开发完毕以后,测试组再进行完整的测试。在整个测试过程中(pre-test,test),基于Daily build,测试组永远都是每天从配置库上取下最新编译的版本进行测试,开发人员也随时修改测试人员提交的问题单,并合入配置库。
    敏捷开发的一个特点是开放式办公,充分沟通,包括测试人员也和开发人员一起办公。基于Story Card的开发方式,团队会在开放式办公区域放置一块白板,上面粘贴着所有的Story Card,按当前的开发状态贴在4个区域中,分别是:未开发,开发中,预测试中,测试中。Story Card的开发人员和测试人员根据开发进度在Story Wall上移动Story Card,更新Story Card的状态。这种方式可以对项目开发进度有一个非常直观的了解。
    在开发人员开始开发一个Story时,ta需要找来对应的测试人员讲解Story功能,以便测试人员有一致的理解,同时开始自动化系统测试脚本的开发。


    Standup Meeting
    站立会议。每天早上,所有的团队成员围在Story Wall周围,开一个高效率的会议,通常不超过15分钟,汇报开发进展,提出问题,但不浪费所有人的时间立刻解决问题,而是会后个别沟通解决。


    Pair Programming
    结对编程是指两个开发人员结对编码。结对编程的好处是:经过两个人讨论后编写的代码比一个人独立完成会更加的完善,一些大的方向不至于出现偏差,一些细节也可以被充分考虑到。一个有经验的开发人员和一个新手结对编程,可以促进新手的成长,保证软件开发的质量。


    CI/Daily Build
    持续集成和每日构建能力是否足够强大是迭代开发是否成功的一个重要基础。基于每日构建。开发人员每天将编写/修改的代码及时的更新到配置库中,自动化编译程序每天至少一次自动从配置库上取下代码,执行自动化代码静态检查(如PCLint),单元测试,编译版本,安装,系统测试,动态检查(如Purify)。以上这些自动化任务执行完毕后,会输出报告,自动发送邮件给团队成员。如果其中存在着任何的问题,相关责任人应该及时的修改。
    可以看到,整个开发组频繁的更新代码,出现一些问题不可避免。通过测试部又在不停地基于最新的代码进行测试。新增的问题是否能够被及时发现并消灭掉,取决于自动化单元测试和系统测试能力是否足够强大,特别是自动化系统测试能力。如果自动化测试只能验证最简单的操作,则新合入代码的隐患将很难被发现,并遗留到项目后期,形成大的风险。而实际上,提升自动化测试的覆盖率是最困难的。


    Retrospect
    总结和反思。每个迭代结束以后,项目组成员召开总结会议,总结好的实践和教训,并落实到后续的开发中。


    ShowCase
    演示。每个Story开发完成以后,开发人员叫上测试人员,演示软件功能,以便测试人员充分理解软件功能。


    Refactoring
    重构。因为迭代开发模式在项目早期就开发出可运行的软件原型,一开始开发出来的代码和架构不可能是最优的、面面俱到的,因此在后续的Story开发中,需要对代码和架构进行持续的重构。迭代开发对架构师要求很高。因为架构师要将一个完整的版本拆分成多个迭代,每个跌倒由拆分成很多Story,从架构的角度看,这些Story必须在是有很强的继承性,是可以不断叠加的,不至于后续开发的Story完全推翻了早期开发的代码和架构,同时也不可避免的需要对代码进行不断完善,不断重构。


    TDD
    测试驱动开发。正如上面讲的,迭代开发的特点是频繁合入代码,频繁发布版本。测试驱动开发是保证合入代码正常运行且不会在后期被破坏的重要手段。这里的测试主要指单元测试。

    继续深了解可以查看: 

    敏捷开发实战问题

    展开全文
  • 敏捷开发流程

    2017-02-05 12:43:08
    之前做了几年开发组长,这里有一点敏捷开发心得和大家分享一下(以我们项目为例) 0、开工会 在大的版本开端,我们会召开相关开工会,QA做质量要求讲解,PL做计划、需求和里程碑等注意事项的讲解 1、需求阶段 ...

    之前做了几年开发组长,这里有一点敏捷开发心得和大家分享一下(以我们项目为例)

    0、开工会

    在大的版本开端,我们会召开相关开工会,QA做质量要求讲解,PL做计划、需求和里程碑等注意事项的讲解

     

    1、需求阶段

    整个迭代期间是以需求澄清为开始的,我一般按照以下步骤来做

    a、制定好当月的项目计划时间表,发出需求澄清邮件,定好会议室

    b、大致对接口人计划的需求过一遍,然后在会议室和接口人对需求逐个进行串讲与反串讲,做好会议纪要,梳理出大概的疑问点

    c、在接口人反馈疑问点解决方案后,我就召开所有开发和测试的串讲与反串讲活动,做好会议纪要和疑问点的记录,争取接口人的意见和方案,做好文档归档

     

    2、开发阶段

    a、开发开始写设计概要文档,同时测试责任人开始根据需求量做测试计划,测试用例编写

    b、开发设计文档评审,测试计划评审和测试用例的评审

    c、编码,PL需要让大家每天更新进度,做好风险评估

     

    3、测试阶段

    我们采用规范的提单和改单流程,改单必须要写清楚修改点,影响点方便测试回归;

     

    4、验收与评估,回顾

    项目的最后阶段举行本轮迭代的回顾会议,分析做的好的与做的不足的,制定跟进计划与责任人等

    展开全文
  • 移动互联网敏捷开发流程

    千次阅读 2016-07-13 11:43:58
    一周或者两周一个版本,由于ios的发版流程需要appstore审核,流程比较复杂,可安排android的发版时间比ios提前两三天,由android版本经过灰度用户验证后,再灰度ios   2. 输出需求列表 由产品经理,产品经理...


    1.      制定版本计划

    由技术leader,产品leader,项目经理,老板达成一致,根据各公司情况,制定每个版本的周期,

    一周或者两周一个版本,由于ios的发版流程需要appstore审核,流程比较复杂,可安排android的发版时间比ios提前两三天,由android版本经过灰度用户验证后,再灰度ios

     

    2.      输出需求列表

    由产品经理,产品经理leader,老板达成一致,输出当前版本的需求列表,并对每个需求标注优先级

     

    3.      需求评审会

    由项目经理或者产品经理发起需求评审会,技术团队和测试团队人员参加。产品经理在会议上讲述需求的详细功能点,并解答其他团队成员提出的问题

     

    4.      需求排期

    由技术leader、测试leader、设计leader组织团队成员对产品需求文档评估工作量,输出项目计划。

    测试团队输出测试用例

     

    5.      开发

    由技术经理和项目经理组织团队成员开发,监控项目进度。

     

    6.      功能测试

    技术团队先根据测试用例自测后再提交测试团队

     

    7.      集成测试

    开发人员把代码版本合到主干发布分支,并编译出版本。

    在集成测试阶段,后台服务要发布到线上环境。

    测试人员用客户端版本联线上后台服务测试。

     

    8.      灰度上线

    Android版本先灰度,通过后台控制部分用户客户端的自动更新功能

    Ios版本发越狱市场,例如pp助手

     

    9.      全量上线

    Android版本提示所有用户客户端安装,并发布到渠道市场

    Ios版本提交appstore审核

    10.  版本总结会

    由项目经理组织所有团队成员对当前版本的项目情况做总结,提出问题,制定措施避免下版本有同样的问题。


    展开全文
  • 敏捷计划典型的敏捷开发将整体工作分为一系列的发布过程,每个发布过程都是一个迭代
  • Scrum敏捷开发流程

    千次阅读 2017-05-01 14:17:41
    Scrum敏捷开发流程的要点
  • 敏捷开发流程介绍

    2018-08-27 15:33:29
    今天给大家分享一下,修真院官网Java任务10,深度思考中的知识点————什么是敏捷开发流程? 1.背景介绍 为什么需要敏捷开发? 在很久以前,软件项目的开发都是以年来计算的,这代表什么意思呢 ?需求设计了...
  • 设计敏捷开发流程

    2017-05-15 15:01:08
    如何在一个新的软件企业设计敏捷开发流程? 首先我认为敏捷是有刚需的,持续集成+自动测试是刚需。必须先具备这样的基础建设才能继续往下走。 如何设计敏捷开发流程,看看敏捷的要数,特别是5个活动: 首先定义...
  • SCRUM敏捷开发流程

    千次阅读 2014-08-30 14:38:27
    1,目的 本流程是公司过程体系文件的一部分,用于描述软件系统敏捷开发过程,包括过程中涉及的角色和职责、主要的活动以及输出的主要工作产品
  • 什么是敏捷开发流程

    万次阅读 2019-05-11 19:34:29
    【什么是敏捷开发流程 】 这个词猛一听起来感觉很高大上,其实现在已经是主流的团队开发流程 了。 一. 先说一下官方的定义: 敏捷不是指某一种具体的方法论、过程或框架,而是一组价值观和原则。符合敏捷价值观....
  • 敏捷开发流程学习笔记

    千次阅读 2018-04-03 21:50:24
    什么是敏捷开发敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。我理解它仅仅是一种开发方法,更是为了应对激烈竞争和快速需求变化的一种价值观和商业模式。敏捷提倡以人为核心,敏捷...
  • 我的敏捷开发流程

    千次阅读 2017-03-31 19:25:18
    敏捷开发流程: 按尺度大小新建问题类型:epic->story->sub-tast->bug ===========================================part0:需求收集============================================================= ====...
  • 时序图(敏捷开发流程的所有环节)

    千次阅读 2017-11-30 09:49:09
  • Scrum敏捷开发流程主要包扩三个角色、四个会议和个三物件。 三个角色 Scrum团队中包括三个角色,他们分别是产品负责人、开发团队和 项目的直接管理者(Scrum Master)。 Scrum 团队是自组织、跨职能的完整...
  • 什么是敏捷开发流程

    千次阅读 2018-08-22 08:15:51
    今天给大家分享一下,java项目中需要使用的敏捷开发流程   1.背景介绍   在很久以前,软件项目的开发都是以年来计算的,这代表什么意思呢 ?需求设计了半年多,方案设计做了半年多,开发了三年多, 测试了半年...
  • 速度是企业竞争致胜的关键因素,软体... 这正是Agile Process (敏捷的软体开发流程)于近年来兴起的主要原因,本文将介绍数种广为接受的软体开发流程,及其在运用上的建议。 1 Agile Process -敏捷开发流程 几乎所

空空如也

1 2 3 4 5 ... 20
收藏数 29,347
精华内容 11,738
关键字:

敏捷开发流程