文档介绍:第1章
什么是什么是迭代开发
““要迭代和增量开发有助于我们打造完美获得与事实相符的业务解决方案,就必须采用迭代和增量开发方法。””
引自选自《动态系统开发方法论》Dynamic systems Development Methodology中的第五原则:““动态系统开发方法论””(本书由Addison-Wesley于1997年出版,作者是Jennifer Stapleton著)
在前言中中曾提到过讨论过,为了能够在在变幻莫测的现实环境不确定的世界中,以可预期方式交付结果,““对迭代””方法应运而生的需求来自于对可预期的交付结果的需求。因为无法期待这种““不确定性””将持续存在消除,我们所以需要采用一种与之抗衡的技术,这种技术就是方法来管理不确定性。迭代和增量开发就是向我们提供了这样一种方法,,借助这种技术赋予的力量,使得我们能够克服够管理这种不确定性,或者至少能系统化降低地将不确定性,使其处于可降到能够充分控制的范围内围,以达到从而指向预期的目标结果。
那么那么,接下来的问题就是,迭代和增量开发过程有什么特点?运用什么样的方法使得开发过程迭代化并且增量化。对一个项目而言,如果它以按迭代和增量方式开发项目运行到底意味着什么?《柯林斯考林现代英语词典》给对于词语单词““迭代(iterate)””和““增量(incremental)””iterate、iteration、iterative和incremental提供了下述的定义如下:
迭代 Iterate vt– ——反复说念和执行动作;。to utter or do repeatedly – iteration n. – iterative adj
增量Increment n – ——1.(1) 增加量amount of increase ;2. (2)变大,、增加a becoming greater or larger; increase – incremental adj。
假如以上术语沿用来自于单词最常用的词语含义见的用法,那么,那么以下问题接踵而至:通过重复做一些事情的迭代和以增量方式处理项目,以达到创建规模逐渐增大和更趋完整的产品项目,以便按以迭代和增量方式处理项目运作是什么意味着什么思?是要重复地做一些事情来生产日益庞大和更加完整的产品吗?
在本章中,我们将通过分析项目及其团队成员以的迭代和增量方式开展工作的含义,来回答上述问题。化运行的含义来陈述这个问题。为了审视迭代化运行方法,将我们站在最具代表性的参与者(项目经理、开发人员和客户等)将从大量最常用的角度视角(项目经理视角、开发人员视角、客户视角等)出发分析审视迭代原理,由此澄清和阐明明和解释我们对迭代和增量式开发的真义实际理解。
迭代与科学方法
人们会通过很多很多活动来开发解决方案都涉及针对某个问题提供一个解决方案。我们需要不得不先去了解问题,、收集潜在解决方案的要需求,并将这些要求之转转化为设计构思,然后是构建解决方案,最后是测试这个解决方案。这样的顺序十分常见相当正常,通常也是正确的。不过,在尝试扩如果诸如此类的问题接二连三地冒出来,我们就要增大上述流程的规模时(即严格按顺序:先是收集全部的要需求,而后完成做全部的设计,再去进行全面的开发,最后进行全面测试),问题会是严格地进行整个解决方案的线性测试。接二连三地冒出来。
相反,我们更需要像如果希望采取一个不同于上述方式的工作方式,那么不得不更像科学家那样去工作。现代科学方法遵循亲身建立在直接观察的原则查的原则上:人们先提出““理论假设””,然后是设计和执行相关的实验来,再进行实验来测试理论那些前面提出的假设。会根据通过判断这些测试结果,我们来推翻理论或确认理论的正确性就会否定这项假设或者肯定这项假设。
那么,我们如何在才能将这种方法应用到软件开发中领域应用此方法呢?在在某种意义上看,软件开发项目涉及的很多方面是““理论””,事物都是理论;或更准确地讲是需要予以的说,我们评估的应该对这些““断言假设””进行评估。““软件开发计划””本身就是由多这些个描述任务用时的断言假设组合而成,比如项目完成所需的时间。““要求””是描述适当解决方案的特点的断言。不能仅凭往往某些项目相关方利益相关方或主题主管专家的判断来确定要求是否有效声明的某项有效需求,恰好说明这些人并不正确。甚至,我们需要评估这些要需求,从而判断它他们是否能正确地描述针针对当前问题提出了合理的的解决方案。
此这些推理情况引导我们采用这样一种软件开发风格:通过设计和开发多个可可以明确论证的系统版本,的设计与开发,来重反复不断地验证质疑和评估这些计划方案内含的假设断言;会客观地评估系统的每一个版本都要通确认它过客观的评估来证明他们是否降低了项目的风