迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。
重复执行一系列运算步骤,从前面的量依次求出后面的量的过程。此过程的每一次结果,都是由对前一次所得结果施行相同的运算步骤得到的。例如利用迭代法*求某一数学问题的解。
对计算机特定程序中需要反复执行的子程序*(一组指令),进行一次重复,即重复执行程序中的循环,直到满足某条件为止,亦称为迭代。
扩展资料
相关概念
函数
在数学中,迭代函数是在分形和动力系统中深入研究的对象。迭代函数是重复的与自身复合的函数,这个过程叫做迭代。
模型
迭代模型是RUP(Rational Unified Process,统一软件开发过程,统一软件过程)推荐的周期模型。
算法
迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。
方法
迭代的方式就有所不同,假如这个产品要求6个月交货,我在第一个月就会拿出一个产品来,当然,这个产品会很不完善,会有很多功能还没有添加进去,bug很多,还不稳定,但客户看了以后,会提出更详细的修改意见。
这样,你就知道自己距离客户的需求有多远,我回家以后,再花一个月,在上个月所作的需求分析、框架设计、代码、测试等等的基础上,进一步改进,又拿出一个更完善的产品来,给客户看,让他们提意见。
就这样,我的产品在功能上、质量上都能够逐渐逼近客户的要求,不会出现我花了大量心血后,直到最后发布之时才发现根本不是客户要的东西的情况。
优势
这样的方法很不错,但他也有自己的缺陷,那就是周期长、成本很高。在应付大项目、高风险项目——就比如是航天飞机的控制系统时,迭代的成本比项目失败的风险成本低得多,用这种方式明显有优势。
如果你是给自己的单位开发一个小MIS,自己也比较清楚需求,工期上也不过花上个把月的时间,用迭代就有点杀鸡用了牛刀,那还是瀑布模型更管用,即使是做得不对,顶多再花一个月重来,没什么了不起。
参考资料:百度百科-迭代
推荐于2017-06-05
给你一个标准的定义:
在RUP中,迭代被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。
这个定义太学究气,半天看不明白。这样解释可能更容易理解:
我们开发一个产品,如果不太复杂,会采用瀑布模型,简单的说就是先需求定义,然后构建框架,然后写代码,然后测试,最后发布一个产品。
这样,几个月过去了,直到最后一天发布时,大家才能见到一个产品。
这样的方式有明显的缺点,假如我们对用户的需求判断的不是很准确时——这是很常见的问题,一点也不少见——你工作了几个月甚至是几年,当你把产品拿给客户看时,客户往往会大吃一惊,这就是我要的东西吗?
迭代的方式就有所不同,假如这个产品要求6个月交货,我在第一个月就会拿出一个产品来,当然,这个产品会很不完善,会有很多功能还没有添加进去,bug很多,还不稳定,但客户看了以后,会提出更详细的修改意见,这样,你就知道自己距离客户的需求有多远,我回家以后,再花一个月,在上个月所作的需求分析、框架设计、代码、测试等等的基础上,进一步改进,又拿出一个更完善的产品来,给客户看,让他们提意见。
就这样,我的产品在功能上、质量上都能够逐渐逼近客户的要求,不会出现我花了大量心血后,直到最后发布之时才发现根本不是客户要的东西。
这样的方法很不错,但他也有自己的缺陷,那就是周期长、成本很高。在应付大项目、高风险项目——就比如是航天飞机的控制系统时,迭代的成本比项目失败的风险成本低得多,用这种方式明显有优势。
如果你是给自己的单位开发一个小MIS,自己也比较清楚需求,工期上也不过花上个把月的时间,用迭代就有点杀鸡用了牛刀,那还是瀑布模型更管用,即使是做得不对,顶多再花一个月重来,没什么了不起。
2013-04-29
很多人简单的把迭代理解为开发的分阶段进行。有些项目经理会这样说:我们打算通过4次迭代完成软件的开发,第一次迭代,完成需求分析和软件设计,第二次迭代,完成多少多少模块的开发,第三次,完成其他多少模块的开发,第四次,配置,部署,上线,测试,修正软件bug。在这里,虽然他们言必称“迭代”,但是这样的迭代和过去传统的瀑布型开发有多少区别?迭代开发是要分周期分阶段地进行,但是不能认为简单地把开发周期划分为几个不同的阶段就是迭代。
很多人对于迭代周期有一些误解,比如:认为迭代只适用于开发阶段,而需求分析和设计工作则不在此范围内。
认为迭代周期可以拉得很长,比如两个月,三个月,甚至一个季度,半年。
将需求分析,设计,开发,测试,部署,用户反馈,修改当作完整的迭代周期,并要求在前一阶段工作完全(或者大部分)完成以后再进行下一步工作(迭代)。
在一个迭代周期内,我们可以做什么事情呢?可以说:所有的事情。如果你认为迭代需要在需求分析完成之后才能开始,或者系统集成必须在所有迭代完成之后才可以进行,你会获得一个真正的瀑布流程开发。 一个迭代周期意味着对一些特定功能(用例)的探索。“探索”一词可能随情况不同而有不同的含义。对于抽象级别较高,模糊程度比较高的用例,我们需要通过和用户的讨论将它逐渐分解为更加清楚和清晰的用例。对于目前我们认为已经得到了详细定义的需求,需要选取合适的部分进行设计和实现,通过这些部分的实现,对需求定义和技术可行性进行反馈。对那些在上次迭代中已经开发完的模块,应该尽可能快速地让用户提出他们的意见,以便了解是否真正解决了用户面临的问题,以及还有没有可以改进的方面,再根据这些意见安排下一阶段的工作。 我们是否可以在开发进行之前把需求或者设计全部弄清楚呢?我认为很难。因为通常来讲,用户对于自己的需求只有一个模糊的概念。让我们假设一个饮食业的例子,有一天餐厅经理把你叫入办公室说:马上设计一个新的菜谱,这个菜谱是为某某特定人群定制的,你要让这些人感觉色香味俱全。不过在你把配料和烹调方法都设计出来之前,我们不打算让大厨来具体做这道菜,我们不允许失败,所以你的设计一定要一次成功,你可以用调查问卷,用户面谈等方法获取最终用户的需求,但是记住:你不能去做这道菜。 这样的事情你可能会觉得很滑稽,但是在软件业,类似的事情人们却认为是天经地义的。迭代允许我们将开发本身也作为需求探索的一部分,通过用户对已经实现功能的反馈我们和用户都会逐渐明白什么样的软件是我们最终想要开发的。所以,不要等到所有(或者大部分)的分析完了才开始开发,而是尽早对已经捕获到的需求进行细化,尽早开发,以获得反馈。 在安排迭代计划时,应该指明,这次迭代的目标是什么,在结束时应达到的里程碑是什么。如果有任务提前达到了这个里程碑,我们可以提前结束迭代,或者顺便在剩下的时间内安排其他的任务,但是要注意这种安排的合理性,不要因为这个而使得迭代周期被延长。 在一次迭代到达所设定的结束日期时,就必须审视各项任务是否达到了里程碑的要求,如果有任务没有达到,原因是什么,我们是否需要对需求和技术方案做出调整。对于没有达到里程碑要求的任务,我们可以采取的办法有两种:将剩余的工作列入下一次迭代计划中去,
将本次迭代的结束时间向后延迟,等待任务的完成
前一种办法适合于有很大工作量没有完成的情况,这可能也同时说明计划的制定有问题,在制定下次迭代计划时应该考虑对任务完成时间进行调整。后一种办法适合剩余工作量不是很大的情况。 通常来说,一次迭代完成以后应该有一个产品的新版本可用。这也就意味着:将集成和发布分散到每次迭代中去。借助于一些自动化工具(比如ant),我们甚至可以做到每日构建。 一个迭代周期应该有多长呢?这并没有一个统一的说法,而是应该视目标和可用的资源而定。但是,迭代周期不宜过长,也不宜过短。迭代周期过长的话,会延缓反馈的时间,可能将许多问题隐藏或是堆积了起来。迭代周期过短,会让人身心疲劳,事情难有大的成效。一般来说,迭代周期应该在2-6周之间。如果安排的迭代周期超过了两个月,你可能就必须审视一下迭代计划的合理性了。 不要认为下一次迭代应该和上次迭代的时间差不多,刻板地把所有迭代规定一个统一的时间是一个很坏的做法。但是你可以把以前迭代周期中的工作效率作为估算下次迭代时间的一个依据。 目标
一次迭代必须有明确的目标:我们希望通过这次迭代达到什么目的。在制定目标时,应该同时考虑另外一个问题:如何检查该目标是否已经达成。这就是所谓的“里程碑”。 迭代计划必须有明确而可行的目标。明确的意思是它应该是可度量的,不能太模糊,因为你很难检查一个模糊的目标是否达成。比如,我们可以说,这次迭代的目标是对xxx方面的需求作进一步细化和评审,完成xxx模块的开发以加入到软件的下一版本中去。这样的目标是明确而且可行的。反过来,如果我们这样说:我们要通过和用户的讨论明确绝大部分愿景,同时要有一个初步的开发。“绝大部分”和“初步”这样的词让人感到困惑:多少是绝大部分呢,在总量尚未明确的前提下,怎么能够知道完成的确是“绝大部分”而不是“一小部分”?“初步的开发”似乎告诉我们这次开发量比较小,但是具体开发哪个部分,或者开发到什么程度,并没有指出一个明确的概念。 由此产生了一个困惑,软件项目是一个不断探索的过程,我们怎么能够明确地对未来的事情作安排呢?譬如在项目初始调查用户愿景时,为了实现“明确”的目标,是否这样定义任务:完成20%的用户愿景调查? 很显然,用户愿景总量到底有多少我们并不知道,所以在这次迭代完成以后如果我们问:是否真的完成了20%而不是15%?很难得到答案。 为了避免出现这种情况,你必须换个角度来看问题,比如我们可以说:对xxx部门和yyy部门的用户做愿景调查。在迭代完成后,可以检查是否这两个部门所有用户的访谈,调查都已经完成,是否这些部门每个人都认为自己表达了全部的意思。