敏捷开发

来源:互联网 发布:matlab cell变成矩阵 编辑:程序博客网 时间:2024/05/19 01:59
收集编写产品需求,审查项目成果等。

•Scrum专家(Scrum Master):Scrum专家负责指导开发团队进行Scrum开发与实践。它也是开发团队与产品拥有者之间交流的联络点。

•团队成员(Team Member):即项目开发人员。

Scrum提供一个敏捷开发框架,其他许多敏捷方法都可以被集成到Scrum中。比如测试驱动开发(test-driven development)和结对编程(pair programming)等都可以被整合到Scrum中。

三、精益开发(LEAN DEVELOPMENT)


精益软件开发模式是从丰田公司的产品开发方法中演化而来。它主要包括两个部分:一部分是核心思想及原则,另外一部分由一些在相应的工具构成。

精益开发的核心思想是查明和消除浪费。在软件开发过程中,错误(bugs),没用的功能,等待以及其他任何对实现结果没有益处的东西都是浪费。浪费及其源头必须被分析查明,然后设法消除。精益开发的其它原则包括:

•强调学习。软件开发过程是一个不断学习的过程。每个团队成员都需要从日常的失败,互动,交流以及信息反馈中学习,不断改进所开发的产品和开发效率。

•在最后时刻做决定。这样可以避免在可能改变的事情上做无谓的努力,从而有效的避免浪费。

•用最快的速度交付用户。较短的迭代周期能够加速产品的开发及交付,加快交流,提高生产力。

•给团队自主权。激励团队并让所有团队成员自我管理始终是所有敏捷方法获得成功的基本因素之一。

•诚信。确保整个系统正常工作,真正满足客户的需求是整个团队需要努力坚持的诚信和和对用户的承诺。

•全局观。精益开发强调整体优化的系统。无论开发的组织还是被开发的产品, 从整体上考虑优化比从各个局部去优化更高效。

对于上述的每个原则,都有一些相应的实现工具。这些工具包括价值流图(Value Stream Mapping),基于集合的开发(set-based development),拉系统(pull system),排队论(queuing theory),等等。

和其它敏捷方法相比,精益软件更重要的是不断完善开发过程的一种思维方式。因此,将精益模式与其他敏捷开发模式一起使用将会取得很好的效果。

四、其它敏捷方法

动态系统开发方法(DSDM)是由快速应用程序开发(RAD)方法演变而来的敏捷开发模式。DSDM在普遍的敏捷价值和原则的基础上,定义了更加详细的流程,以涵盖更完整的项目生命周期。它们包括项目前期活动(pre-project activities),项目可行性研究,功能建模,设计和开发,实施或部署,项目后期维护(post-project maintenance),等等。同时,每个过程都定义了诸如如何将每个功能模型转化为实际代码,如何将原型交付最终用户使用并审查,如何处理反馈信息等的详细步骤。因此,DSDM相比于其它敏捷方法在过程上显得比较繁重。

特征驱动开发(FDD)是另一种敏捷开发方式,它将用户的功能需求划分成更小的功能特征,然后逐步地在每个迭代周期中开发实现这些产品特征。与DSDM方式一样,FDD仍然会在项目初期对整个项目做较大的规划和建模,以获得对该系统的全面了解。但是相比DSDM来说,FDD在这些方面简捷了一些。

Crystal Clear是另一种敏捷方法。Crystal Clear更专注于人。相比于其他的敏捷方法,它可使人获得更大的解放。据称这种方法更适合于较小规模的开发小组(由2-8个人组成)和非关键项目。Crystal Clear定义了七种属性。前3个属性 - 频繁的交付(frequent delivery),渗透交流(osmotic communication),反思提高(reflective improvement)- 反映出基本的敏捷开发做法和价值,如周期较短的迭代式开发,自我管理的开发团队和反馈带动增量发展等等。另外的4个属性分别是:个人安全(personal safety),集中(focus),容易接触专家用户(easy access to expert users)和技术环境(technical environment)。其中,容易接触专家用户实际就是敏捷方法中提到的客户持续参与,但Crystal Clear对此要求比较宽松。Crystal Clear也提供了一些通用的做法,比如,它提供了三种回顾分析的方法:访谈,问卷调查和工作组。Crystal Clear的过程也是相当简单,其中涉及短的迭代周期,日常会议及持续集成等。

还有其他一些敏捷方法如敏捷统一过程(Agile Unified process),上下文驱动开发(Context Driven Development),Getting Real等。这些方法都是增量和迭代开发过程,并且重视人多过于整个过程。而各种敏捷方法的区别在于它们对敏捷的不同阐释和不同侧重。理解这些方法可以帮助我们从多个角度理解敏捷开发,并且了解更多的最佳应用。

如何选择一种敏捷方法

选择一种合适的方法取决于多种因素。在做出决定之前,我们需要充分考虑以下这些方面:

•方法的复杂度。确保你的团队或组织能够应付这种复杂度。

•社区和业界支持。流行的方法可能并不是你最理想的选择,但流行的方法 至少有较多的社区及行业支持,可以使你受益匪浅。

•实用工具。选择一种可以为你提供支持工具的方法。一个良好的软件工具可以帮助团队有效的处理日常工作,促进团队协作,并减少管理成本。

•你目前的开发方式以及团队关于敏捷方法的认识程度。选择一些与你当前开发方式比较接近的敏捷方法将有助于推动该方法的实施。

•你的团队规模。较小规模的团队最好从简单的方式入手。当然,这并不意味着你必须选择那些本身就比较简单的方法如Crystal Clear。你可以选择一些相对比较全面的方法,但从简单入手。当你的团队规模逐渐扩大,再增加相应的细节。

•你不需要只遵从一种方法。你可以为团队选择一个主要的方法(如Scrum),然后从其他方法中借鉴对你的团队或组织有所帮助的其他方式加以整合。

敏捷总是在不断发展演变,每个采用敏捷开发的团队都可以通过发现并形成自己的想法和最佳实践,对敏捷开发做出自己的贡献。

原创粉丝点击