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

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

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

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

1)需求

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

2) 设计

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

3) 编码

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

4) 测试

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

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

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

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

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

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

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

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

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

快速迭代式开发使用方法总结相关推荐

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

    过去的一年我在微软亚洲研究院做输入法,我们的产品叫"英库拼音输入法" (下载Beta版),如果你用过"英库词典"(现已更名为必应词典),应该知道"英库 ...

  2. 迭代式开发使用方法总结

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

  3. Computer:项目管理之软件开发模式(瀑布式开发、快速原型开发、迭代式开发、螺旋式开发、敏捷式开发、DevOps开发)的简介、对比之详细攻略

    Computer:项目管理之软件开发模式(瀑布式开发.快速原型开发.迭代式开发.螺旋式开发.敏捷式开发.DevOps开发)的简介.对比之详细攻略 导读:软件开发模型,用来描述和表示一个复杂的开发过程. ...

  4. 瀑布式开发、迭代式开发、螺旋开发、敏捷开发四种开发模式的区别

    1.瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型,瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求分析.设计.编码.集成.测试.维护的步骤顺序进行. 步骤成果作为衡量进度的 ...

  5. 转」最佳方案:迭代式开发

    前言 Fred Brooks 在 25 年前就曾写到:"不要指望一次成功,无论如何你都要这样." 敏捷开发,小步快跑,持续迭代,不断改进,产品升级. 在用例需要之前,不要添加数据成 ...

  6. 一次迭代式开发的研究:一个迭代式项目计划

    前面我们提到,当我们为软件分解工作项目,评估了工作量,确定了优先级.同时,整个项目的人员安排,也就是哪些人负责需求分析,哪些人负责设计,哪些人负责开发,哪些人负责测试,被确定下来,我们就可以制订我们的 ...

  7. 瀑布式开发和迭代式开发

    瀑布式开发 我收到一个开发任务,然后按照从需求到设计.从设计到编码.从编码到测试.从测试到发布这个流程去做:每个步骤都力求做到最好:上一个流程的输出作为下一个流程的输入,比如产品出一个需求文档,这个文 ...

  8. Android应用插件式开发解决方法[转]

    一.现实需求描述 一般的,一个Android应用在开发到了一定阶段以后,功能模块将会越来越多,APK安装包也越来越大,用户在使用过程中也没有办法选择性的加载自己需要的功能模块.此时可能就需要考虑如何分 ...

  9. Android应用插件式开发解决方法

    一.现实需求描述 一般的,一个Android应用在开发到了一定阶段以后,功能模块将会越来越多,APK安装包也越来越大,用户在使用过程中也没有办法选择性的加载自己需要的功能模块.此时可能就需要考虑如何分 ...

  10. 【迭代式开发】V1软件需求规格说明书——大数据开发实战项目(二)

    文章目录 前言 1.引言 1.1目的 1.2项目背景 1.3缩写说明 1.4术语定义 1.5参考资料 1.6版本信息 2.任务概述 2.1系统定义 2.1.1项目背景 2.1.2项目要达到的目标 2. ...

最新文章

  1. 空地通信传输详解——飞机是这样和地面通信的
  2. MySQL 3.23 中文参考手册
  3. 苏州数字网络计算机比赛,苏州市计算机学会数字化校园专委会2018年年会在我院召开...
  4. centos 安装 图像识别工具 tesseract-ocr 流程
  5. 一文搞清到底什么是 .NET?
  6. 【转载】interpolation(插值)和 extrapolation(外推)的区别
  7. mfc mysql操作_MFC的数据库操作
  8. 工具 | 终于等到你!地表最强工具来袭!
  9. @程序员,如何用最少的字节编写 C64 可执行文件?
  10. tomcat报错:This is very likely to create a memory leak问题解决
  11. java学生的退补选模块论文,ASP排课/选课/补选/重选/-431-(代码+论文+开题) - 辅导代做|程序代写毕业设计|代做毕设|定制定做|计算机示例源码...
  12. 什么是可哈希的(hashable)
  13. 《程序员之禅》一一2.2 佛教中的“小鬼”
  14. postman接口测试七
  15. 笔记本电脑耳机左右声道音量不一样,如何解决?
  16. sqlserver还原数据库时失败因为 当前没有数据库备份
  17. 拿得起,放得下,想得开
  18. 胎死腹中的天颖工作室-2004年初的痛楚
  19. word删除分页符的两种方法
  20. img 的 alt 与 title 的异同,还有实现图片懒加载的原理

热门文章

  1. Win7系统安装的方法,电脑重装系统win7
  2. sublime中文乱码问题
  3. 连接摄像头拍照并识别图片中二维码
  4. 编译原理实验二:词法分析程序
  5. 【LeetCode】75. Sort Colors(颜色排序)-C++实现的两种方法及超详细图解
  6. 【PHP源码】三合一收款码扫码来源识别收款源码
  7. IOS移动应用跳转微信小程序
  8. HDU 6319 Problem A. Ascending Rating (单调队列)
  9. 9011,9012,9013,9014,8050,8550 三极管的区别
  10. ASP.Net Core 发布在IIS部署出现502.5错误的解决办法