快速迭代式开发使用方法总结

标签: 迭代 开发 方法 | 发表时间:2013-06-10 06:33 | 作者:sztiger168
出处:http://blog.csdn.net

        为什么我在这里主要讨论迭代式软件开发?本文在此抛开千篇一律的理论,拟就根据多年的实践,总结出一套比较务实、可操作性强的方法,以期望在有限的资源下确保软件质量得到较大保证。一家之见,纰漏之处还请大家多多指正。

迭代式软件开发模式简要流程如下:

         

        上图绿色大框内,我们就称之为一个迭代周期。每一个迭代,都可以形成一个可交付的小版本。事实上,每一个迭代周期内,对于编码和测试也可以进行多次迭代。通过快速发布测试构建的方式,验证开发完成的新功能,再通过测试发现问题来驱动开发人员对软件进行修改完善,循环往复。即:根据开发情况有针对性地组织测试,根据测试结果反作用于开发人员去完善软件质量。以这种小步快跑的方式,经过若干测试构建后,软件质量可以在较短时间内达到稳定状态。

质量保证,需要系统性的方法。那么在迭代式开发的各个阶段,都需要怎样的措施呢?

1)需求

        这个阶段的主要工作是需求制定与评审。该阶段的工作分三步走:收集原始需求 -> 制定产品需求 -> 产品需求评审。具体说来,首先我们通过各种渠道收集原始需求,由于原始需求多半是概念性的、模糊的,不能直接用来指导开发工作,所以需要进行归类、筛选,整合为产品需求。基本原则是,结合当前开发产品的特性,争取以最小的改动以及最大的可扩展性来制定产品需求。降低风险,同时提高灵活性。经验告诉我们,在需求没有考虑透彻的情况下,不要贸然开始设计并实现,可能导致大量返工,费时费力。产品需求制定好后,需要进行评审,一定不要觉得浪费时间而不去评审,磨刀不误砍柴工嘛!

2) 设计

         这个阶段的主要工作是将产品需求转化为设计需求,指导后续的编码工作。软件行业有一名老话是:软件质量是设计出来的,对于迭代式开发也是如此。设计的好坏直接决定了软件质量的高低。设计需求一般阐述了产品需求的详细设计方案,包括页面布局、数据结构、算法以及易用性、安全性、可扩展性、健壮性和性能等诸多方面的设计思路。即使让不同的开发人员根据设计需求来进行编码,开发出的功能也八九不离十。有此可见,设计需求是非常必要的。也就是说,我们在正式编码前,必须针对需求写出相应的设计文档来指导后续的编码工作。这样做有两大好处:一是在编码之前就充分预见到将来可能遇到的问题,可以尽早规避风险;二是为开发工作搭好框架,降低因开发人员的差异导致开发过程的不确定性,避免出现“一千个人心中有一千个对需求的理解”。

3) 编码

         这个阶段的主要工作是严格按照设计需求来完成编码,并组织进行代码评审。每一行代码都是软件大厦的一砖一瓦,我们拒绝豆腐渣工程,所以我们重视每一行代码。进行代码评审可以有效保证代码质量,借助一些IT管理工具可以轻松进行代码评审和代码管理。笔者曾经使用过青铜器RDM软件来做代码评审(CodeReview),十分方便。代码评审的重点应该是对程序结构的审查,发现深层次的软件错误,而不要停留在表面。同时,建议大家在做代码评审时,以代码的一个“提交”为单位进行评审。这样做的前提是,每个“提交”里包含相对完整的功能。对于迭代式开发,我们要尽量保证,每一个编码-测试迭代里,都要完成相对独立、可测试性强的功能点。

4) 测试

        测试实质上是一种鉴定性的工作,是对软件质量的鉴定和最后一道把关。这个阶段的主要工作是,在每一个测试构建中,尽可能多地覆盖需求点,并根据轻重缓急合理安排测试优先级,尽可能将影响较大的缺陷提前暴露出来。测试优先级的安排应遵循以下原则:

       a、先测试经过变更的部分,然后测试没有变更的部分

       b、先测试程序的核心功能,然后测试一般功能

       c、先测试逻辑性的功能,然后测试业务性的功能

       d、先测试常规情况,然后测试异常情况

       e、先测试功能,然后测试性能

       按照上述原则进行测试,可以更快地发现更多软件中的严重错误,这是使软件能尽快稳定下来的一个关键因素。除此以外,在每一个迭代周期结束之前还要进行系统测试。

       编码-测试的不断迭代,保证了每个测试构建里的新功能没有问题,但整个软件系统的质量还没有得到充分验证,系统测试就是为此而生。在版本发布前的最后冲刺阶段,“车轮战”是很管用的一个手段,即:调集测试人员、开发人员等全面参与测试,将这些人员分为若干个小组,每个小组分别对系统进行测试。每个测试模块由多人进行测试,可以有效降低缺陷的遗漏率。但需要注意的是,开发人员应该避免测试自己开发的功能,即进行交叉测试。

       软件质量保证的实质是,使用一些流程、方法来管控软件开发过程,从而使最终交付的软件产品质量得到最大程度的保证。同时,相信大家可以看出,在整个产品开发过程中会产生很多数据,如需求、设计文档、代码、测试用例、缺陷等。使用IT管理工具可以有效提高工作效率,青铜器RDM全面实现CodeReview+ Testlink + Mantis功能组合,可以管理需求、测试用例、缺陷、代码评审等,对于小规模团队,已经足够用了。


作者:sztiger168 发表于2013-6-10 6:33:35 原文链接
阅读:171 评论:0 查看评论

相关 [迭代 开发 方法] 推荐:

论迭代式的产品开发方法

- david - 所有文章 - UCD大社区
对基础构思的完善和原型化. 一款游戏从创意到开发,抽象来看可以分为两大阶段:基础构思的阶段,和迭代开发的阶段. 任何游戏在最早的时候都只是一个或者一组零散而不确定的构想,策划人员将这组构想加以整理,抽取其中相互联系的规则组成核心规则集,这就是产品最初的框架. 譬如说俄罗斯方块最初的规则可能包括:方块连成一行就消除并加分;头顶随机掉落新的方块;方块可旋转,等.

快速迭代式开发使用方法总结

- - CSDN博客互联网推荐文章
        为什么我在这里主要讨论迭代式软件开发. 本文在此抛开千篇一律的理论,拟就根据多年的实践,总结出一套比较务实、可操作性强的方法,以期望在有限的资源下确保软件质量得到较大保证. 一家之见,纰漏之处还请大家多多指正. 迭代式软件开发模式简要流程如下:.         上图绿色大框内,我们就称之为一个迭代周期.

迭代式开发技术

- - CSDN博客研发管理推荐文章
    迭代是一开发种技术,用来把系统功能传递到一系列的增量的完整版本,每个版本一个特定固定的时间段被开发,该时间段称之为迭代. 图中颜色代表每次开发每项活动所占的比重不同. 1、在进行大规模的投资前,就解决了关键的风险问题. 2、使的早期用户反馈在初始迭代中就能出现. 4、各个目标里程碑提供了短期的焦点.

敏捷开发-快速迭代

- - CSDN博客研发管理推荐文章
今天跟大家分享的是“敏捷开发、快速迭代”. 我们大都采用的是“瀑布开发模式”,有了问题,就得返工,虽然最终的产品会比较齐全完善,但是开发周期太长,开发人员会产生排斥,甚至厌恶的心理. 经过YH系统的开发,也且生体会到了这一弊端. 借鉴敏捷开发模式,来改善软件开发过程,提高项目的开发效率. 要想借鉴,首先得弄懂以下3个问题.

浅谈敏捷开发和迭代开发相结合

- - 研发管理 - ITeye博客
在这七年中,我做过很多的软件开发项目,经历了许多不同的项目组,在不同的项目中从事不同的角色,每个项目组根据项目类型的不同都有各自一套软件开发体系. 最近两年,本人主要从事软件开发的管理工作. 在工作中,不断的摸索与实践,并不断的学习和总结. 下面我将谈到的是:软件开发,将敏捷开发和迭代开发相结合的好处.

C++11(及现代C++风格)和快速迭代式开发

- - 刘未鹏 | Mind Hacks
过去的一年我在微软亚洲研究院做输入法,我们的产品叫“英库拼音输入法” ( 下载Beta版),如果你用过“ 英库词典”(现已更名为必应词典),应该知道“英库”这个名字(实际上我们的核心开发团队也有很大一部分来源于英库团队的老成员). 整个项目是微软亚洲研究院的自然语言处理组、互联网搜索与挖掘组和我们创新工程中心,以及微软中国Office商务软件部(MODC)多组合作的结果.

腾讯敏捷开发及快速迭代

- - 标点符
从2006年开始,腾讯的研发规模开始膨胀,开发模式急需规范和标准化,到底走IPD(集成产品开发)还是Agile(敏捷)的开发路线,公司管理层也在为拿不定主意而犯愁,之后研发管理部开始与ThoughtWorks公司接触,逐渐将敏捷产品开发引入进来,并正式命名为TAPD(Tencent Agile Product Development).

使用stub进行快速迭代开发

- - ITeye博客
现在趋向于前台和后台分层开发. 前端调用后台接口获取数据,然后在页面展示.. 但是有时候前台(静态资源)和后台联调时很麻烦:. (1)后台依赖协作方,里面的内容很难遍历各种情况;. (2)后台的数据修改起来很麻烦,因为我们没法直接修改数据库,因为数据库在协作方那里.. 所以我想到了一个解决方法: stub.

IOS上objective-c开发调试方法

- - 瞄的技术
常用总结,陆续补充,免得忘记. 1.如果问题是可以复现的,用Breakpoint可以跟踪出错位置在进行分析. 2.如果使用Breakpoint无法查出crash问题,问题无法复现,可以用profile记录运行过程中的内存,cpu使用,看是否在某一功能突然升高,不稳定. 3.可以通过将所有的NSLOG控制台输出截获到文件输出,在真机上运行来排查在模拟器上无法复现的问题.

解析精益产品开发(一)—— 看板开发方法

- - 人人都是产品经理
看板(Kanban)开发方法是近年来最热门的敏捷和精益开发方法. 越来越多的案例表明,它能够改善协作、优化管理,显著提高交付速度、质量和灵活性. 看板开发方法的规则简单,但其有效实施依赖于对原理的理解、对原则的坚持和实践的应变. 本文将整体介绍看板的原理、原则和基本实践. 尽管具体实践不同,看板开发方法和精益制造中的看板原理是一致的.