电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

敏捷开发的宣言和原则及分析

8页
  • 卖家[上传人]:小**
  • 文档编号:56379739
  • 上传时间:2018-10-11
  • 文档格式:DOCX
  • 文档大小:22.75KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、敏捷开发的宣言和原则敏捷开发的宣言和原则宣言:宣言: 个体和交互 胜过 过程和工具可以工作的软件 胜过 面面俱到的文档客户合作 胜过 合同谈判响应变化 胜过 遵循计划原则:原则:1我们最优先做的是通过尽早、持续的交付有价值的软件来使客户满意。2即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。3经常性地交付可以工作的软件,交付的间隔可以从几周到几个月,交付的时间间隔越短越好。4在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。5围绕被激励起来的个人来构建项目。给他们提供所需要的环境和支持,并且相信他们能够完成工作。6在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈。7工作的软件是首要的进度度量标准。8敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。9不断地关注优秀的技能和好的设计会增强敏捷能力。10简单-使未完成的工作最大化的艺术-是根本的。11最好的构架、需求和设计出自于自组织的团队。12每隔一定时间,团队会在如何才能更有效地工作方面反省,然后相应地对自己的行为进行调整。(一)敏捷开发思想

      2、之简单最好(一)敏捷开发思想之简单最好极限编程中有一条著名的懒汉原则,称之为 KISS 原则,KISS 是 Keep it simple and stupid 的缩写。简略地说,就是设计尽量保证简单设计尽量保证简单。极限极限编程坚持只为今天的需求设计以及编码编程坚持只为今天的需求设计以及编码,而不用考虑明天。这颇有一些“做一天和尚撞一天钟”的意味。这个原则带来一个问题,那就是我们还需要设计吗?我们强调设计,其目的就在于设计出合理、优雅的结构,以提供具有良好复用性与可扩展性的系统,这是一种未雨绸缪,为未来考虑。而现在,我们若要遵循 KISS 原则,就是不再考虑明天的需求。显然,这两者的观点是相悖的。于是,矛盾出现:一方面我们需要保持设计简单,不做无谓的功能预测;另一方面,我们又需要拥抱变化,在尽可能少的改变结构与代码的情况之下,满足未来的需求。如何解决这个矛盾。让我们先看看提出简单原则的初衷。在在敏捷开发敏捷开发思想之拥抱变化思想之拥抱变化一篇中,我提到需求的变化是不可避免的一篇中,我提到需求的变化是不可避免的。即使是最优秀的需求分析师和架构设计师都不可能在项目之初穷尽所有客户要求的功能

      3、,作出最完美的分析与设计,即做到“增之一分则太多,减之一分则太少” 。我们需要把握分析和设计的“度” 。但事实却是,我们总喜欢越俎代庖,利我们总喜欢越俎代庖,利用自己的经验帮助客户提出需求,而事后证明这些需求往往是多余的用自己的经验帮助客户提出需求,而事后证明这些需求往往是多余的。我们总是在重复做着重复做着“吃力不讨好吃力不讨好”的事情的事情,与其如此,还不如在事先偷懒取巧与其如此,还不如在事先偷懒取巧。因为需求的变化总是不可控的,根据因为需求的变化总是不可控的,根据“利益趋避原则利益趋避原则” ,自然应选择对自己,自然应选择对自己更有利的一个趋向更有利的一个趋向。但这种简单并不是“简陋” ,即使我们不需要考虑明天的需求,一些好的重用原则与可扩展原则仍然需要遵循。例如,我们应尽量保证对象是高内聚、低耦合的;我们应遵循“面向接口编程”原则。一言以蔽之,我们需要做到: 1、减少依赖; 2、合理抽象; 3、功能最简。简单设计还需要重构来保证设计的质量。我们之所以敢于奢谈简单设计还需要重构来保证设计的质量。我们之所以敢于奢谈“简单简单” ,正是因为正是因为重构重构的保障的保障。即使设计过于粗陋

      4、,合理利用重构也能够亡羊补牢即使设计过于粗陋,合理利用重构也能够亡羊补牢。在重构过程中,我们仍然需要遵循简单原则,仅为当前的需求对系统结构进行重构。例如,我们在最初的需求分析中,只有一个功能要求发送电子邮件。那么,我们可以编写一个方法来封装发送电子邮件的实现,这个方法甚至可以放在业务对象的私有方法中。随着需求的逐步演进,新增的几个功能同样需要发送电子邮件,此时就有必要利用重构技术,将原来发送电子邮件的方法独立到单独的类中。但是,基于简单原则,我们没有必要完善所有功能,例如增加发送 Meet Request 的功能。因为目前的需求并不需要。“简单简单”并不只限于设计。在敏捷开发过程中,我们还需要保证项目计并不只限于设计。在敏捷开发过程中,我们还需要保证项目计划的简单,以及文档的简单,乃至于过程的简单。项目计划的简单可以由小划的简单,以及文档的简单,乃至于过程的简单。项目计划的简单可以由小步行进的迭代周期来保证,通过对项目阶段的分解,简化项目计划步行进的迭代周期来保证,通过对项目阶段的分解,简化项目计划。至于文档的简单,我们完全可以抛弃复杂标准的文档模板,转而书写仅仅是自己需我们完全可以抛

      5、弃复杂标准的文档模板,转而书写仅仅是自己需要关注的内容要关注的内容。至少,项目内部的文档完全可以言之有物,而不需项目内部的文档完全可以言之有物,而不需要注重形要注重形式式。我们还可以通过对项目过程进行裁剪,来保障过程的简单性。事实上,在极限编程中,很多原则和实践都是为了实现简单而提出的。例如计划游戏、小版本、简单设计,包括持续集成和代码所有权,都是为了提高开发过程的效率,这实际上也是简单的一种体现。“简单最好简单最好”是一种心态,更是一条原则。是一种心态,更是一条原则。(二)敏捷开发思想之拥抱变化(二)敏捷开发思想之拥抱变化秉承敏捷宣言的精神(个体与交付重于过程和工具;可用的软件重于完备的文档;客户协作重于合同谈判;响应变化重于遵循计划) ,我认为,敏捷开发大致应该体现如下的思想:拥抱变化、自我组织、简单最好、客户至拥抱变化、自我组织、简单最好、客户至上、有效沟通、精益求精上、有效沟通、精益求精。1 1、拥抱变化、拥抱变化Kent Beck 和 Martin Fowler 在介绍极限编程(eXtreme Programming)时,最先提到的就是要拥抱变化。这基本上代表了敏捷阵营对于变

      6、化的一种态度,那就是不拒绝,而且还要主动求变不拒绝,而且还要主动求变。有一句经典的论断说得好:“在软件开发领域中,唯一的不变就是变化在软件开发领域中,唯一的不变就是变化。 ”其实,不仅仅是软件开发领域,世间万事万物都处在永恒的变化之中,这是宇宙的基本规律。奥巴马在竞选美国总统的时候,提出的口号就是“变化” 。变化才是真正的变化才是真正的常态常态。传统的软件开发过程由于过分强调文档的完整,重视与客户的谈判与签订合同。所以,开发团队最希望的一件事情是冻结需求规格说明书冻结需求规格说明书。只要双方签字,需求就确定下来,不可更改。若要更改,必须经过需求变更委员会,走非常严格的需求变更流程。如果软件开发真能如此,倒也算是我们开发人员的幸事。但现实总是残酷的,需求总是会变化。变化的原因有以下几种:变化的原因有以下几种: 1 1)业务发生了变化;)业务发生了变化; 2 2)客户对业务的理解发生了变化;)客户对业务的理解发生了变化; 3 3)需求分析人员对需求的理解出现了偏差,需要修正。)需求分析人员对需求的理解出现了偏差,需要修正。对于第一点,或许我们还能够根据合同与客户讨价还价,而对于后两点,尤其

      7、是第三点,我们显然是不可拒绝的。而敏捷方法则要求团队随时响应客户的需求,针对变化给出相应的解决方案。如何拥抱变化呢?如何拥抱变化呢?我想可以通过如下方式来实现: 1 1)现场客户)现场客户很多开发团队并不喜欢客户对他们指手画脚,甚至认为他们不停提出的需求变化让他们疲于应对。但现场客户给团队开发带来的益处还是要远远超但现场客户给团队开发带来的益处还是要远远超过他带来的坏处过他带来的坏处。无论团队中聚集了多么权威的领域专家,但真正了解客户无论团队中聚集了多么权威的领域专家,但真正了解客户需求的还是客户自己需求的还是客户自己。也许他们很难用语言来表述自己的想法,但有了和现场客户的及时沟通,我们才能够在发生变化的初始就能够获得第一手的资讯。如果事情总要发生,早解决绝对比晚解决要好,而且要好得多。如果在开发中,没有办法让客户成为团队的一员,那么我们也应该指定一位客户代表,退而求其次,也应该在团队中指定一位业务专家负责业务事宜,也就是 Scrum 中 ProductProduct OwnerOwner 的角色。总之,我们需要在项目开发中,能够让开发人员在对需求理解发生困惑时,能够明确地知道由谁来负

      8、责。而一旦需求发生变化,也必须有专门的角色负责向整个团队或者相关人士传达。至于业务功能的优先级和重要程度排定,也必须由这个角色指定。2 2)定期迭代和小版本交付)定期迭代和小版本交付不仅要定期迭代,而且要尽可能地让迭代周期短,并及时交付可以工作不仅要定期迭代,而且要尽可能地让迭代周期短,并及时交付可以工作的小版本发布的小版本发布。XP 的迭代周期通常为一周,而发布一个小版本大约是一个月。而而 ScrumScrum 则将迭代称之为则将迭代称之为 SprintSprint,持续时间推荐为一个月。,持续时间推荐为一个月。SprintSprint 结结束就需要向客户展示当前迭代完成的版本。束就需要向客户展示当前迭代完成的版本。敏捷方法绝对不可闭门造车,因为需求总是可能存在二义性,且需求总需求总是可能存在二义性,且需求总是处于不断的变化中。若能定期交付一个可以工作的小版本,一方面可以给是处于不断的变化中。若能定期交付一个可以工作的小版本,一方面可以给与开发团队和客户以信心,另一方面也有助于我们及时获得客户的反馈与开发团队和客户以信心,另一方面也有助于我们及时获得客户的反馈。而衍生带来的还有一个好

      9、处是我们可以免费找到最优秀的测试人员了,那就是我们的客户。如果没有现场客户,则小版本的交付则显得尤为重要,因为它如果没有现场客户,则小版本的交付则显得尤为重要,因为它给了我们及早修订错误的机会给了我们及早修订错误的机会。3 3)持续改进)持续改进开发过程总是会出现错误,无论是开发方法、技能,还是团队管理与团队合作。持续地改进我们的开发方法、管理方法与开发过程,才能够及时而持续地改进我们的开发方法、管理方法与开发过程,才能够及时而有效地解决错误,避免重蹈覆辙有效地解决错误,避免重蹈覆辙。一个能够持续改进的团队是一个成长的团队,同时必然会是一个拥抱变化的团队。在在 ScrumScrum 中,每个中,每个 SprintSprint 完成并结束了评审会议之后,都会召开一个回完成并结束了评审会议之后,都会召开一个回顾会议,即使总结优秀经验,检讨错误与教训,团队方能够从错误中成长起顾会议,即使总结优秀经验,检讨错误与教训,团队方能够从错误中成长起来来。此外,回顾会议还能够帮助团队正确地认识自己,帮助团队成员进行交回顾会议还能够帮助团队正确地认识自己,帮助团队成员进行交流与沟通流与沟通。作为“鸡”角色的客户若能参加回顾会议,可以让客户更直观地了解团队,比提出自己的看法,有助于在后面的开发过程改善合作的质量。(三)敏捷开发思想之自我组织(三)敏捷开发思想之自我组织最佳的架构、需求和设计出自于自组织的团队最佳的架构、需求和设计出自于自组织的团队。蜂巢中的工蜂们看似忙碌,但其工作却是有序而有效,归根结底就是它们的组织架构其实是自我组织的。在自我组织的团队中,团队是一个整体,没有角色之分、职位之分、也没有高下之分。团队成员的任务不是项目经理强加于身,而是根据自己的团队成员的任务不是项目经理强加于身,而是根据自己的愿望和能力对任务进行合理评估,并主动进行领取愿望和能力对任务进行合理评估,并主动进行领取。被动与主动所产生的驱动力显然不可同日而语。自我组织的团队是一个平行的组织,由于没有管理与被管理之间的关系,自我组织的团队是一个平行的组织,由于没有管理与被管理之间的关系,因而氛围更加和谐,组织更加开放,管理更加松散,这种自由化的组织方式因而氛围更加和谐,组织更加开放,

      《敏捷开发的宣言和原则及分析》由会员小**分享,可在线阅读,更多相关《敏捷开发的宣言和原则及分析》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.