前面我们提到了迭代式开发的巨大优势,它可以降低我们软件开发的巨大风险,它可以使我们把握用户的真正需求,它可以使我们从错误与偏差中及时纠正过来,那么我们应该如何进行迭代式开发呢?要回答这个问题,我们首先要弄清迭代式开发与传统的瀑布式开发的差别在哪里。
1.需求分析的差别
与传统的软件开发一样,迭代式开发同样需要与客户进行一个充分的需求分析。但与传统的软件开发不一样,迭代式开发不要求初期的需求分析是一个完全的需求分析。它承认需求分析需要一个过程,它承认需求的变化(或者说需求是一个进化的过程)。所以,在迭代式开发中,起初的需求分析只要进行到当时的阶段能够理解到的程度就可以了,而不是瀑布式开发那样需要完成所有的需求分析并最终确认下来。至于其它还没有分析到的内容,我们会在每个迭代的需求阶段逐渐加深理解,逐渐细化,直至最终完成软件的开发。因此,迭代式开发的需求分析始终贯穿整个软件开发的过程。
2.软件开发的差别
迭代式开发的软件开发阶段,与传统软件开发的方式存在着巨大的差异,迭代式软件开发采用的是“持续集成(Continuous Build)”的软件开发方式。传统的开发方式,当需求被确认下来并开始软件开发时,首先进行的工作是分模块进行开发,就如同车间生产一样,不同的模块被分配到了不同的小组或个人进行分头开发。在此期间,谁都不能拿出可运行的软件交付物,直到开发中后期的集成阶段。而迭代式开发不同,它将整个开发过程分为了数个迭代,并且在每个迭代结束时要交付可执行的软件,正因为如此,迭代式开发采用持续集成的方式。
持续集成的基本思想就是每个人每天完成的开发工作都能立即集成为一个可运行的软件产品。为了实现持续集成,我们必须改变我们的开发顺序。传统的开发顺序,首先是开发并完善各个子模块。当各个子模块都完成开发以后,才最终组装并集成为一个可运行的软件。采用这种顺序开发不可能保证持续集成。迭代式开发,在初次确认业务需求以后,首先开发的是软件最主要最基本的功能,在开发这些功能时也往往只考虑主流程而忽略分支流程。采用这种方式,可以在最短时间内交付可以运行的软件。之后我们交给客户去体验、去确认、给我们提意见,我们再不断去调整和完善这些主要功能,或者开发其它次要功能,使软件开发以一种进化式的方式进行下去。
采用持续集成的方式,使软件开发中利益攸关的各方随时可以了解软件开发的进度,以可视化的方式看到软件开发的成果,及时纠正软件开发过程中的问题。更重要的是,所有利益攸关方中最重要的一方——客户,由于自身的局限描述不清自己的需求,通过可视化的方式一次一次看见可运行的软件,更直观地提出自己的意见,使自己的需求越来越清晰,并有效地告知开发者。而我们作为开发中,通过这种方式,使我们有更多的机会与客户有效沟通,从而对业务领域理解越来越深刻,也使我们的开发成果始终有客户确认,与客户的需求保持一致。即使有时出现偏差,也能及时得到纠正。最终,我们交付的软件必然是客户满意的。
由此看来,迭代式开发与传统开发,其开发的过程差异真的不小。
- 浏览: 144245 次
- 性别:
- 来自: 广州
最新评论
-
lvliang169:
码农通常会被亲戚、家人、朋友认为是修电脑的
深有同感啊、、、、 ...
关于程序猿,你不知道的15件事
相关推荐
《敏捷开发知识体系》面向敏捷实践者学习敏捷知识和敏捷软件开发企业进行敏捷转型的需要,旨在帮助个人更快地掌握敏捷开发知识,帮助企业更好地实施敏捷转型。主要内容包括:敏捷开发的哲学理念、价值观、敏捷开发...
不幸的是哪怕一点点的改动都会打破迭代开发。如果你选对了python的版本,你可以专心做事,幸运的避免了这个问题。 来自MoinMoin项目的Thomas Waldmann通过我的python-modernize跑jinja2,并且统一了代码库,能同时跑...
对 Ri 进行特征分析并估计新的变量公共性。 迭代继续,直到公共估计的最大变化小于收敛标准(默认为 0.001),给出达到的迭代次数; 它还给出了残差矩阵,这是原始相关性与因子模型的相关性结构之间差异的结果。 ...
平台开发与测试:根据需求分析结果,开发线上平台,并进行测试和优化,确保平台的稳定性和易用性。 培训与推广:对员工进行数字化技能培训,提高员工的数字化素养;通过线上线下渠道进行宣传推广,吸引顾客使用线上...
对 Ri 进行特征分析并估计新的变量公共性。 迭代继续,直到公共估计的最大变化小于收敛标准(默认为 0.001),给出达到的迭代次数; 它还给出了残差矩阵,这是原始相关性与因子模型的相关性结构之间差异的结果。 ...
范例2-2 求长整型整数的绝对值 399 ∷相关函数:labs函数 2.1.2 求浮点数的绝对值 400 范例2-2 求浮点数的绝对值 400 ∷相关函数:fabs函数 2.1.4 求反余弦 400 范例2-4 求反余弦 400 ∷相关函数:acos函数 ...
Coye (2015) 开发并拥有版权 这是该工具的第三个版本。 在此版本中,我通过应用迭代精明边缘改进了分割到图像蒙版。 这具有改进掩膜和原始病变之间的轮廓匹配的额外好处。 下面概述的方法是一种新的病灶分割方法。...
通过 CORDIC 算法计算 sqrt (x^2 + y^2) 和 atan (y/x)。 此函数执行 9 次迭代
24.1.2 增量与迭代开发 .......... 5 24.2 四则运算数学模型的建立 . 8 24.2.1 四则运算表达式 .......... 8 24.2.2 四则运算表达式解析算法分析 ............ 9 24.2.3 数据结构与算法的面向对象设计 ...... 11...
Experiment Dashboard是一个简单的jQuery应用程序,可从Google电子表格加载数据并显示一个想法表及其相应的实验,以帮助跟踪进度和迭代。 实验仪表板需要jQuery和Mustache.js 入门 创建一个Google电子表格 实验仪...
:hammer_and_wrench: 安装与设置安装依赖项npm install 启动开发服务器npm run dev :rocket: 部署部署静态站点: 转到package.json并确保将构建脚本设置为next build && next export 运行构建脚本npm run build
此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...
实用程序 Float2Qpt 允许... 函数[FxdPt, QI, QF] = Float2Qpt(num,varargin) % 计算浮点数“num”的定点近似Q 定点格式中的 % - Q(QI.QF) % FxdPt - 是定点覆盖值% QI - 是 num 范围所需的迭代器位数% QF - 是指定 ep
第四,PCB裸板回板及物料采购到货后由焊工焊好1~2块单板,作单板调试,对原理设计中的各功能进行调测,必要时修改原理图并作记录。第五,软硬件系统联调,一般的单板需硬件人员、单板软件人员的配合,特殊的单板...
使用算法的 10 次迭代将 p 的点与点 q 对齐。 然后使用转换应用R*p + repmat(T,1,length(p)); 该文件实现了点对点和点对平面以及一些其他功能,例如外推、加权函数、边缘点拒绝等。 有关 ICP 算法和实现的变体的...