比较各种软件开发模型的特点(常用的软件开发模型有哪几种)
本篇文章给大家谈谈比较各种软件开发模型的特点,以及常用的软件开发模型有哪几种对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
比较几种软件开发模型的特点
这不是软件工程里的东西吗?到书上翻下不就有了。。网上搜下也很多。。
几种常见的软件开发模型
1、瀑布模型:用户需求一改,过程从上到下不可逆。(需求,分析,设计,实现,测试)
2、统一开发过程(USDP):是一个迭代、递增的开发过程;
每一次迭代均会越来越接近最终目标。
这种方式的优点:过程中需求的改变不会影响到整体项目开发,项目控制比较灵活。
降低成本;
便于更好地维护项目进度;
便于团队的协作开发;
便于适应用户需求的动态变化。
请总结各种SDLC模型的特点、适用哪些类型的应用软件开发。
1.瀑布模型:开发模型呈线性,所以当开发成果沿未经过测试时,用户无法看到软件的效果。
2.循环模型:为了描述软件开发过程中可能的回溯,尤其是维护阶段往往要经历上述各个阶段,采用循环模型描述。
3.增量模型:增量模型是一种非整体开发的模型。
该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。
增量模型和瀑布模型之间的本质区别是:瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早地产生工作软件。
4.螺旋模型:将瀑布模型和增量模型结合起来,并加入了风险分析。
5.喷泉模型:开发过程有分析、系统设计、软件设计和实现4个阶段。各阶段相互重叠,它反映了软件过程并行性的特点。以分析为基础,资源消耗成塔型。强调增量开发,整个过程是一个迭代的逐步提炼的过程。
6.智能模型:也称为基于知识的软件开发模型,是知识工程与软件工程相结合的软件开发模型。其主要特点是必须建立知识库,并将模型本身、软件工程知识、特定领域知识放入知识库。具体描述可以使用形式功能规约,也可以使用知识处理语言描述等。
简述比较常见的软件开发方法及其特点
经典的软件工程思想将软件开发分成5个阶段:需求分析\系统分析与设计;系统实现\测试及维护五个阶段.之所以如此,是因为软件开发中饣含了物和人的因素,存在着很大的不确定性,这使得软件工程不可能像理想的,可以其于物理学等的原理来做的物质生产过程.
如想建造一幢高档的写字楼,那么刚开始便将一切材料和工具全准备好显然是无比愚蠢的行为,因为有可能你正在使用他人的钱,而这些人将是建筑大小,开状和样式的决定者,通常情况下,投资方会在开工生改变想法,这样你必须有额外的计划.而对于整个工程,你也许只是其中的某一个工作组,因此,你需要有各种各样的图纸和模型同其他小组沟通,达到联合工作.很显然,在客户的需求与实际的建筑技术之间找好一个契合点,是做好工程的关键.
许多软件工开发过程也如同上面例子一样,软件问题不仅仅是代码的问题,而成为了一个怎么样将整个过程转变成一个结构,过程和工具相结合的问题.
建模,即其目的和作用在于提供系统蓝图,包含细节设计,也含有对系统的总体设计,同时模型可以帮助开发小组更好地规划系统设计,更快的开发.
uml是一种功能强大的,面向对象的可视化系统分析的建模语言,它的各个模型可以帮助开发人员更好地理解业务流程,建立更可靠,更完善的系统模型.从而使用户和开发人员对问题的描述达到相同的理解,以减少语义差异,保障分析的正确性.
简述各类软件过程模型的特点
.瀑布模型
它提出了软件开发的系统化的、顺序的方法。其流程从系统开始,随后是需求分析、设计、编码、测试、支持。这种模型是最早也是应用最广泛的软件过程模型(虽然这种模型会引起“堵赛状态”)。
优点:
1.它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该摸板下有一个共同的指导。
2.虽然有不少缺陷但比在软件开发中随意的状态要好得多。
缺点:
1.实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。
2.经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。
3.客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。
4.采用这种线性模型,会经常在过程的开始和结束时碰到等待其他成员完成其所依赖的任务才能进行下去,有可能花在等待的时间比开发的时间要长。我们称之为“堵赛状态”。
适用范围:
1. 用户的需求非常清楚全面,且在开发过程中没有或很少变化
2. 开发人员对软件的应用领域很熟悉
3. 用户的使用环境非常稳定
4. 开发工作对用户参与的要求很低
显著特点:
按工序将问题化简,将功能的实现与设计分开,便于分工协作
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.增量模型
这种模型融合了线性顺序模型的基本成份和原型实现模型的迭代特征。增量模型采用随着日程时间的进展而交错的线性序列。每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第一个增量往往是核心的产品,也就是说第一个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估,都做为下一个增量发布的新特征和功能。这个过程在每一个增量发布后不断从复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。
优点:
1.采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源
2.如果核心产品很受欢迎,则可增加人力实现下一个增量
3.可先发布部分功能给客户,对客户起到镇静剂的作用
缺点:
1.并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构
2.增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性
适用范围:
1.进行已有产品升级或新版本开发,增量模型是非常适合的
2.对完成期限严格要求的产品,可以使用增量模型
3.对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的
显著特点:
引进了增量包的概念,无须等到所有需求都出来,只要某个需求增量包出来即可进行开发
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3.螺旋模型
这是一个演化软件过程模型,它将原型实现的迭代特征和线性顺序模型中控制的和系统化的方面结合起来。使得软件的增量版本的快速开发成为可能。在螺旋模型中,软件开发是一系列的增量发布。在每一个迭代中,被开发系统的更加完善的版本逐步产生。螺旋模型被划分为若干框架活动,也称为任务区域
优点:
1.设计上的灵活性,可以在项目的各个阶段进行变更
2.以小的分段来构建大型系统,使成本计算变得简单容易
3.客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性
4.随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互
5.客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品
缺点:
1.采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失
2.过多的迭代次数会增加开发成本,延迟提交时间
3.很难让用户确信这种演化方法的结果是可以控制的。建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求
适用范围:
对于新近开发,需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更,螺旋模型只适合于大规模的软件项目
显著特点:
引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4.RAD模型
快速应用开发(RAD)是一个线性顺序的软件开发模型,强调极短的开发周期。RAD 模型是线性顺序模型的一个“高速”变种,通过使用基于构件的建造方法获得了快速开发
优点:
1.开发速度快,质量有保证
2.对信息系统特别有效
缺点:
1.对大型项目而言,RAD需要足够的人力资源
2.开发者和客户都要实现承诺,否则将导致失败
3.并非所有系统都适合:不能合理模块化的系统、高性能需求并且要调整构件接口的系统均不适合
适用范围:
1.不适合技术风险很高的开发,不适合系统需求是高性能,并且需要通过调整构件接口的方式来提高性能的产品开发。
2.适用于工期紧张,又可细分功能,还要有合适的构件
显著特点:
使用基于构件的建造方法获得了快速开发,使得一个开发组能够在很短时间内(如60 到90 天)创建出“功能完善的系统”
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5.迭代模型
迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集
优点:
1.降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费
2.降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙
3.加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率
4.由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些
缺点:
在项目早期开发可能有所变化 ,需有一个高素质的项目管理者和一个高技术水平的开发团队
适用范围:
1.在项目开发早期需求可能有所变化
2.分析设计人员对应用领域很熟悉
3.高风险项目
4.用户可不同程度地参与整个项目的开发过程
5.使用面向对象的语言或统一建模语言
6.使用CASE工具
7.具有高素质的项目管理者和软件研发团队
显著特点:
能显著减少风险
比较各种软件开发模型的特点的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于常用的软件开发模型有哪几种、比较各种软件开发模型的特点的信息别忘了在本站进行查找喔。