对象模型是什么⾯向对象⼏种常见开发模型详解
(1) 瀑布模型(waterfall model)
瀑布模型核⼼思想是按⼯序将问题化简,将功能的实现与设计分开,便于分⼯协作,即采⽤结构化的分析与设计⽅法将逻辑实现与物理实现分开。将软件⽣命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运⾏维护等六个基本活动,并且规定了它们⾃上⽽下、相互衔接的固定次序,如同瀑布流⽔,逐级下落。从本质来讲,它是⼀个软件开发架构,开发过程是通过⼀系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产⽣循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上⼀个阶段并进⾏适当的修改,开发进程从⼀个阶段“流动”到下⼀个阶段,这也是瀑布开发名称的由来。
瀑布模型是最早出现的软件开发模型,在软件⼯程中占有重要的地位,它提供了软件开发的基本框架。其过程是从上⼀项活动接收该项活动的⼯作对象作为输⼊,利⽤这⼀输⼊实施该项活动应完成的内容给出该项活动的⼯作成果,并作为输出传给下⼀项活动。同时评审该项活动的实施,若确认,则继续下⼀项活动;否则返回前⾯,甚⾄更前⾯的活动。对于经常变化的项⽬⽽⾔,瀑布模型毫⽆价值。
(2) 快速原型模型(原型模式)prototype model
原型是指模拟某种产品的原始模型,在其他产业中经常使⽤。软件开发中的原型是软件的⼀个早期可运⾏的版本,它反映了最终系统的重要特性。
快速原型模型⼜称原型模型,它是增量模型的另⼀种形式;它是在开发真实系统之前,构造⼀个原型,在该原型的基础上,逐渐完成整个系统的开发⼯作。快速原型模型的第⼀步是建造⼀个快速原型,实现客户或未来的⽤户与系统的交互,⽤户或客户对原型进⾏评价,进⼀步细化待开发软件的需求。通过逐步调整原型使其满⾜客户的要求,开发⼈员可以确定客户的真正需求是什么;第⼆步则在第⼀步的基础上开发客户满意的软件产品。
快速原型模型的思想产⽣及原理
1、快速原型模型思想的产⽣
由于种种原因,在需求分析阶段得到完全、⼀致、准确、合理的需求说明是很困难的,在获得⼀组基本需求说明后,就快速地使其“实现”,通过原型反馈,加深对系统的理解,并满⾜⽤户基本要求,使⽤户在试⽤过程中受到启发,对需求说明进⾏补充和精确化,消除不协调的系统需求,逐步确定各种需求,从⽽获得合理、协调⼀致、⽆歧义的、完整的、现实可⾏的需求说明。⼜把快速原型思想⽤到软件开发的其他阶段,向软件开发的全过程扩展。即先⽤相对少的成本,较短的周期开发⼀个简单的、但可以运⾏的系统原型向⽤户演⽰或让⽤户试⽤,以便及早澄清并检验⼀些主要设计策略,在此基础上再开
发实际的软件系统。
2、快速原型模型的原理
快速原型是利⽤原型辅助软件开发的⼀种新思想。经过简单快速分析,快速实现⼀个原型,⽤户与开发者在试⽤原型过程中加强通信与反馈,通过反复评价和改进原型,减少误解,弥补漏洞,适应变化,最终提⾼软件质量。
快速原型模型的类型
根据原型的不同作⽤,有三类原型模型:
1、探索型原理
这种类型的原型是把原型⽤于开发的需求分析阶段,⽬的是要型清⽤户的需求,确定所期望的特性,并探索各种⽅案的可⾏性。它主要针对开发⽬标模糊,⽤户与开发都对项⽬都缺乏经验的情况,通过对原型的开发来明确⽤户的需求。
2、实验型原型
这种原型主要⽤于设计阶段,考核;实现⽅案是否合适,能否实陋。对于⼀个⼤型系统,若对设计⽅案⼼中没有把握时,可通过这种原型来证实设计⽅案的正确性。
3、演化型原型
这种原型主要⽤于及早向⽤户提交⼀个原型系统,该原型系统或者包含系统的框架,或者包含系统的主要功能,在得到⽤户的认可后,将原型系统不断扩充演变为最终的软件系统。它将原型的思想扩展到软件开发的全过程。
快速原型模型的运⽤⽅式
由于运⽤原型的⽬的和⽅式不同,在使⽤原型时也采取不同的策略,有抛弃策略和附加策略。
1、抛弃策略是将原型⽤于开发过程的某个阶段,促使该阶段的开发结果更加完整、准确、⼀致、可靠,该阶段结束后,原型随之作废。探索型和实验型就是采⽤此策略的。
2、附加策略是将原型⽤于开发的全过程,原型由最基本的核⼼开始,逐步增加新的功能和新的需求,反复修改反复扩充,最后发展为⽤户满意的最终系统,演化型快速原型就是采⽤此策略。
采⽤何种形式、何种策略运⽤快速原型主要取决于软件项⽬的特点、⼈员素质、可供⽀持的原型开发⼯具和技术等,这要根据实际情况的特点来决定。
快速原型模型的开发步骤
1、快速分析
在分析⼈员与⽤户密切配合下,迅速确定系统的基本需求,根据原型所要体现的特征描述基本需求以满⾜开发原型的需要。
2、构造原型
在快速分析的基础上,根据基本需求说明尽快实现⼀个可⾏的系统。这⾥要求具有强有⼒的软件⼯具的⽀持,并忽略最终系统在某些细节上的要求,如安全性、坚固性、例外处理等等,主要考虑原型系统能够充分反映所要评价的特性,⽽暂时删除⼀切次要内容。
3、运⾏原型
这是发现问题、消除误解、开发者与⽤户充分协调的⼀个步骤。
4、评价原型
在运⾏的基础上,考核评价原型的特性,分析运⾏效果是否满⾜⽤户的愿望,纠正过去交互中的误解
与分析中的错误,增添新的要求,并满⾜因环境变化或⽤户的新想法引起的系统要求变动,提出全⾯的修改意见。
5、修改
根据评价原型的活动结果进⾏修改。若原型未满⾜需求说明的要求,说明对需求说明存在不⼀致的理解或实现⽅案不够合理,则根据明确的要求迅速修改原型。
(3) 增量模型 (Incremental Model)
增量模型融合了瀑布模型的基本成分(重复应⽤)和原型实现的迭代特征,该模型采⽤随着⽇程时间的进展⽽交错的线性序列,每⼀个线性序列产⽣软件的⼀个可发布的“增量”。当使⽤增量模型时,第1个增量往往是核⼼的产品,即第1个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每⼀个增量的使⽤和评估都作为下⼀个增量发布的新特征和功能,这个过程在每⼀个增量发布后不断重复,直到产⽣了最终的完善产品。增量模型强调每⼀个增量均发布⼀个可操作的产品。采⽤增量模型的软件过程如图1-8所⽰。
增量模型与原型实现模型和其他演化⽅法⼀样,本质上是迭代的,但与原型实现不⼀样的是其强调每⼀个增量均发布⼀个可操作产品。早期的增量是最终产品的“可拆卸”版本,但提供了为⽤户服务的功能,
并且为⽤户提供了评估的平台。增量模型的特点是引进了增量包的概念,⽆须等到所有需求都出来,只要某个需求的增量包出来即可进⾏开发。虽然某个增量包可能还需要进⼀步适应客户的需求并且更改,但只要这个增量包⾜够⼩,其影响对整个项⽬来说是可以承受的。
图—采⽤增量模型的软件过程
采⽤增量模型的优点是⼈员分配灵活,刚开始不⽤投⼊⼤量⼈⼒资源。如果核⼼产品很受欢迎,则可增加⼈⼒实现下⼀个增量。当配备的⼈员不能在设定的期限内完成产品时,它提供了⼀种先推出核⼼产品的途径。这样即可先发布部分功能给客户,对客户起到镇静剂的作⽤。此外,增量能够有计划地管理技术风险。增量模型的缺点是如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析,这种模型将功能细化后分别开发的⽅法较适应于需求经常改变的软件开发过程。
四、什么是螺旋模型 (spiral model)
1988年,巴利·玻姆Barry Boehm正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于⼤型复杂的系统。
螺旋模型采⽤⼀种周期性的⽅法来进⾏系统开发。这会导致开发出众多的中间版本。使⽤它,项⽬经理在早期就能够为客户实证某些概念。该模型是快速原型法,以进化的开发⽅式为中⼼,在每个项⽬阶
段使⽤瀑布模型法。这种模型的每⼀个周期都包括需求定义、风险分析、⼯程实现和评审4个阶段,由这4个阶段进⾏迭代。软件开发过程每迭代⼀次,软件开发⼜前进⼀个层次。采⽤螺旋模型的软件过程如下图所⽰:
螺旋模型基本做法是在“瀑布模型”的每⼀个开发阶段前引⼊⼀个⾮常严格的风险识别、风险分析和风险控制,它把软件项⽬分解成⼀个个⼩项⽬。每个⼩项⽬都标识⼀个或多个主要风险,直到所有的主要风险因素都被确定。
螺旋模型强调风险分析,使得开发⼈员和⽤户对每个演化层出现的风险有所了解,继⽽做出应有的反应,因此特别适⽤于庞⼤、复杂并具有⾼风险的系统。对于这些系统,风险是软件开发不可忽视且潜在的不利因素,它可能在不同程度上损害软件开发过程,影响软件产品的质量。减⼩软件风险的⽬标是在造成危害之前,及时对风险进⾏识别及分析,决定采取何种对策,进⽽消除或减少风险的损害。
螺旋模型的优缺点
1、螺旋模型的优势包括:
1)设计上的灵活性,可以在项⽬的各个阶段进⾏变更。
2)以⼩的分段来构建⼤型系统,使成本计算变得简单容易。
3)客户始终参与每个阶段的开发,保证了项⽬不偏离正确⽅向以及项⽬的可控性。
4)随着项⽬推进,客户始终掌握项⽬的最新信息 , 从⽽他或她能够和管理层有效地交互。
5)客户认可这种公司内部的开发⽅式带来的良好的沟通和⾼质量的产品。
螺旋模型很⼤程度上是⼀种风险驱动的⽅法体系,因为在每个阶段之前及经常发⽣的循环之前,都必须⾸先进⾏风险评估。在实践中,螺旋法技术和流程变得更为简单。迭代⽅法体系更倾向于按照开发/设计⼈员的⽅式⼯作,⽽不是项⽬经理的⽅式。螺旋模型中存在众多变量,并且在将来会有更⼤幅度的增长,该⽅法体系正良好运作着。下表是螺旋法能够解决的各种问题:
经常遇到的问题 螺旋模型的解决⽅案
⽤户需求不够充分 允许并⿎励⽤户反馈信息
沟通不明 在项⽬早期就消除严重的曲解
刚性的体系(Overwhelming architectures) 开发⾸先关注重要的业务和问题
主观臆断 通过测试和质量保证,作出客观的评估
潜在的不⼀致 在项⽬早期就发现不⼀致问题
糟糕的测试和质量保证 从第⼀次迭代就开始测试
采⽤瀑布法开发 在早期就出并关注风险
2、但是,螺旋模型并不是⽐其他模型拥有绝对优越,事实上,这种模型也有其⾃⾝的如下缺点。
1)采⽤螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较⼤的项⽬开发中,如果未能够及时标识风险,势必造成重⼤损失。
2)过多的迭代次数会增加开发成本,延迟提交时间。
五、喷泉模型(fountain model)
喷泉模型是⼀种以⽤户需求为动⼒,以对象为驱动的模型,主要⽤于采⽤对象技术的软件开发项⽬。该模型认为软件开发过程⾃下⽽上周期的各阶段是相互迭代和⽆间隙的特性。软件的某个部分常常被重复⼯作多次,相关对象在每次迭代中随之加⼊渐进的软件成分。⽆间隙指在各项活动之间⽆明显边界,如分析和设计活动之间没有明显的界限,由于对象概念的引⼊,表达分析、设计、实现等活动只⽤对象类和关系,从⽽可以较为容易地实现活动的迭代和⽆间隙,使其开发⾃然地包括复⽤。
喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发⼈员可以同步进⾏开发。其优点是可以提⾼软件项⽬开发效率,节省开发时间,适应于⾯向对象的软件开发过程。由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要⼤量的开发⼈员,因此不利于项⽬的管理。此外这种模型要求严格管理⽂档,使得审核的难度加⼤,尤其是⾯对可能随时加⼊各种信息、需求与资料的情况。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论