快速迭代式开发使用方法总结
为什么我在这里主要讨论迭代式软件开发?本文在此抛开千篇一律的理论,拟就根据多年的实践,总结出一套比较务实、可操作性强的方法,以期望在有限的资源下确保软件质量得到较大保证。一家之见,纰漏之处还请大家多多指正。
迭代式软件开发模式简要流程如下:
上图绿色大框内,我们就称之为一个迭代周期。每一个迭代,都可以形成一个可交付的小版本。事实上,每一个迭代周期内,对于编码和测试也可以进行多次迭代。通过快速发布测试构建的方式,验证开发完成的新功能,再通过测试发现问题来驱动开发人员对软件进行修改完善,循环往复。即:根据开发情况有针对性地组织测试,根据测试结果反作用于开发人员去完善软件质量。以这种小步快跑的方式,经过若干测试构建后,软件质量可以在较短时间内达到稳定状态。
质量保证,需要系统性的方法。那么在迭代式开发的各个阶段,都需要怎样的措施呢?
1)需求
这个阶段的主要工作是需求制定与评审。该阶段的工作分三步走:收集原始需求 ->制定产品需求 -> 产品需求评审。具体说来,首先我们通过各种渠道收集原始需求,由于原始需求多半是概念性的、模糊的,不能直接用来指导开发工作,所以需要进行归类、筛选,整合为产品需求。基本原则是,结合当前开发产品的特性,争取以最小的改动以及最大的可扩展性来制定产品需求。降低风险,同时提高灵活性。经验告诉我们,在需求没有考虑透彻的情况下,不要贸然开始设计并实现,可能导致大量返工,费时费力。产品需求制定好后,需要进行评审,一定不要觉得浪费时间而不去评审,磨刀不误砍柴工嘛!
2) 设计
这个阶段的主要工作是将产品需求转化为设计需求,指导后续的编码工作。软件行业有一名老话是:软件质量是设计出来的,对于迭代式开发也是如此。设计的好坏直接决定了软件质量的高低。设计需求一般阐述了产品需求的详细设计方案,包括页面布局、数据结构、算法以及易用性、安全性、可扩展性、健壮性和性能等诸多方面的设计思路。即使让不同的开发人员根据设计需求来进行编码,开发出的功能也八九不离十。有此可见,设计需求是非常必要的。也就是说,我们在正式编码前,必须针对需求写出相应的设计文档来指导后续的编码工作。这样做有两大好处:一是在编码之前就充分预见到将来可能遇到的问题,可以尽早规避风险;二是为开发工作搭好框架,降低因开发人员的差异导致开发过程的不确定性,避免出现“一千个人心中有一千个对需求的理解”。
3) 编码
这个阶段的主要工作是严格按照设计需求来完成编码,并组织进行代码评审。每一行代码都是软件大厦的一砖一瓦,我们拒绝豆腐渣工程,所以我们重视每一行代码。进行代码评审可以有效保证代码质量,借助一些IT管理工具可以轻松进行代码评审和代码管理。笔者曾经使用过青铜器RDM软件来做代码评审(CodeReview),十分方便。代码评审的重点应该是对程序结构的审查,发现深层次的软件错误,而不要停留在表面。同时,建议大家在做代码评审时,以代码的一个“提交”为单位进行评审。这样做的前提是,每个“提交”里包含相对完整的功能。对于迭代式开发,我们要尽量保证,每一个编码-测试迭代里,都要完成相对独立、可测试性强的功能点。
4) 测试
测试实质上是一种鉴定性的工作,是对软件质量的鉴定和最后一道把关。这个阶段的主要工作是,在每一个测试构建中,尽可能多地覆盖需求点,并根据轻重缓急合理安排测试优先级,尽可能将影响较大的缺陷提前暴露出来。测试优先级的安排应遵循以下原则:
a、先测试经过变更的部分,然后测试没有变更的部分
b、先测试程序的核心功能,然后测试一般功能
c、先测试逻辑性的功能,然后测试业务性的功能
d、先测试常规情况,然后测试异常情况
e、先测试功能,然后测试性能
按照上述原则进行测试,可以更快地发现更多软件中的严重错误,这是使软件能尽快稳定下来的一个关键因素。除此以外,在每一个迭代周期结束之前还要进行系统测试。
编码-测试的不断迭代,保证了每个测试构建里的新功能没有问题,但整个软件系统的质量还没有得到充分验证,系统测试就是为此而生。在版本发布前的最后冲刺阶段,“车轮战”是很管用的一个手段,即:调集测试人员、开发人员等全面参与测试,将这些人员分为若干个小组,每个小组分别对系统进行测试。每个测试模块由多人进行测试,可以有效降低缺陷的遗漏率。但需要注意的是,开发人员应该避免测试自己开发的功能,即进行交叉测试。
软件质量保证的实质是,使用一些流程、方法来管控软件开发过程,从而使最终交付的软件产品质量得到最大程度的保证。同时,相信大家可以看出,在整个产品开发过程中会产生很多数据,如需求、设计文档、代码、测试用例、缺陷等。使用IT管理工具可以有效提高工作效率,青铜器RDM全面实现CodeReview+Testlink + Mantis功能组合,可以管理需求、测试用例、缺陷、代码评审等,对于小规模团队,已经足够用了。
快速迭代式开发使用方法总结相关推荐
- C++11(及现代C++风格)和快速迭代式开发
过去的一年我在微软亚洲研究院做输入法,我们的产品叫"英库拼音输入法" (下载Beta版),如果你用过"英库词典"(现已更名为必应词典),应该知道"英库 ...
- 迭代式开发使用方法总结
为什么我在这里主要讨论迭代式软件开发?本文在此抛开千篇一律的理论,拟就根据多年的实践,总结出一套比较务实.可操作性强的方法,以期望在有限的资源下确保软件质量得到较大保证.一家之见,纰漏之处还请大家多多 ...
- Computer:项目管理之软件开发模式(瀑布式开发、快速原型开发、迭代式开发、螺旋式开发、敏捷式开发、DevOps开发)的简介、对比之详细攻略
Computer:项目管理之软件开发模式(瀑布式开发.快速原型开发.迭代式开发.螺旋式开发.敏捷式开发.DevOps开发)的简介.对比之详细攻略 导读:软件开发模型,用来描述和表示一个复杂的开发过程. ...
- 瀑布式开发、迭代式开发、螺旋开发、敏捷开发四种开发模式的区别
1.瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型,瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求分析.设计.编码.集成.测试.维护的步骤顺序进行. 步骤成果作为衡量进度的 ...
- 转」最佳方案:迭代式开发
前言 Fred Brooks 在 25 年前就曾写到:"不要指望一次成功,无论如何你都要这样." 敏捷开发,小步快跑,持续迭代,不断改进,产品升级. 在用例需要之前,不要添加数据成 ...
- 一次迭代式开发的研究:一个迭代式项目计划
前面我们提到,当我们为软件分解工作项目,评估了工作量,确定了优先级.同时,整个项目的人员安排,也就是哪些人负责需求分析,哪些人负责设计,哪些人负责开发,哪些人负责测试,被确定下来,我们就可以制订我们的 ...
- 瀑布式开发和迭代式开发
瀑布式开发 我收到一个开发任务,然后按照从需求到设计.从设计到编码.从编码到测试.从测试到发布这个流程去做:每个步骤都力求做到最好:上一个流程的输出作为下一个流程的输入,比如产品出一个需求文档,这个文 ...
- Android应用插件式开发解决方法[转]
一.现实需求描述 一般的,一个Android应用在开发到了一定阶段以后,功能模块将会越来越多,APK安装包也越来越大,用户在使用过程中也没有办法选择性的加载自己需要的功能模块.此时可能就需要考虑如何分 ...
- Android应用插件式开发解决方法
一.现实需求描述 一般的,一个Android应用在开发到了一定阶段以后,功能模块将会越来越多,APK安装包也越来越大,用户在使用过程中也没有办法选择性的加载自己需要的功能模块.此时可能就需要考虑如何分 ...
- 【迭代式开发】V1软件需求规格说明书——大数据开发实战项目(二)
文章目录 前言 1.引言 1.1目的 1.2项目背景 1.3缩写说明 1.4术语定义 1.5参考资料 1.6版本信息 2.任务概述 2.1系统定义 2.1.1项目背景 2.1.2项目要达到的目标 2. ...
最新文章
- 空地通信传输详解——飞机是这样和地面通信的
- MySQL 3.23 中文参考手册
- 苏州数字网络计算机比赛,苏州市计算机学会数字化校园专委会2018年年会在我院召开...
- centos 安装 图像识别工具 tesseract-ocr 流程
- 一文搞清到底什么是 .NET?
- 【转载】interpolation(插值)和 extrapolation(外推)的区别
- mfc mysql操作_MFC的数据库操作
- 工具 | 终于等到你!地表最强工具来袭!
- @程序员,如何用最少的字节编写 C64 可执行文件?
- tomcat报错:This is very likely to create a memory leak问题解决
- java学生的退补选模块论文,ASP排课/选课/补选/重选/-431-(代码+论文+开题) - 辅导代做|程序代写毕业设计|代做毕设|定制定做|计算机示例源码...
- 什么是可哈希的(hashable)
- 《程序员之禅》一一2.2 佛教中的“小鬼”
- postman接口测试七
- 笔记本电脑耳机左右声道音量不一样,如何解决?
- sqlserver还原数据库时失败因为 当前没有数据库备份
- 拿得起,放得下,想得开
- 胎死腹中的天颖工作室-2004年初的痛楚
- word删除分页符的两种方法
- img 的 alt 与 title 的异同,还有实现图片懒加载的原理
热门文章
- Win7系统安装的方法,电脑重装系统win7
- sublime中文乱码问题
- 连接摄像头拍照并识别图片中二维码
- 编译原理实验二:词法分析程序
- 【LeetCode】75. Sort Colors(颜色排序)-C++实现的两种方法及超详细图解
- 【PHP源码】三合一收款码扫码来源识别收款源码
- IOS移动应用跳转微信小程序
- HDU 6319 Problem A. Ascending Rating (单调队列)
- 9011,9012,9013,9014,8050,8550 三极管的区别
- ASP.Net Core 发布在IIS部署出现502.5错误的解决办法