学习笔记——敏捷开发

什么是敏捷开发(Agile Software Development)?敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。

      在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。具体来说,敏捷开发强调的是小而精的团队,而团队中的每一个人都有较高的专业技能,当然所谓的专业技能并非单指写代码能力,每位成员必须能够保持竭尽所能做好工作的态度;在项目开发过程中,并不需要繁杂、完备的文档,但要求尽可能的缩短开发周期,强调渐进式交付,对于需求的变动,随时做出调整,而这也正是敏捷开发的精髓所在吧。

      “个体和互动高于流程和工具,工作的软件高于详尽的文档,客户合作高于合同谈判,相应变化高于遵循计划”,这就是敏捷开发的宣言,从这个宣言的风格中其实就能感受到敏捷开发的特点,”简单、实际“,这是我读到这个宣言时的第一印象,而实际上敏捷开发确实也如此。敏捷开发不同于传统开发方法,传统的开发方法都要求在开发之前有详细的需求文档,尽可能的希望这个设计文档能够包含所有情况,将这个项目做得完美无缺;经过漫长的时间当设计规划做好后,每个人对号入座,根据项目的需求去定义每个人的角色。这类开发方法的弊端在于,软件开发的项目中,所有因素都可能随时改变,而这就要求开发人员要么考虑周到要么随时准备改变,但是考虑周到得到的结果与付出的代价往往是不成比例的。软件的设计难处在于软件需求的不稳定,从而导致软件过程的不可预测。但是传统的控制项目模式都是试图对一个软件开发项目在很长的时间跨度内做出详细的计划,然后依计划进行开发。所以,这类方法在不可预测的环境下,很难适应变化,甚至是拒绝变化。对于人员角色的分配,虽然保证了工作的任务分配,但却限制了开发人员的创造和创新能力,效率低下。而敏捷开发则比较好的解决了这两个问题。

这是敏捷开发的线路图,敏捷开发的首要目标是Test Driven Development,其次是Continuous Integration(持续集成)……所以敏捷开发强调的是根据需求的变动反复的集成、测试,我认为这一点在当下尤为重要,一个好的点子需要马上去实现,并随时准备做出变化,而非等到所有准备工作”尽善尽美“后才动工,抢占先机比初始的完美或许更加重要。在人员调度上,敏捷开发强调人与人之间的合作,分工肯定也是需要的,但是不像传统方法中如此死板,他的理念在于让让所有人发挥出最大的能力,在实际开发中也要求团队人员尽量在一起工作。

      说了一些敏捷开发的优点,也并不是说敏捷开发就比其他开发方法好,其实和所有事物都一样,比较好坏主要是看是否较优地解决了你的问题,而每个问题都有特定的背景前提。所以并不是说敏捷开发在所有环境下都是最好的,只是在现在要求创新、效率的条件下相对较优。

下面给出敏捷开发的12条原则

  • 对我们而言,最重要的是通过尽早和不断交付有价值的软件满足客户需要。
  • 我们欢迎需求的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势。
  • 经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。
  • 业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。
  • 围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务。
  • 在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。
  • 可以工作的软件是进度的主要度量标准。
  • 敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏。
  • 对卓越技术与良好设计的不断追求将有助于提高敏捷性。
  • 简单——尽可能减少工作量的艺术至关重要。
  • 最好的架构、需求和设计都源自自我组织的团队。
  • 每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。

以上仅是个人近期看了敏捷开发的文章后的一些总结和看法,不足之处,希望大家指出,一起学习讨论。

原文地址:https://www.cnblogs.com/lhyun/p/3370145.html