软件工程中软件开发模型总结

上传人:大米 文档编号:564847725 上传时间:2023-05-26 格式:DOCX 页数:7 大小:144.11KB
返回 下载 相关 举报
软件工程中软件开发模型总结_第1页
第1页 / 共7页
软件工程中软件开发模型总结_第2页
第2页 / 共7页
软件工程中软件开发模型总结_第3页
第3页 / 共7页
软件工程中软件开发模型总结_第4页
第4页 / 共7页
软件工程中软件开发模型总结_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《软件工程中软件开发模型总结》由会员分享,可在线阅读,更多相关《软件工程中软件开发模型总结(7页珍藏版)》请在金锄头文库上搜索。

1、软件工程之软件开发模型软件开发模型软件开发模型(Sof tware Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开 发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软 件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件 系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不 同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。类型简介敏捷开发模式简介是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快

2、速变化的 需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于非敏捷,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频 繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组 织方法,也更注重做为软件开发中人的作用。词源敏捷一词来源于2001年初美国犹他州雪鸟滑雪胜地的一次敏捷方法发起者和实践者(他们发 起组成了敏捷联盟)的聚会适用性在敏捷方法其独特之处以外,他和其他的方法也有很多共同之处,比如迭代开发,关注互动 沟通,减少中介过程的无谓资源消耗。通常可以在以下方面衡量敏捷方法的适用性:从产品角度 看,敏捷

3、方法适用于需求萌动并且快速改变的情况,如系统有比较高的关键性、可靠性、安全性 方面的要求,则可能不完全适合;从组织结构的角度看,组织结构的文化、人员、沟通泽决定了 敏捷方法是否适用。跟这些相关联的关键成功因素有:组织文化必须支持谈判人员彼此信任,人少但是精干,开发人员所作决定得到认可,环境设 施满足成员间快速沟通之需要。最重要的因素恐怕是项目的规模。规模增长,面对面的沟通就愈 加困难,因此敏捷方法更适用于较小的队伍,20、40人或者更少。大规模的敏捷软件开发尚处于 积极研究的阶段。另外的问题是项目初期的大量设想或快速的需求收集可能导致项目走入误区,特别是客户对 其自身需要毫无概念的情况下。与之

4、类似,人之天性很容易造成某个人成为主导并将项目目标和 设计引入错误方向的境况。开发者经常会把不恰当的方案授予客户,而直到最后出问题前都能获 得客户认同。虽然理论上快速交互的过程可以限制这些错误的发生,但前提是有效的负反馈,否 则错误会迅速膨胀。对比其它方法敏捷方法有时候被误认为是无计划性和纪律性的方法,实际上更确切的说法是敏捷方法强调 适应性而非预见性。适应性的方法集中在快速适应现实的变化。当项目的需求起了变化,团队应该迅速适应。这 个团队可能很难确切描述未来将会如何变化对比迭代方法相比迭代式开发两者都强调在较短的开发周期提交软件,敏捷方法的周期可能更短,并且更 加强调队伍中的高度协作。对比瀑

5、布式开发两者没有很多的共同点,瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求、 分析、设计、编码、测试的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计 文档,测试计划和代码审阅等等。瀑布式的主要的问题是它的严格分级导致的自由度降低,项目早期即作出承诺导致对后期需 求的变化难以调整,代价高昂。瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下 基本是不可行的。相对来讲,敏捷方法则在几周或者几个月的时间内完成相对较小的功能,强调的是能将尽早 将尽量小的可用的功能交付使用,并在整个项目周期中持续改善和增强。有人可能在这样小规模的范围内的每次迭代中使用瀑布式方法,另外的人

6、可能将选择各种工 作并行进行。瀑布模型最早出现的软件开发模型是1970年WRoyce提出的瀑布模型。该模型给出了固定的顺序, 将生存期活动从上一个阶段向下一个阶段逐级过渡,如同流水下泻,最终得到所开发的软件产品, 投入使用。但计算拓广到统计分析、商业事务等领域时,大多数程序采用高级语言(如FORTRAN、COBOL等)编写。瀑布模式模型也存在着缺乏灵活性、无法通过并发活动澄清本来不够确切的需求 等缺点。常见模型演化模型、螺旋模型、喷泉模型、智能模型等。典型的开发模型综述典型的开发模型有:1.边做边改模型(Build-and-Fix Model ) ; 2.瀑布模型(Waterfall Mode

7、l ); 3.快速原型模型(Rapid Pro tot ype Model ) ; 4.增量模型(Increme nt al Model ); 5.螺旋模型(Spiral Model ) ; 6.演化模型(incremental model) ; 7.喷泉模型(fountain model); 8.智能模型(四代技术(4GL) ) ; 9.混合模型(hybrid model )边做边改模型(Build-and-Fix Model )遗憾的是,许多产品都是使用边做边改模型来开发的。在这种模型中,既没有规格说明, 也没有经过设计,软件随着客户的需要一次又一次地不断被修改k边做边改型在这个模型中,开

8、发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本。 在提供给用户使用后,如果程序出现错误,或者用户提出新的要求,开发人员重新修改代码,直 到用户满意为止。这是一种类似作坊的开发方式,对编写几百行的小程序来说还不错,但这种方法对任何规模 的开发来说都是不能令人满意的,其主要问题在于:(1) 缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改;(2) 忽略需求环节,给软件开发带来很大的风险;(3) 没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难。瀑布模型(Waterfall Model )1970年Wins ton Royce提出了著名的瀑布

9、模型,直到80年代早期,它一直是唯一被广泛 采用的软件开发模型。瀑布模型瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工 作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结 果作为下一项活动的输入,继续进行下一项活动,否则返回修改。瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理 想化,已不再适合现代的软件开发模式,几乎被业界抛弃

10、,其主要问题在于:(1) 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;(2) 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加 了开发的风险;(3) 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。我们应该认识到,线性是人们最容易掌握并能熟练应用的思想方法。当人们碰到一个复杂 的非线性问题时,总是千方百计地将其分解或转化为一系列简单的线性问题,然后逐个解决。 一个软件系统的整体可能是复杂的,而单个子程序总是简单的,可以用线性的方式来实现,否则 干活就太累了。线性是一种简洁,简洁就是美。当我们领会了线性的精神,就不要再呆板地套

11、用 线性模型的外表,而应该用活它。例如增量模型实质就是分段的线性模型,螺旋模型则是接连的 弯曲了的线性模型,在其它模型中也能够找到线性模型的影子。快速原型模型(Rapid Pro tot ype Model )快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或 客户对原型进行评价,进一步细化待开发软件的需求。快速原型通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在 第一步的基础上开发客户满意的软件产品。显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。快速原型的关键在于尽可能快速地建

12、造出软件原型,一旦确定了客户的真正需求,所建造的 原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修 改原型,以反映客户的需求。增量模型(Incremental Model )又称演化模型。与建造大厦相同,软件也是一步一步建造起来的。在增量模型中,软件被作 为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的 提供特定功能的代码片段构成-C 1 |祁匕升 T片Ti 1,詔: i |斗科t点i-卜彳=口 1P&1 mih |十咨 卜2或詬 卜| 口口卜T呵增量模型增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求

13、的一个子集的可运 行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开 发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。但是,增量模 型也存在以下缺陷:(1)由于各个构件是逐渐并入已有的 软件体系结构中的,所以加入构件必须不破坏已构造 好的系统部分,这需要软件具备开放式的体系结构。(2)在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。在使用增量模型时,第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,

14、 经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程 在每个增量发布后不断重复,直到产生最终的完善产品。例如,使用增量模型开发字处理软件。可以考虑,第一个增量发布基本的文件管理、编辑和文档生成功能,第二个增量发布更加完善的编辑和文档生成功能,第三个增量实现拼写和文法检 查功能,第四个增量完成高级的页面布局功能。螺旋模型(Spiral Model)(去掉风险分析=迭代模型?)1988年,Barry Boehm正式发表了软件系统开发的螺旋模型,它将瀑布模型和快速原型模 型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。螺旋模型螺旋模型沿着螺线进

15、行若干次迭代,图中的四个象限代表了以下活动:(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;(3)实施工程:实施软件开发和验证;(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下:(1)螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不 容易的,因此,这种模型往往适应于内部的大规模软件开发。(2)如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋 模型只适合于大规模软件项目。(3)软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险 一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风 险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下 一个阶段。喷泉模型(fountain model )(也称面向对象的生存期模型,OO模型)喷泉模型

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号