软件开发软件开发模型

软件开发软件开发模型

* 来源: * 作者: * 发表时间: 2020-07-23 0:15:46 * 浏览: 12
软件开发软件开发模型(SoftwareDevelopmentModel)是指软件开发的所有过程,活动和任务的结构框架。软件开发包括需求,设计,编码和测试阶段,有时还包括维护阶段。该软件开发模型可以清晰,直观地表达软件开发的整个过程,明确规定要完成的主要活动和任务,并可以作为软件项目工作的基础。对于不同的软件系统,您可以使用不同的开发方法,使用不同的编程语言和具有不同技能的人参与工作,使用不同的管理方法和方法等,并允许使用不同的软件工具和不同的软件项目。的环境。软件工程的主要链接包括人员管理,项目管理,需求分析,系统设计,程序设计,测试,维护等,如图所示。软件开发模型是软件过程的建模,即各个环节都与某个过程相连,整个过程可以像工厂的生产线一样以标准化的方式进行操作。较早出现的软件开发模型是Wbull和Royce在1970年提出的瀑布模型。该模型给出了固定的顺序,将生命周期活动从上一个阶段过渡到了下一个阶段,例如流动的水,最终得到了开发的软件。产品并投入使用。但是当计算扩展到统计分析,商务等领域时,大多数程序都是用高级语言编写的(例如FORTRAN,COBOL等)。瀑布模型还具有诸如缺乏灵活性以及无法通过并发活动来澄清固有不足需求之类的缺点。常见的软件开发模型包括演化模型,螺旋模型,喷泉模型,智能模型等。典型的开发模型典型的开发模型为:1. Build-and-FixModel,2. Waterfall Model,3. RapidPrototypeModel,4. Incremental模型(增量模型),5.螺旋模型,6.喷泉模型(喷泉模型),7.智能模型(四代技术(4GL)),8.混合模型(混合模型),9. RUP模型,10。 IPD模型1. Build-and-FixModel(Build-and-FixModel)许多产品都是使用“在执行时修改”和模型来开发的。在此模型中,既没有规格也没有设计,并且会根据客户的需要不断地不断修改软件。在此模型中,开发人员获取项目并根据要求立即编写程序,并在调试后生成软件版本。提供给用户后,如果程序中有错误或用户提出新请求,则开发人员将再次修改代码,直到用户满意为止。这是一种类似于车间的开发方法,非常适合编写数百行的小程序,但是这种方法对于任何规模的开发都不令人满意。主要问题是:(1)缺乏规划和设计联系,软件的结构随着不断的修改而变得越来越差,导致无法进行进一步的修改。 (2)忽略需求链接,给软件开发带来很大的风险;(3)不考虑测试和程序的可维护性,没有文档,软件的维护非常困难。 2.瀑布模型(WaterfallModel)1970年,温斯顿·罗伊斯提出了著名的“瀑布模型”。直到1980年代初,它一直是一种广泛使用的软件开发模型。如图所示,在瀑布模型中,软件生命周期分为六个基本活动:计划,需求分析,软件设计,程序编写,软件测试以及操作和维护,它们是自上而下且相互联系的。固定的序列像瀑布一样逐渐落下。在瀑布模型中,严格按照线性方式执行各种软件开发活动,而当前活动接受先前活动的工作结果并实现所需的工作内容。当前活动的工作结果需要验证。如果通过验证,则将结果用作输入在下一个活动中,并继续下一个活动,否则,返回修订。瀑布模型强调文档的作用,并且需要在每个阶段进行仔细的验证。但是,此模型的线性过程太理想了,不再适合现代软件开发模型。它几乎已被业界放弃。主要问题是:(1)每个阶段的划分是完全固定的,并且在阶段之间会生成大量文档。这大大增加了工作量。 (2)由于开发模型是线性的,因此用户只能看到开发结果,直到整个过程结束,这增加了开发的风险。 (3)早期的错误可能要等到以后的开发测试才能发现,只有在第一阶段才能发现,这会带来严重的后果。我们应该认识到“线性”是一种人们可以轻松掌握和熟练运用的思维方式。当人们遇到一个复杂的“非线性”问题时,他们总是尽一切可能将其分解或转化为一系列简单的线性问题,然后一个一个地解决。整个软件系统可能很复杂,但是单个子例程总是很简单,并且可以线性方式实现,否则它将很累人。线性是一种简单,简单是美。当我们理解线性的精神时,我们不应僵化地应用线性模型的外观,而应使用它。例如,增量模型本质上是分段线性模型,螺旋模型是连续弯曲的线性模型。线性模型的阴影也可以在其他模型中找到。 3.快速原型模型rapid快速原型模型的步骤是构建一个快速原型,以实现客户或未来用户与系统之间的交互。用户或客户评估原型,并进一步完善要开发的软件的要求。通过逐步调整原型以满足客户的需求,开发人员可以确定客户的实际需求,而第二步是开发客户满意的软件产品。显然,快速原型制作方法可以克服瀑布模型的缺点,降低软件需求不明确带来的开发风险,并具有显着的效果。快速原型制作的关键是尽快构建软件原型。一旦确定了客户的真正需求,所制造的原型将被丢弃。因此,原型系统的内部结构并不重要。重要的是必须快速建立原型,然后必须快速修改原型以反映客户需求。 4.增量模型(IncrementalModel)也称为演化模型。就像建造建筑物一样,该软件也会逐步构建。在增量模型中,软件被设计,实现,集成和测试为一系列增量组件。每个组件都由代码片段组成,这些代码片段提供了由各种交互模块形成的特定功能。增量模型并不在每个阶段都提供可运行的完整产品,而是可满足部分客户需求的可运行产品。整个产品被分解为几个组件,开发人员逐个组件交付产品。这样做的好处是软件开发可以更好地适应变化,并且客户可以不断看到开发的软件,从而降低了开发风险。但是,增量模型也有以下缺点:(1)由于每个组件都逐渐融入到现有的软件体系结构中,因此添加组件一定不能损坏已经构建的系统部分,这要求软件具有开放的系统结构。 (2)在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其比瀑布模型和快速原型模型更好地适应这种变化,但是在进行更改时也很容易退化为模型,从而失去了对软件过程的控制诚信。使用增量模型时,每个增量通常是满足基本需求的核心产品。核心产品交付用户后,下一个增量发展评估后形成了计划,其中包括修改核心产品和发布一些新功能。每次增量发布后都会重复此过程,直到生产出最终的完美产品为止。例如,使用增量模型来开发文字处理软件。可以认为一个增量释放基本的文件管理,编辑和文档生成功能,第二个增量释放更完整的编辑和文档生成功能,第三个增量实现拼写和语法检查功能,第四个增量完成高级页面布局功能。 5.螺旋模型(SpiralModel)1988年,Barry Boehm正式发布了用于软件系统开发的“螺旋模型”,该模型结合了瀑布模型和快速原型模型,强调了其他模型所忽略的风险分析,尤其适用于大型复杂系统。如图所示,螺旋模型沿螺旋执行了几次迭代。图中的四个象限代表以下活动:(1)制定计划:确定软件目标,选择实施计划并阐明项目开发的约束条件。 (2)风险分析:对选定的计划进行分析和评估,考虑如何识别和消除风险,(3)实施项目:实施软件开发和验证,(4)客户评估:评估开发工作,提出纠正建议,并制定下一步计划脚步。螺旋模型受风险驱动,强调替代方案和约束条件以支持软件重用,这有助于将软件质量作为特殊目标集成到产品开发中。但是,螺旋模型也有一定的局限性,如下:(1)螺旋模型强调风险分析,但是许多客户不容易接受并相信这种分析并做出相应的反应。因此,此模型通常适用于内部大型软件开发。 (2)如果风险分析会极大地影响项目的收益,那么风险分析就没有意义了。因此,螺旋模型仅适用于大型软件项目。 (3)软件开发人员应善于发现可能的风险并准确分析风险,否则会带来更大的风险。阶段是首先确定阶段的目标,完成这些目标的选择和约束,然后从风险的角度分析程序的开发策略,尝试消除各种潜在的风险,有时需要构建原型以完成。如果不能排除某些风险,则立即终止程序,否则将启动下一个开发步骤。稍后,评估此阶段的结果并设计下一阶段。 6.喷泉模型(fountainmodel)(也称为面向对象的寿命模型,OO模型)喷泉模型与传统的结构化寿命相比,具有更多的增量和迭代性质,寿命的各个阶段可以重叠和重复多次,并且生命周期可以嵌入到项目的整个生命周期中。就像喷洒的水会掉下来一样,它可能会掉到中间或底部。 7.智能模型(四代技术(4GL))智能模型具有一套工具(如数据查询,报告生成,数据处理,
扫描二维码关注我们
确 认