敏捷开发 Bertha 。 2022-07-13 03:41 201阅读 0赞 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。 敏捷过程 为了使软件开发团队具有高效工作和快速响应变化的能力,提出敏捷开发宣言,由4个简单的价值观声明组成。 1. 个体和交互胜过过程和工具 2. 可以工作的软件胜过面面具到的文档 3. 客户合作胜过合同谈判 4. 响应变化胜过遵循计划 ## 价值观 ## [敏捷建模][Link 1](Agile Modeling,AM)的价值观包括了XP(Extreme Programming:极限编程)的四个价值观: [沟通][Link 2]、 [简单][Link 3]、 [反馈][Link 4]、勇气,此外,还扩展了第五个价值观:谦逊。 敏捷开发是针对传统的 [瀑布开发模式][Link 5]的弊端而产生的一种新的开发模式,目标是提高开发效率和响应能力。除了原则和实践,模式也是很重要的,多研究模式及其应用可以使你更深层次的理解敏捷开发。 ### 沟通 ### 建模不但能够促进你团队内部的开发人员之间沟通、还能够促进你的团队和你的project stakeholder之间的沟通。 ### 简单 ### 画一两张图表来代替几十甚至几百行的代码,通过这种方法,建模成为简化软件和软件(开发)过程的关键。这一点对开发人员而言非常重要-它简单,容易发现出新的想法,随着你(对软件)的理解的加深,也能够很容易的改进。 ### 反馈 ### Kent Beck在Extreme Programming Explained中有句话讲得非常好:“过度自信是编程的职业病,反馈则是其处方。”通过图表来交流你的想法,你可以快速获得反馈,并能够按照建议行事。 ### 谦逊 ### 最优秀的开发人员都拥有谦逊的美德,他们总能认识到自己并不是无所不知的。事实上,无论是开发人员还是客户,甚至所有的 project stakeholder,都有他们自己的专业领域,都能够为项目做出贡献。一个有效的做法是假设参与项目的每一个人都有相同的价值,都应该被尊重。 极限编程 极限编程是敏捷过程中最富盛名的一个,其名称中‘极限’二字的含义是指把开发实践用到极致。目前极限编程已经成为一个典型的开发方法,广泛应用于需求模糊且经常改变的地方。 极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。 ![Center][] 极限编程的有效实践 1. 客户作为开发团队的成员 2. 使用用户素材 3. 短交付周期 4. 验收测试 5. 结对编程 6. 测试驱动开发 7. 集体所有 8. 持续集成 9. 可持续的开发速度 10. 开放的工作空间 11. 及时的调整计划 12. 简单的设计 13. 重构 14. 使用隐喻(全局视图) 极限编程的整体开发过程 极限编程的迭代开发过程 敏捷开发之Scrum Scrum流程图 ![ScrumModel.jpg][] 下面,我们开始讲具体实施流程,但是在讲之前,我还要对一个英文单词进行讲解。 什么是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的产品需求中; 下面是运用Scrum开发流程中的一些场景图: ![2010-10-17_202447.png][] 上图是一个 Product Backlog 的示例。 ![2010-10-17_202749.png][] 上图就是每日的站立会议了,参会人员可以随意姿势站立,任务看板要保证让每个人看到,当每个人发言完后,要走到任务版前更新自己的燃尽图。 ![2010-10-17_202812.png][] 任务看版包含 未完成、正在做、已完成 的工作状态,假设你今天把一个未完成的工作已经完成,那么你要把小卡片从未完成区域贴到已完成区域。 ![2010-10-17_202832.png][] 每个人的工作进度和完成情况都是公开的,如果有一个人的工作任务在某一个位置放了好几天,大家都能发现他的工作进度出现了什么问题(成员人数最好是5~7个,这样每人可以使用一种专用颜色的标签纸,一眼就可以从任务版看出谁的工作进度快,谁的工作进度慢) ![2010-10-17_202709.png][] 上图可不是扑克牌,它是计划纸牌,它的作用是防止项目在开发过程中,被某些人所领导。 怎么用的呢?比如A程序员开发一个功能,需要5个小时,B程序员认为只需要半小时,那他们各自取相应的牌,藏在手中,最后摊牌,如果时间差距很大,那么A和B就可以讨论A为什么要5个小时... 后记:瀑布模型[传统的[瀑布开发模式][Link 5]] ![Center 1][] 系统开发方式众多,项目管理者只需决定何时采取何种开发模式即可。瀑布开发模式就是一种最常用的开发模型,因为这种开发方式不但简单直观而且大大便利了项目管理的运作。 瀑布开发模式可以令项目管理人员非常方便地把整个项目置于自己的掌握之下。瀑布开发模式限制了开发期间团队间的交互,评估起来相当方便,由于开发计划稳定而且几乎不会发生经常性的变化从而有效地[简化][Link 6]了项目开发的管理工作。 瀑布开发也有一些缺点,但是,在你初履新职,刚刚接手管理一个新的团队,同时获得了一种支持 [瀑布][Link 7]开发模式的解决方案的情况下,这种开发模式可以令你很快进入角色把工作开展起来,从而为将来采用更高级的开发方式做好了 [准备][Link 8]。 瀑布开发过程在政府项目中特别受到欢迎,在这样的软件开发项目中,其规划阶段超出了大多数企业部署阶段的时间和力度。采用这种方式的其他用户包括那些理解比较全面和深入的软件项目,相关的解决方案对团队而言非常熟悉,或者只需要小小的改动。 [Link 1]: http://baike.baidu.com/view/1412845.htm [Link 2]: http://baike.baidu.com/view/54445.htm [Link 3]: http://baike.baidu.com/view/66543.htm [Link 4]: http://baike.baidu.com/view/80120.htm [Link 5]: http://baike.baidu.com/view/4169795.htm [Center]: /images/20220713/da6042e3bc6a45cfba52ebc156d93c44.png [ScrumModel.jpg]: /images/20220713/fcc6ae0ce5604ea9bc46e4abac1a27f3.png [2010-10-17_202447.png]: /images/20220713/c4acfa1a1e7b4bb3b2e4d591930602f5.png [2010-10-17_202749.png]: /images/20220713/b03dacc71f49424c9346b0bea681eb20.png [2010-10-17_202812.png]: /images/20220713/e1501b3d11e94b92986ab29e9b622813.png [2010-10-17_202832.png]: /images/20220713/a75d252db0294ac7a0eeef7567c9cb3f.png [2010-10-17_202709.png]: /images/20220713/f1a8604200b9427da64562bcaa2e91b9.png [Center 1]: /images/20220713/dcf38912e8fb4bd1b14698d9f822bb84.png [Link 6]: http://baike.baidu.com/view/186578.htm [Link 7]: http://baike.baidu.com/view/29736.htm [Link 8]: http://baike.baidu.com/view/405917.htm
相关 敏捷开发 为什么敏捷可以拥抱变化? ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNz 短命女/ 2022年12月11日 08:00/ 0 赞/ 26 阅读
相关 敏捷开发 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行 Bertha 。/ 2022年07月13日 03:41/ 0 赞/ 202 阅读
相关 敏捷开发 > [敏捷软件开发宣言][Link 1] ![这里写图片描述][SouthEast] -------------------- > 知乎问题[:敏捷开发需要写哪些文档?] ゝ一纸荒年。/ 2022年06月16日 11:06/ 0 赞/ 330 阅读
相关 敏捷开发 背景 > 过去我们用合同死死地固定住需求,然后乙方千方百计的只按照合同办事,没有发挥更大的创造力,而甲方在固定的成本面前,不想多花一分钱,却不停的要求新功能。那么甲乙双方 太过爱你忘了你带给我的痛/ 2022年05月30日 08:11/ 0 赞/ 332 阅读
相关 敏捷开发 以下文章转载自知乎,暗灭-京华九月秋近寒,浮沉半生影长单. ![1240][] [暗灭][Link 1] 京华九月秋近寒,浮沉半生影长单 366 人赞同了该回答 旧城等待,/ 2022年05月27日 04:24/ 0 赞/ 287 阅读
相关 敏捷开发 Agile Process (敏捷的开发流程) 是一种软件开发流程的泛称,几项共通的特性 : 客户与开发人员形成密切合作的团队,因为客户无法于初期定义完整的规格,而开发 电玩女神/ 2022年05月08日 01:22/ 0 赞/ 326 阅读
相关 敏捷开发 Web 敏捷开发 VítorEstêvãoSilvaSouza,EspíritoSantoAv联邦大学计算机科学系。 Fernando Ferrari,S / N Goi 水深无声/ 2022年04月10日 07:19/ 0 赞/ 392 阅读
相关 敏捷开发 在讲敏捷开发之前,我们先来看一下,开发模式都有哪些。开发模式包括:瀑布式开发(也叫线性开发模式)、快速原型开发、螺旋开发、迭代式开发(也叫迭代增量式开发)以及敏捷开发。那接下来 不念不忘少年蓝@/ 2022年01月08日 01:07/ 0 赞/ 370 阅读
相关 敏捷开发 下面放一些link吧,自己有见解的会写出来。 [https://blog.csdn.net/iteye\_2638/article/details/82213904][htt 快来打我*/ 2021年12月21日 04:45/ 0 赞/ 421 阅读
还没有评论,来说两句吧...