在这里我给大家介绍几种敏捷开发的方法。
首先要感谢维基百科,百度百科,博客园园友,新浪博客,及TechTergat中国区的帮助——我不只是代码的生产者,也是代码的搬运工。
Scrum
Scrum敏捷开发流程主要包括:三个角色、四个会议和三个物件(343)。
三个角色:
产品负责人(Product Owner)
主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。
流程管理员(Scrum Master)
主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。
开发团队(Scrum Team)
主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5~10人左右。
四个会议:
1、Sprint计划会议
Sprint是短距离赛跑的意思,这里面指的是一次迭代,而一次迭代的周期是1个月时间(即4个星期),也就是我们要把一次迭代的开发内容以最快的速度完成它,这个过程我们称它为Sprint。
2、每日立会
3、Sprint评审会议
4、Sprint回顾会议
三个物件:
1、产品Backlog 产品Backlog指根据初始需求分解出的任务列表,包括功能性和非功能性的所有功能。
2、Sprint Backlog Sprint Backlog就是任务列表,如果映射到传统的项目管理理论中就是WBS(work breakdown structure),而且是典型的采用面向交付物的任务分解方法得到的WBS。
3、燃尽图。
极限编程XP
极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。
透明水晶方法的七大体系特征:
体系特征一:经常交付
体系特征二:反思改进
体系特征三:渗透式交流
体系特征四:个人安全
体系特征五:焦点
体系特征六:与专家用户建立方便的联系
体系特征七:配有自动测试、配置管理和经常集成功能的技术环境
DSDM-动态系统开发方法
Dynamic System Development Management,它倡导以业务为核心,快速而有效地进行系统开发。实践证明DSDM是成功的敏捷开发 方法之一。在英国,由于其在各种规模的软件组织中的成功,它已成为应用最为广泛的快速应用开发方法。本书主要讲述这样几方面内容:DSDM如何加快产品的 交付,为什么像DSDM这样的敏捷开发方法能够快速体现所开发系统给业务带来的好处,如何组织用户参与项目以开发出可用的系统,如何将不同知识背景的人组 成一个团队,如何应对常规的业务约束以进行项目管理。
DSDM的基本原则 DSDM方法建立在9条原则之上,而且在实施过程中,这9条缺一不可。
原则1:用户必须持续参与 active user involvement is imperative
原则2:必须授予DSDM团队制定决策的权利 DSDM teams are empowered to make decisions including refining or changing requirements without the direct involvement of higher management
原则3:注重产品的经常交付 The focus is on frequent product delivery
原则4:满足业务用户用途是接受交付品的主要依据 Fitness for purpose is the key criterion
开发人员不必沉溺于完美的 解决方案之中,耽误项目时间。在受限的时间内,实现业务利益最大化的交付品才是最重要的。
原则5:迭代和增量式开发对得到正确的业务解决方案是必不可少的 Iterative and incremental development is necessary to converge on an accurate business solution
采用迭代开发的方法,能够使业务流程逐步进化,使系统不断朝着满足业务需求的方向前进。
原则6:开发过程的所有变化可逆 All changes during development are reversible
采用迭代和增量式开发过程中,很可能会碰到走错的情况,此时需要回退到一个已知的可靠的点上。
原则7:在高层次上制定需求的基线 Requirements are initially agreed at a high level
在业务研究中所得出的需求必须在高层次上达成一致。接下来在迭代过程中再得到详细的需求。
原则8:测试自始至终贯穿于开发周期之中 Testing is integrated throughout the life cycle — this is essential with an incremental approach
开发人员完成一个模块的开发后,自己会进行单元测试。当模块集成到现有系统后,测试人员需要执行集成测试。另外,回归测试在DSDM中占有很重 要的地位。
原则9:所有项目涉众间的通力合作是不可获缺的 A collaborative and co-operative approach between all stakeholders is essential
测试驱动开发
和精益制造原则的概念相近,精益开发也可以总结为如下七条原则:
- 消除浪费
- 增强学习
- 尽量延迟决定
- 尽快发布
- 下放权力
- 嵌入质量
- 全局优化
面对开发团队以及最终的产品大小的额外挑战,可以说软件开发是个持续学习的过程。最佳的改善软件开发环境的做法就是增强学习。在代码完成后马上进行测试可以避免缺陷的累积。不是去做成更多的文档或详细设计,而是对各种各样的想法进行实际的编码尝试。用户需求的收集过程可以简单地通过给最终客户演示,并听取他们的反馈来完成。
使用短周期的迭代(每个迭代都应包括重构和集成测试)可以加速学习过程。在决定当前阶段的开发内容并对未来改善的努力方向进行调整时,在客户端帮助下通过简短的反馈会议来增强反馈。通过这些简短的反馈会议,客户代表和开发团队会更多地发现在进一步开发时会遇到的主要问题及可能的解决方案。从而,基于已开发出的原型,客户可以更好地理解自己的需求,开发者也能了解到如何才能更好地满足客户的需求。另一个关于和客户沟通、学习的想法是“基于组的开发”,这种方法聚焦于未来解决方案的约束限定而不是各种可能的解决方案,因此通过和客户的对话加速了解决方案的产生。
再次感谢维基百科,百度百科,博客园园友,新浪博客,及TechTergat中国区的帮助——我不只是代码的生产者,也是代码的搬运工。