敏捷开发课程_fdd敏捷课程开发 - CSDN
  • 敏捷开发入门教程

    2019-03-09 21:55:30
    敏捷开发入门教程 敏捷开发(agile development)是非常流行的软件开发方法。据统计,2018年90%的软件开发采用敏捷开发。 但是,到底什么是敏捷开发,能说清的人却不多。本文尝试用简洁易懂的语言,解释敏捷开发。...

    原文转自阮一峰老师的网络日志

    http://www.ruanyifeng.com/blog/2019/03/agile-development.html

    敏捷开发入门教程

    敏捷开发(agile development)是非常流行的软件开发方法。据统计,2018年90%的软件开发采用敏捷开发。

    但是,到底什么是敏捷开发,能说清的人却不多。本文尝试用简洁易懂的语言,解释敏捷开发。

     

    一、迭代开发

     

    敏捷开发的核心是迭代开发(iterative development)。敏捷一定是采用迭代开发的方式。

    那么什么是“迭代开发”呢?迭代的英文是 iterative,直译为“重复”,迭代开发其实就是“重复开发”。

    对于大型软件项目,传统的开发方式是采用一个大周期(比如一年)进行开发,整个过程就是一次“大开发”;迭代开发的方式则不一样,它将开发过程拆分成多个小周期,即一次“大开发”变成多次“小开发”,每次小开发都是同样的流程,所以看上去就好像重复在做同样的步骤。

     

    举例来说,SpaceX 公司想造一个大推力火箭,将人类送到火星。但是,它不是一开始就造大火箭,而是先造一个最简陋的小火箭 Falcon 1。结果,第一次发射就爆炸了,直到第四次发射,才成功进入轨道。然后,开发了中型火箭 Falcon 9,九年中发射了70次。最后,才开发 Falcon 重型火箭。如果 SpaceX 不采用迭代开发,它可能直到现在还无法上天。

    迭代开发将一个大任务,分解成多个连续的阶段,本质就是逐步改进。开发者先快速发布一个有效但不完美的最简版本,然后不断迭代。每一次迭代都包含规划、设计、编码、测试、评估五个步骤,不断改进产品,添加新功能。通过频繁的发布,以及跟踪对前一次迭代的反馈,最终接近较完善的产品形态。

     

    二、增量开发

     

    迭代开发只是要求将开发分成多个迭代,并没有回答一个重要的问题:怎么划分迭代,哪个任务在这个迭代,哪个任务在下个迭代?这时,一般采用“增量开发”(incremental development)划分迭代。

    所谓“增量开发”,指的是软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。

    举例来说,房产公司开发一个10栋楼的小区。如果采用增量开发的模式,该公司第一个迭代就是交付一号楼,第二个迭代交付二号楼……每个迭代都是完成一栋完整的楼。而不是第一个迭代挖好10栋楼的地基,第二个迭代建好每栋楼的骨架,第三个迭代架设屋顶……

    增量开发加上迭代开发,才算真正的敏捷开发。

     

    三、敏捷开发的好处

     

    3.1 早期交付

    敏捷开发的第一个好处,就是早期交付,从而大大降低成本。

    还是以上一节的房产公司为例,如果按照传统的“瀑布开发模式”,先挖10栋楼的地基、再盖骨架、然后架设屋顶,每个阶段都等到前一个阶段完成后开始,可能需要两年才能一次性交付10栋楼。也就是说,如果不考虑预售,该项目必须等到两年后才能回款。

    敏捷开发是六个月后交付一号楼,后面每两个月交付一栋楼。因此,半年就能回款10%,后面每个月都会有现金流,资金压力就大大减轻了。

    3.2 降低风险

    敏捷开发的第二个好处是,及时了解市场需求,降低产品不适用的风险。

    请想一想,哪一种情况损失比较小:10栋楼都造好以后,才发现卖不出去,还是造好第一栋楼,就发现卖不出去,从而改进或停建后面9栋楼?

    对于软件项目来说,先有一个原型产品,了解市场的接受程度,往往是项目成功的关键。有一本书叫做《梦断代码》,副标题就是“20+个程序员,三年时间,4732个bug,100+万美元,最后失败的故事”,这就是没有采用敏捷开发的结果。相反的,Instagram 最初是一个地理位置打卡 App,后来发现用户不怎么在乎地理位置,更喜欢上传照片,就改做照片上传软件,结果成了独角兽。

    由于敏捷开发可以不断试错,找出对业务最重要的功能,然后通过迭代,调整软件方向。相比传统方式,大大增加了产品成功的可能性。如果市场需求不确定,或者你对该领域不熟悉,那么敏捷开发几乎是唯一可行的应对方式。

     

    四、如何进行每一次迭代

     

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

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

    1. 需求分析(requirements analysis)

    2. 设计(design)

    3. 编码(coding)

    4. 测试(testing)

    5. 部署和评估(deployment/ evaluation)

    每个迭代大约持续2~6周。

     

    五、敏捷开发的价值观

     

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

    • 程序员的主观能动性,以及程序员之间的互动,优于既定流程和工具。

    • 软件能够运行,优于详尽的文档。

    • 跟客户的密切协作,优于合同和谈判。

    • 能够响应变化,优于遵循计划。

     

    六、十二条原则

     

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

    1. 通过早期和持续交付有价值的软件,实现客户满意度。

    2. 欢迎不断变化的需求,即使是在项目开发的后期。要善于利用需求变更,帮助客户获得竞争优势。

    3. 不断交付可用的软件,周期通常是几周,越短越好。

    4. 项目过程中,业务人员与开发人员必须在一起工作。

    5. 项目必须围绕那些有内在动力的个人而建立,他们应该受到信任。

    6. 面对面交谈是最好的沟通方式。

    7. 可用性是衡量进度的主要指标。

    8. 提倡可持续的开发,保持稳定的进展速度。

    9. 不断关注技术是否优秀,设计是否良好。

    10. 简单性至关重要,尽最大可能减少不必要的工作。

    11. 最好的架构、要求和设计,来自团队内部自发的认识。

    12. 团队要定期反思如何更有效,并相应地进行调整。

     

    展开全文
  • 敏捷开发实践课程

    2019-04-16 18:20:53
    2、认识敏捷开发 3、Scrum敏捷开发方式 4、Scrum中的335 5、Scrum中的5个事件 课程二、敏捷项目开发实践 1、项目研发流程规范 2、开发流程细节 3、编程中的注意事项 4、如何进行接口开发 5、注意具体业务...
    展开全文
  • SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践...
  • SCRUM敏捷开发教程

    2015-11-25 12:18:19
    大家好,我是煎饼哥,本期向大家介绍一个关于敏捷开发的方法,叫做scrum,相信资深的产品经理都接触过类似的项目管理方法。  scrum敏捷开发,是一个美国统计学教授记录了多年工作经验,总结出来的一套简单易懂的...



    大家好,我是煎饼哥,本期向大家介绍一个关于敏捷开发的方法,叫做scrum,相信资深的产品经理都接触过类似的项目管理方法。

      scrum敏捷开发,是一个美国统计学教授记录了多年工作经验,总结出来的一套简单易懂的开发方法,我接触过不少产品经理,惊奇发现不少产品经理的确是产品把控的非常好,输出的BRD,MRD,PRD等都非常专业,但是却没一套很好的项目管理方法。

      干货分享第一期:10分钟教会你SCRUM敏捷开发 干货第一期微信号:terrydengbin

      scrum 是一种迭代增量软件开发方法,通过该方法,你可以量化工作量,并且可以把每个任务量化成具体时间,得出最后一个项目的总时间(一般估算到小时)。能让管理者看清楚项目进度,把握项目进程的各种问题。scrum简单易用,但是简单的东西要掌握就容易犯错,大家可以在尝试中掌握这种项目管理方法,以下是我做内部培训个人写的scrum ppt教程,抛砖引玉,希望能普及该方法。

      首先欢迎大家关注本公众号,持续会输出原创内容,谢谢。

      (点击图片可以查看大图)

      

      scrum是有效管理未知因素和不断变化的产品需求,结束混乱,着重于如何驱动项目实现最高的投资回报。

      scrum材料准备:一个白板,n张便条纸,一张a4纸打印燃尽表(手绘也可以),一只笔。

      

      在scrum里面,有3种角色,分别是product owner(产品负责人)scrum master(团队负责人)scrum team (开发团队)

      Product owner: 是需求方,提出需求,能对功能流程,业务流程拍板的人。

      Scrum master :团队负责人,一般是product manager,负责解决团队问题,领导项目。

      Scrum team:项目执行人员,开发项目一般包括,前端后端开发,ui等。

      

      Scrum 步骤一:

      头脑风暴,如果product owner 对产品需求非常清楚,就可以省略这个步骤,开发一个原则“先紧后松”, 必须先把需求了解清楚,这里product owner可以召集技术团队/用户群体对其需求进行公开征求意见,最后输出一个产品建议表。

      

      Scrum 步骤二:

      product owner 对产品建议表进行筛选,做减法提炼最核心的需求。在确定了需求后,这个时候由scrum master 进行输出prd (product requirement document) , 这里就和传统的瀑布流一样了,该有的文档都必须有了,必须由scrum master 和product owner 确定好需求,包括业务逻辑,功能流程等。

      前面基本是最耗时间的,product owner和开发团队一来一回好多次。

      

      Scrum 步骤三:

      神马原型,ui设计都不是在步骤二完成的,刚才只是开始,步骤三后面才是scrum的精华部分,把任务量化,包括,原型,logo设计,ui设计,前端开发等。

      尽量把每个工作分解到最小任务量(wbs),最小任务量标准为工作小时不能超过16小时。准备估算总体项目时间吧!

      把每个任务都贴在白板上面,白板上分三部分

      (1)to do待完成

      (2)in progress 进展中

      (3)done 完成。

      

      如何估算时间:玩poker game(扑克游戏)这个方法估算出来的工作时间比较准,参与扑克游戏的最好有专家和开发涉及到的人员(杜绝阿猫阿狗,酱油男等参与)

      扑克游戏玩法:

      (1)每个人发一些便条纸, 针对具体任务,每个人根据经验写出时间(不公开写)

      (2)同时展示该项目完成时间,肯定存在最大最小的工作时间,最大最小两个人请你们辩论吧,为什么要那么长时间完成,或者那么短时间完成,其他人可以提出疑问,在一定程度上达成认可。

      (3)进行再次私下对该任务写时间,再公示,再辩论,这样下去,大家写出来的该任务的时间越来越接近了。

      (4)最后达成一个共同认可的时间,这个就是该任务的工作时间!

      注意事项,如果参与的人不懂该任务流程,参与投票就会影响准确率。

      

      Scrum 步骤四:

      好吧,经过大家纠结讨论了好久,终于把任务量化到具体多少时间完成了!

      恭喜!接下来,把n个任务按照开发的重要度,组合成n个sprint( 冲刺),每次执行一个sprint.

      

      每个sprint 都是独立的,一般先做主要功能,再到次要功能,再到小功能,最后的sprint 一般是修复bugs。

      

      因为任务都被量化了,每天工作了多少小时,完成了多少任务量,通过每天例会scrum master非常清楚,并且在time burn down chart (时间燃尽表)进行表示。我们就可以直观看到任务的进度了,而且是具体到多少小时!

      

      在burn down chart 里面,不管任务是否按时完成都必须记录。

      

      时间燃尽表是scrum的精华,通过该表格可以可视化任务的时间进度,大家可以看下图,day1 是整个任务的总共时间,每天按照任务完成度更新剩余时间,或者增加时间(例如发现一个技术难点,团队成员请假等要增加开发时间)

      

      在白板上面当前sprint 每天肯定都是在变的,scrum master 赶快把每天更新工作量吧!更新后算出剩余时间,就画在burn down chart上。

      

      关于bugs... ...

      每个sprint 都必须测试,尽量大家一起测试吧,如果太多bug就开一个sprint来修复bugs.

      

      每天要做的是,要开standing meeting ,因为大家的时间都是非常紧张的,一般是站着开的,一般10分钟左右.

      

      会议就问开发团队每个人三个问题:

      (1)你今天做了什么

      (2)明天打算做什么

      (3)有没遇到什么困难?

      scrum master 要解决开发团队的困难,让项目快速进展下去。

      每周一次周会,product owner最好在场。 每个月一次月会,product owner最好在场,指出产品开发是否在product owner期待范围内。

      

      好吧, 如此重复下去,直到开发完成!

      Scrum 步骤五:

      最后一个步骤,评估。

      product owner 和其团队/用户会对产品进行评估,可能还会有各种揪心的事,但是product owner是给钱的主,他要改还是要改的,建立一个bugs sprint吧,把产品做到product owner最想要为止!

      

      写在最后的话

      SCRUM也有缺点一直被人诟病,就是对团队要求高,团队成员相互信任度高,团队的人有能力,而且不会相互推搪责任,归根到底对应新团队使用该方法开始是各种问题的!请多多磨合吧!

      

      作者微信:terrydengbin

      最后直接送上干货ppt, keynote, pdf! 编写该教程我是使用了keynote 里面文字少,基本都是动画哦!!有mac的童鞋有福啦,我也转成了ppt格式,动画肯定会损失的,还有pdf可以下载。

      大家关注“今日发现”微信公众号,输入“SCRUM"即可获得下载地址!







    展开全文
  • 敏捷开发~入门

    2019-01-15 21:03:34
    敏捷开发,贵在敏捷,如何敏捷?我们需要一系列成熟的工具去帮助我们敏捷。 这篇文档不写技术,就是纯粹地说工具,介绍我们实施scrum过程中,起到关键作用的工具。 1、Jira或物理看板 Jira配合JIRA Agile插件...

    做敏捷开发,贵在敏捷,如何敏捷?我们需要一系列成熟的工具去帮助我们敏捷。

    这篇文档不写技术,就是纯粹地说工具,介绍我们实施scrum过程中,起到关键作用的工具。


    1、Jira或物理看板

    Jira配合JIRA Agile插件,即可实施敏捷开发,核心就是提供了一个电子看板,再配合上可自定义的工作流

    如果不喜欢对着冷冰冰的电脑,我们完全可以采用最原始的方式,准备一块白板,相信互动和交流都变得“生动”和“开放”起来。

    2、confluence
    进行敏捷开发怎么能少了Confluence,它一个专业的wiki程序。它是一个知识管理的工具,通过它可以实现团队成员之间的协作和知识共享。

    想想维基百科,你就知道confluence的便利之处。

    3、jenkins

    持续集成倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。

    没错,jenkins就是帮助我们完成持续构建和集成的。

    4、maven和nexus
    Maven是一个采用纯Java编写的开 源项目管理工具。Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编 译,构建,测试,发布,报告等等。目前Apache下绝大多数项目都已经采用Maven进行管理。而Maven本身还支持多种插件,可以方便更灵活的控制 项目。

    所以,怎么能少了maven呢!既然maven用上了,nexus还会远吗?

    上网copy一段介绍吧。
    Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus就可以满足这样的需要。此外,他还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。

    5、checkstyle

    不要总是在你的员工面前一遍又一遍地喊:要遵循代码规范!直接使用checkstyle检查一下,然后利用eclipse自动format就搞定了。
    如果连手动检查都懒得做,那就交给jenkins吧。


    6、findbug
       
    静态分析工具承诺无需开发人员费劲就能找出代码中已有的缺陷。当然,如果有多年的编写经验,就会知道这些承诺并不是一定能兑现。它会发现一些伪问题,但这并不能掩盖它的贡献。FindBugs 检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。

    不需要手动做,交给jenkins吧


    7、javamelody

    (CAT(Central Application Tracking)美团点评基础架构、kibana )

     

    JavaMelody能够在QA和实际运行生产环境监测Java或Java EE应用程序服务器。并以图表的形式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http请求、sql请求、jsp页面与业务接口方法(EJB3、Spring、Guice)的执行数量,平均执行时间,错误百分比等。图表可以按天,周,月,年或自定义时间段查看。 

    看了上面简介,你就知道我为什么推荐你使用它了吧。

    好东西,还有很多,慢慢来,站在巨人的肩膀上,这句话可不是白说的。

     

     

     

    参考文档:

    https://blog.csdn.net/shan9liang/article/details/23786191

    展开全文
  • 敏捷开发学习心得

    2014-02-15 22:03:03
    过年放假这几天读了一些敏捷开发方面的书籍,基于自己对敏捷开发的理解总结出以下几点。本文内容还会进一步整理,暂时先贴出来,权当作是一份备忘吧。也希望对阅读过本文章的挨踢人有些许启发,如果能留言进行进一步...
  • 敏捷开发初学体会

    2016-07-25 21:24:00
    刚接触敏捷开发一词时,难以理解它。总觉得它是一种新的项目管理方式,以为它有一套解救我们程序猿的完整方法。所以看书时越看越迷惑,总觉得每本书都没说到点子上,只说一些思路和概念。 这周参加了公司的敏捷培训...
  • 无论是“需求”,还是“BUG”,或是“任务”,都是“事务”的一种,所以Jira可以胜任非常多的角色:需求管理、缺陷跟踪、任务管理等等……因为Jira提供了专门的Scrum视图和Kanban视图,所以特别适合敏捷开发团队使用...
  • 1、安装nodejs: yum install -y nodejs
  • 无论你是Scrum大师或者是刚刚尝试敏捷开发的新手,JIRA Agile都能够帮助你在整个发布过程中管理待办事项(backlog)、计划冲刺(sprint)并且监测项目进度。 Backlog 任务 通过快速创建用户故事来建立一个产品Backlog。...
  • 敏捷开发知识体系

    2017-03-28 08:27:22
    敏捷开发知识体系整体框架 敏捷开发工程实践 项目管理 迭代开发风险价值生命周期多级项目规划完整团队每日站立会议任务板燃尽图 需求管理 需求订单业务流程草图用例驱动开发用户故事 架构 演进...
  • 敏捷开发实践 Agile Coach | CSM | CSP | PMP |...
  • hursing所在的公司推行敏捷开发有两年多了,其中最让人直接感受到的就是scrum晨会。从生搬硬套到过程创新,令大家由抵触变成积极响应,这个过程真的很花费心思。 09年12月,hursing开始在自己的团队推行晨会。当时...
  • Scrum开发的步骤及准备Scrum敏捷开发的关键字就是增量、迭代,他更重视项目团队之间的现场沟通,不向传统瀑布式开发那样需要万事具备,才开始开发,Scrum在大方向和小...
  • 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是...敏捷开发(Agile Development
  • 通常,项目愿景是通过执行项目愿景会议来确定的,该会议涉及最终用户、产品负责人和敏捷开发管理员。该会议有助于确立项目愿景声明中的业务环境、业务需求和用户期望的开发。 现在,我们将通过以下步骤来确立敏捷...
  • AaronYang 敏捷开发 自己自学 原创分享教程 http://AaronYang.cnblogs.com 文章处理类型:(已发布,待发布,草稿,计划中,完成但以加密) 序号 文章标题 文章状态 文章处理类型 发布日期 1 ...
1 2 3 4 5 ... 20
收藏数 21,062
精华内容 8,424
关键字:

敏捷开发课程