[软件工程学习笔记]浅谈敏捷开发

      在移动电子设备如此普及的今天,看着琳琅满目的手机APP市场,你不知道下一秒什么会突然变得炙手可热,什么会瞬间销声匿迹。顺应时代的潮流,软件开发也从重型过程向轻量型敏捷发展。作为软件的开发者,这些都是值得我们去探索和研究的。在这种情况下,敏捷开发就变得尤为重要。

      那么何谓敏捷开发呢?敏捷开发,简单的说,就是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

 在传统的软件开发的过程中,我们不难得看出这样一些问题。在一开始,用户往往是不清楚自己真实的意图的,导致结果与预想的偏差;设计师和程序员往往按照瀑布开发模式,导致对计划之外的变化来不及响应。这些都会导致最后完不成项目的结果。

 而在敏捷开发中,我们树立了这样的价值观

 1、沟通:个体和互交胜过过程和工具。沟通并不仅仅是团队内部开发人员之间的沟通,当然这是非常必要的,然而更重要的是和客户之间的沟通。敏捷开发的核心是人,人是获得成功的最为重要的因素,帮助客户理解自己的需求是其中很重要的一个环节,这决定了在之后的开发过程中的方向。

 2、简单:可以工作的软件胜过面面俱到的文档。当然这并不是说在敏捷开发的过程中就不需要文档了,我们只是要把计划文档做的简洁、直观明了,而非面面俱到,这样的文档可以帮助程序员激发更多的灵感,也更加适应工作的变化。

 3、反馈:与用户合作胜过合同谈判。在开发的过程中,并不是没有用户参与的,而相反,有用户的参与才能更好的实现软件的用途,开发者需要实时跟踪用户的反馈来完善软件的功能,如此才能更普及有更广阔的天地。记住,双赢永远比输赢更强。

 4、勇气:响应变化比遵循计划更强。比之遵循计划,响应变化需要更大的勇气。当你的决策不合适的时候,需要勇气放弃或重构当前的工作,指正方向。

 5、谦逊:这是扩展出来的一个价值观,优秀的开发人员都具有谦逊的美德,只有谦逊才能更好的接受别人的建议,承认自己的不足,做出更好的产品。

敏捷开发的方法:
极限编程XP、Scrum、精益软件开发、动态系统开发、特性驱动开发和水晶开发。
极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。
Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员。
精益软件开发一词起源于Mary Poppendieck 和Tom Poppendieck写的一本同名书籍。这本书将传统的精益原则以一种新的方式呈现---作为22种敏捷开发实践工具之一,并且和其他工具进行了比较。
Mary 和 Tom's 在敏捷软件开发社区中提出的改进,包括在敏捷开发会议上的几次演讲,已经形成了被敏捷开发社区广泛接受的概念。 例如:咨询公司NetObjectives 和C.C. Pace 就使用了“精益-敏捷”以及其他一些列入的概念。
       特征驱动开发FDD-Feature Driven Development)方法是敏捷软件开发过程中的一种,它强调特性驱动,快速迭代,即能保证快速开发,又能保证适当文档和质量,非常适合中小型团队开发管理。它提出的每个功能开发时间不超过两周,为每个用例user case限定了粒度,具有良好可执行性,也可以对项目的开发进程进行精确及时地监控。它抓住了软件开发的核心问题领域,即正确和及时地构造软件。FDD还打破了传统的将领域和业务专家/分析师与设计者和实现者隔离开来的壁垒。分析师被从抽象的工作中解脱出来,直接参与到开发人员和用户所从事的系统构造工作中。
       C rystal Methods(水晶方法族)由Alistair Cockburn在20实际90年代末提出。之所以是个系列,是因为他相信不同类型的项目需要不同的方法。虽然水晶系列不如XP那样的产出效率,但会有更多的人能够接受并遵循它。其目的是发展一种提倡“机动性的”方法,包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践。
以上几种方法的共同点如下:
  迭代式开发

  增量交付

  开发团队和用户反馈推动产品开发

  持续集成

  开发团队自我管理

敏捷团队包括3个核心角色: PO(Product Owner)、Scrum Master(Scrum教练)和Team(开发产品)

原文地址:https://www.cnblogs.com/wingwyy511/p/3612570.html