前面我们提到了迭代式开发的巨大优势,它可以降低我们软件开发的巨大风险,它可以使我们把握用户的真正需求,它可以使我们从错误与偏差中及时纠正过来,那么我们应该如何进行迭代式开发呢?要回答这个问题,我们首先要弄清迭代式开发与传统的瀑布式开发的差别在哪里。
1.需求分析的差别
与传统的软件开发一样,迭代式开发同样需要与客户进行一个充分的需求分析。但与传统的软件开发不一样,迭代式开发不要求初期的需求分析是一个完全的需求分析。它承认需求分析需要一个过程,它承认需求的变化(或者说需求是一个进化的过程)。所以,在迭代式开发中,起初的需求分析只要进行到当时的阶段能够理解到的程度就可以了,而不是瀑布式开发那样需要完成所有的需求分析并最终确认下来。至于其它还没有分析到的内容,我们会在每个迭代的需求阶段逐渐加深理解,逐渐细化,直至最终完成软件的开发。因此,迭代式开发的需求分析始终贯穿整个软件开发的过程。
2.软件开发的差别
迭代式开发的软件开发阶段,与传统软件开发的方式存在着巨大的差异,迭代式软件开发采用的是“持续集成(Continuous Build)”的软件开发方式。传统的开发方式,当需求被确认下来并开始软件开发时,首先进行的工作是分模块进行开发,就如同车间生产一样,不同的模块被分配到了不同的小组或个人进行分头开发。在此期间,谁都不能拿出可运行的软件交付物,直到开发中后期的集成阶段。而迭代式开发不同,它将整个开发过程分为了数个迭代,并且在每个迭代结束时要交付可执行的软件,正因为如此,迭代式开发采用持续集成的方式。
持续集成的基本思想就是每个人每天完成的开发工作都能立即集成为一个可运行的软件产品。为了实现持续集成,我们必须改变我们的开发顺序。传统的开发顺序,首先是开发并完善各个子模块。当各个子模块都完成开发以后,才最终组装并集成为一个可运行的软件。采用这种顺序开发不可能保证持续集成。迭代式开发,在初次确认业务需求以后,首先开发的是软件最主要最基本的功能,在开发这些功能时也往往只考虑主流程而忽略分支流程。采用这种方式,可以在最短时间内交付可以运行的软件。之后我们交给客户去体验、去确认、给我们提意见,我们再不断去调整和完善这些主要功能,或者开发其它次要功能,使软件开发以一种进化式的方式进行下去。
采用持续集成的方式,使软件开发中利益攸关的各方随时可以了解软件开发的进度,以可视化的方式看到软件开发的成果,及时纠正软件开发过程中的问题。更重要的是,所有利益攸关方中最重要的一方——客户,由于自身的局限描述不清自己的需求,通过可视化的方式一次一次看见可运行的软件,更直观地提出自己的意见,使自己的需求越来越清晰,并有效地告知开发者。而我们作为开发中,通过这种方式,使我们有更多的机会与客户有效沟通,从而对业务领域理解越来越深刻,也使我们的开发成果始终有客户确认,与客户的需求保持一致。即使有时出现偏差,也能及时得到纠正。最终,我们交付的软件必然是客户满意的。
由此看来,迭代式开发与传统开发,其开发的过程差异真的不小。
一次迭代式开发的研究:软件开发的风险
一次迭代式开发的研究:什么是迭代式开发
一次迭代式开发的研究:怎样进行迭代式开发
一次迭代式开发的研究:迭代开发从这里开始
一次迭代式开发的研究:准确的工作量评估
一次迭代式开发的研究:功能的优先级评估
一次迭代式开发的研究:一个迭代式项目计划
一次迭代式开发的研究:开始真正的工作
一次迭代式开发的研究:从容应对需求变更
一次迭代式开发的研究:需求变更的关键步骤
一次迭代式开发的研究:Where you are
(续)
分享到:
相关推荐
RUP迭代式开发全中文资料---强烈推荐
近几年,研究者扩展和改进原始MapReduce,已开发了若干迭代式MapReduce以更好地为大数据处理而支持迭代计算。对迭代式MapReduce编程框架进行综合评述,较详细地阐述了这些研究成果,给出了它们各自的基本思想,并...
软件迭代开发计划模板,项目管理文档参考用
RUP迭代开发过程,喜欢研究面向对象的软件开发模式的朋友可以看看。
本文档是迭代开发流程图,详细介绍了迭代开发的具体流程和细节!
NULL 博文链接:https://momoliu.iteye.com/blog/1745110
Rational迭代化软件开发
迭代软件开发流程.doc
迭代开发相关技术文档,比较迭代开发与传统CMMI开发模式的差异
结合互信息度理论,提出一种基于背景学习的迭代式框架,在此基础上通过对分词数据预处理来改进传统的基于朴素贝叶斯模型的文本分类算法,并使用新浪网不同类别数据对提出的迭代式框架进行实验评估,实验结果表明提出...
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。 迭代器只能往前不会后退。 1. 创建迭代器对象 实例:基于list列表创建迭代器,使用next()依次获取list列表的前两个元素,并输出结果。 具体...
Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。Scrum在英语的意思是橄榄球里的争球。虽然Scrum是为管理软件开发项目而开发的,它同样可以用于运行软件维护团队,或者作为计划管理方法:Scrum ofScrums....
使用金字塔分解和迭代细化,计算OF。 包括一个演示和一篇彻底解释该方法的论文。
本文的目的是介绍一种可实践操作的迭代化开发方法,这种开发方法描述了如何以一种简单实用的方法来进行迭代化开发。通过采用本文所描述的迭代化开发的这种方法,能够降低项目组引入迭代化开发的难度和复杂度,从而尽...
自己整理编写的软件开发流程与质量管理的资料,具有实战意义。
新型的软件开发流程 采用迭代化开发控制项目风险
Rational统一软件开发过程迭代开发技术白皮书,对RUP有什么问题可与我交流。study1860@163.com
敏捷迭代开发,关于敏捷开发的详细介绍~~~ 软件工程的经典哦~~~
敏捷迭代开发,新思维
需求驱动的迭代开发过程 需求驱动的迭代开发过程