随着软件开发方法的不断演进,混合的开发方法在各软件企业和团队中应用越来越广泛。每一种开发方法都有其优点,如传统的瀑布式方要求有详细的项目计划和文档,部署、QA测试和交付过程严谨。而敏捷方法的优点则体现在能够快速迭代,更多的强调人员在整个开发过程中所发挥的作用。
1.瀑布型传统开发方法
2.敏捷开发方法
3.传统开发方法与敏捷开发对比
•瀑布模型
-固定的、没有弹性的。
-很困难去达到互动。
-假如说需求没有完全的被了解,或是可能需要完全地改变项目的需求,瀑布式的model是比较不适合的。
•敏捷方法
-完整地开发,每少数几周或是少数几个月里可以测试功能。
-强调在获得最简短的可执行功能的部分,能够及早给予企业价值。
-在整个项目的生命周期里,可以持续的改善、增加未来的功能。
4. 敏捷开发的宣言
①个人和交互重于方法和工具(Individuals and interactions over processes and tools);
-人是软件项目获得成功最为重要的因素
-合作、沟通能力以及交互能力比单纯的软件编程能力和工具更为重要
-方法和工具是死的,人是活的,人要是太“面”或者协作不好,再强大的方法和工具都是白扯;
②可工作的软件重于完备的文档(Working software over comprehensive documentation);
-过多的面面俱到的文档往往比过少的文档更糟
-软件开发的主要和中心活动是创建可以工作的软件
-直到迫切需要并且意义重大时,才进行文档编制
-编制的内部文档应尽量短小并且主题突出
③与客户的协作重于合同谈判(Customer collaboration over contract negotiation);
-客户不可能做到一次性地将他们的需求完整清晰地表述在合同中
-为开发团队和客户的协同工作方式提供指导的合同才是最好的合同
④响应变化重于严格遵照计划(Responding to change over following a plan);
-变化是软件开发中存在的现实
-计划必须有足够的灵活性与可塑性
-短期的迭代的计划比中长期计划更有效
5.敏捷开发的步骤
1、Product Owner 负责确定一个Product Backlog(有顺序的产品列表);
2、Scrum Team根据Product Backlog列表,做工作量的预估和安排;
3、通过 Sprint Planning Meeting 中挑选出一个Story作为本次迭代完成的目标;
4、Sprint Backlog是由Scrum Team去完成的,每个成员根据Sprint Backlog再细化成更小的任务;
5、 Daily Scrum Meeting(每日站立会议),每次会议控制在15分钟左右,团队成员轮流发言:昨日今日所做之事以及遇到的问题
6、当一次Sprint完成,产品负责人和客户参加Srpint Review Meeting,每一个Scrum Team的成员都要向他们演示自己完成的软件产品
8、最后就是 Sprint Retrospective Meeting,以轮流发言方式进行,总结并讨论改进的地方,放入下一轮Sprint的产品需求中;
6.敏捷开发的优势
更加透明; 随时跟踪项目的状态和进展情况,及早发现问题和风险 .
快速交付, 每次迭代都能交付可运行的软件.
最高风险和最高优先级的需求,最优先进行开发.
改善应对变更能力, 减少大量的重计划.
改善项目沟通.更好的客户参与, 避免错误的假设.
7.常见的误解
误解:敏捷是拯救仸何项目的银弹.
敏捷方法只有运用得当才有效果.
误解:敏捷意味着 ad-hoc hacking ,丌需要仸何文档.
敏捷是有严格要求的,也是面向质量的
根据沟通的需要产生相应的文档.
误解:敏捷只是开发者的问题
基本的开发方法不传统相比有显著丌同, 影响项目的各个方面: 合同, 角色, 定价模型, 项目管理等.
误解:采用敏捷方法的开发组/项目丌需要制定计划
敏捷项目需要经常制定计划,但是丌需要试图超前制定项目计划,通常这也是丌可能的.
误解:敏捷项目的范围可以随时改变.
变更可以等到下一次迭代开始,当前正在迚行中的迭代丌能变更
总结
敏捷开发虽然地位如日中天,但不要盲目追随,根据项目选择适合的开发方法才会事半功倍。敏捷开发不是银弹,需要不断的实践才会更好的发展。