
几种常见的软件开发模型分析.docx
8页几种常见的软件开发模型分析概述软件开发模型(Software Development Model)是指软件开发全 部过程、活动和任务的结构框架软件开发包括需求、设计、编码、 测试和维护阶段软件开发模型能清晰、直观地表达软件开发全过程,明确规定了 要完成的主要活动和任务,用来作为软件项目工作的基础对于不同 的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以 及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以 及允许采用不同的软件工具和不同的软件工程环境最早出现的软件开发模型是1970年W・Royce提出的瀑布模型 该模型给出了固定的顺序,将生存期活动从上一个阶段向下一个阶段 逐级过渡,如同流水下泻,最终得到所开发的软件产品,投入使用 但计算拓广到统计分析、商业事务等领域时,大多数程序采用高级语 言(如 FORTRAN、COBOL 等)编写瀑布模式模型也存在着缺乏灵活 性、无法通过并发活动澄清本来不够确切的需求等缺点 常见的软件 开发模型还有演化模型、螺旋模型、喷泉模型、智能模型等典型的开发模型1. 边做边改模型(Build-and-Fix Model);2. 瀑布模型(Waterfall Model);3. 快速原型模型(Rapid Prototype Model);4. 增量模型(In creme ntal Model);5. 螺旋模型(Spiral Model);6. 演化模型(incremental model);7. 喷泉模型(fountain model);8. 智能模型(四代技术(4GL));9. 混合模型(hybrid model)1.边做边改模型(Build-and-Fix Model)遗憾的是,许多产品都是使用 "边做边改"模型来开发的。
在这种 模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一 次又一次地不断被修改. 在这个模型中,开发人员拿到项目立即根 据需求编写程序,调试通过后生成软件的第一个版本在提供给用户 使用后,如果程序出现错误,或者用户提出新的要求,开发人员重新 修改代码,直到用户满意为止这是一种类似作坊的开发方式,对编写几百行的小程序来说还不 错,但这种方法对任何规模的开发来说都是不能令人满意的,其主要 问题在于:(1)缺少规划和设计环节,软件的结构随着不断的修改越来越糟, 导致无法继续修改;(2)忽略需求环节,给软件开发带来很大的风险;(3) 没有考虑测试和程序的可维护性,也没有任何文档,软件 的维护十分困难2.瀑布模型(Waterfall Model)早期,它一直是唯一被广泛采用的软件开发模型瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、 程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自 上而下、相互衔接的固定次序,如同瀑布流水,逐级下落在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当 前活动接受上一项活动的工作结果,实施完成所需的工作内容当前 活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项 活动的输入,继续进行下一项活动,否则返回修改。
瀑布模型强调文档的作用,并要求每个阶段都要仔细验证但是, 这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几 乎被业界抛弃,其主要问题在于:(1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大 地增加了工作量;(2)由于开发模型是线性的,用户只有等到整个过程的末期才能 见到开发成果,从而增加了开发的风险;(3) 早期的错误可能要等到开发后期的测试阶段才能发现,进 而带来严重的后果3. 快速原型模型(Rapid Prototype Model)我们应该认识到,"线性"是人们最容易掌握并能熟练应用的思想 方法当人们碰到一个复杂的 "非线性"问题时,总是千方百计地将其 分解或转化为一系列简单的线性问题,然后逐个解决一个软件系统 的整体可能是复杂的,而单个子程序总是简单的,可以用线性的方式 来实现,否则干活就太累了线性是一种简洁,简洁就是美当我们 领会了线性的精神,就不要再呆板地套用线性模型的外表,而应该用 活它例如增量模型实质就是分段的线性模型,螺旋模型则是接连的 弯曲了的线性模型,在其它模型中也能够找到线性模型的影子快速原型模型的第一步是建造一个快速原型,实现客户或未来的 用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发 软件的需求。
通过逐步调整原型使其满足客户的要求,开发人员可以 确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满 意的软件产品显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需 求不明确带来的开发风险,具有显著的效果快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了 客户的真正需求,所建造的原型将被丢弃因此,原型系统的内部结 构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反 映客户的需求我司快速开发原型产品:.増量i与建造大厦相同,软件也是一步一步建造起来的在增量模型中, 软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构4. 增量模型(In creme ntal Model)件是由多种相互作用的模块所形成的提供特定功能的代码片段构成增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风 险但是,增量模型也存在以下缺陷:(1)由于各个构件是逐渐并入已有的软件体系结构中的,所以加 入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体 系结构。
2) 在开发过程中,需求的变化是不可避免的增量模型的灵 活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型, 但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性在使用增量模型时,第一个增量往往是实现基本需求的核心产品核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布这个过程在每个增量发 布后不断重复,直到产生最终的完善产品例如,使用增量模型开发字处理软件可以考虑,第一个增量发 布基本的文件管理、编辑和文档生成功能,第二个增量发布更加完善 的编辑和文档生成功能,第三个增量实现拼写和文法检查功能,第四 个增量完成高级的页面布局功能5. 螺旋模型(Spiral Model)1988年,Barry Boehm正式发表了软件系统开发的"螺旋模型",它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风 险分析,特别适合于大型复杂的系统螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下 活动: (1) 制定计划:确定软件目标,选定实施方案,弄清项 目开发的限制条件;(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;(3) 实施工程:实施软件开发和验证;(4) 客户评估:评价开发工作,提出修正建议,制定下一步计 划。
螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的 重用,有助于将软件质量作为特殊目标融入产品开发之中但是,螺 旋模型也有一定的限制条件,具体如下:(1)螺旋模型强调风险分析,但要求许多客户接受和相信这种分 析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的 大规模软件开发2)如果执行风险分析将大大影响项目的利润,那么进行风险分 析毫无意义,因此,螺旋模型只适合于大规模软件项目3)软件开发人员应该擅长寻找可能的风险,准确地分析风险, 否则将会带来更大的风险一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及 其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜 在的风险,有时需要通过建造原型来完成如果某些风险不能排除, 该方案立即终止,否则启动下一个开发步骤最后,评价该阶段的结 果,并设计下一个阶段6. 演化模型(incremental model)主要针对事先不能完整定义需求的软件开发用户可以给出待开 发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反 馈,以支持系统的最终设计和实现软件开发人员根据用户的需求, 首先开发核心系统当该核心系统投入运行后,用户试用之,完成他 们的工作,并提出精化系统、增强系统能力的需求。
软件开发人员根 据用户的反馈,实施开发的迭代过程第一迭代过程均由需求、设计、 编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管 理的子集在开发模式上采取分批循环开发的办法,每循环开发一部分的功 能,它们成为这个产品的原型的新增功能于是,设计就不断地演化 出新的系统 实际上,这个模型可看作是重复执行的多个“瀑布模 型”演化模型”要求开发人员有能力把项目的产品需求分解为不同 组,以便分批循环开发这种分组并不是绝对随意性的,而是要根据 功能的重要性及对总体设计的基础结构的影响而作出判断有经验指 出,每个开发循环以六周到八周为适当的长度7. 喷泉模型(fountain model,(面向对象的生存期模型,OO模 型))质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个 生存期中还可以嵌入子生存期就像水喷上去又可以落下来,可以落 在中间,也可以落在最底部8. 智能模型(四代技术(4GL))智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏 幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使 开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些 软件自动地生成为源代码。
这种方法需要四代语言(4GL )的支持 4GL 不同于三代语言,其主要特征是用户界面极端友好,即使没有受 过训练的非专业程序员,也能用它编写程序;它是一种声明式、交互 式和非过程性编程语言4GL还具有高效的程序代码、智能缺省假设、 完备的数据库和应用程序生成器目前市场上流行的4GL(如Foxpro 等)都不同程度地具有上述特征但 4GL 目前主要限于事务信息系统 的中、小型应用程序的开发9. 混合模型(hybrid model)过程开发模型又叫混合模型(hybrid model),或元模型(meta-model),把几种不同模型组合成一种混合模型,它允许一个 项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型) 实际上,一些软件开发单位都是使用几种不同的开发方法组成他们自 己的混合模型各种模型的比较 每个软件开发组织应该选择适合于该组织的软件开发模型,并且 应该随着当前正在开发的特定产品特性而变化,以减小所选模型的缺 点,充分利用其优点几种常见模型的优缺点:瀑布模型:文档驱动,系统可能不满足客户的需求; 快速原型模型;关注满足客户需求,可能导致系统设计差、效率 低,难于维护;增量模型:开发早期反馈及时,易于维护,需要开放式体系结构, 可能会设计差、效率低;螺旋模型:风险驱动,人员需要有经验且经过充分训练。












