软件工程-软件生存周期模型

软件工程-软件测试
软件工程-软件测试-测试方法

概念

同任何事物一样,一个软件产品或软件系统也要经过孕育、诞生、成长、成熟、衰亡的许多阶段,一般称为软件生存周期。
软件的生命周期包括可行性分析与项目开发计划、需求分析、总体设计、详细设计、编码和单元测试、综合测试及维护阶段。

软件生存周期模型

概念

软件生存周期模型是一个包括软件产品开发、运行和维护中有关过程、活动和任务的框架,覆盖了从该系统的需求定义到系统的使用终止。

模型

瀑布模型

概念

瀑布模型是将软件生存周期各个活动规定为先行顺序连接的若干阶段。

特点
  1. 阶段间具有顺序性和依赖性。前一阶段的工作完成之后,才能开始后一阶段的工作; 前一阶段的输出文档就是后一阶段的输入文档。
  2. 推迟实现的观点。对于规模较大的软件项目来说,往往编码开始得越早最终完成开发工作所需要的时间反而越长。
  3. 质量保证的观点。每个阶段都必须完成规定的文档,是“文档驱动”的模型;每个阶段结束前都要对所完成的文档进行评审,尽早发现问题,改正错误。
优缺点

瀑布模型的优点:
1.可强迫开发人员采用规范的方法;
2.严格地规定了每个阶段必须提交的文档;
3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
瀑布模型的缺点:
只能通过文档了解产品,不经过实践的需求是不切实际的。

适用于

需求是预知的、软件实现方法是成熟的、项目周期较短。

快速原型

概念

快速原型:是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。

特点

1.快速原型模型不带反馈环,软件产品的开发基本上是线性顺序进行的;
2.快速原型的本质是“快速”。应该尽可能快地建造出原型系统,以加速软件开发过程,节约成本。

优缺点

快速原型优点
1.克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险;
2.适合预先不能确切定义需求的软件系统的开发。
快速原型缺点
1.所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下;
2.使用前提是要有一个展示性的产品原型,一定程度上可能会限制开发人员的创新。

适用于

无完整的需求说明,只有一些基本要求、用于及早向用户提交一个原型系统

增量模型

概念

增量模型把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。
(瀑布模型+原型)

优缺点

增量模型的优点:
1.人员分配灵活,刚开始不用投入大量人力资源;
2.当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径;
3.逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品。
增量模型的缺点:
1.软件体系结构必须是开放的;
2.模型本身是自相矛盾的。整体——独立构件;
3.不同的构件并行地构建有可能加快工程进度,但是冒无法集成到一起的风险。

适用于

1.适用于需求经常改变的软件开发过程;
2.如果在项目既定的商业要求期限之前不可能找到足够的开发人员,在这种情况下,增量模型显得特别有用。

演化模型

概念

演化模型是一种全局的软件(或产品)生存周期模型。属于迭代开发方法。主要针对实现不能完整定义需求的软件开发,是在快速开发原型的基础上,根据用户在使用圆形的过程中提出的意见和建议对原型进行改进,获得圆形的新版本。

优缺点

演化模型的优点
任何功能一经开发就能进入测试,以便验证是否符合产品需求,可以帮助引导出高质量的产品要求。
演化模型的缺点
如果不加控制地让用户接触开发中尚未稳定的功能,可能对开发人员及用户都会产生负面影响。

适用于

需求不清楚、小型或中小型系统、开发周期短

螺旋模型

概念

螺旋模型的基本思想:使用原型及其他方法来尽量降低风险。把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。
(快速原型+瀑布模型)+风险分析

特点
优缺点

螺旋模型的优点:
1.主要优势在于它是风险驱动的。
2.对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;
3.减少了过多测试或测试不足所带来的风险;
4.维护只是模型的另一个周期,维护和开发之间没有本质区别。
螺旋模型的缺点:
1.采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;
2.过多的迭代次数会增加开发成本,延迟提交时间。

适用于

1.特别适用于庞大、复杂并具有高风险的系统。
2.适用于内部开发的大规模软件项目。

喷泉模型

概念

喷泉模型:是典型的面向对象生命周期模型。 “喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程(例如,快速原型模型或图中的中心垂线)作为总目标。

优缺点

喷泉模型的优点:
1.该模型的各个阶段没有明显的界限,开发人员可以同步进行开发;
2.多次反复地增加或明确目标系统,而不是本质性的改动,降低错误的可能性。
喷泉模型的缺点:
1.由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,不利于项目的管理;
2.要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。

适用于

适用于面向对象的软件开发过程。

敏捷过程与极限编程

敏捷过程
敏捷软件开发宣言(价值观声明):
1.个体和交互胜过过程和工具;
2.可以工作的软件胜过面面俱到的文档;
3.客户合作胜过合同谈判;
4.响应变化胜过遵循计划;
根据上述价值观声明提出的软件过程统称为敏捷过程。
极限编程(eXtreme Programming, XP):
1.敏捷过程中最富盛名的一个;
2.广泛适用于需求模糊且经常改变的场合;
3.使得敏捷过程能够较好地适应商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束。

软件工程-软件生存周期模型相关推荐

  1. 软件工程—绪论软件工程2(软件工程过程、软件生存周期、软件生存周期模型)

    1.2软件工程过程和软件生存周期 1.2.1软件工程过程     软件工程过程规定了获取.供应.开发.操作和维护软件时,要实施的过程.活动和任务.其目的是为各种人员提供一个公共的框架,以便用相同的语言 ...

  2. 软件工程:7.生存周期过程和软件生存周期模型

    软件生存周期 软件生存周期(software life circle)又称软件生命期,生存期.它是指从形成软件开发概念开始,到软件投入使用,再到软件失去价值而消亡的整个过程. 软件生存周期过程 软件生 ...

  3. 《软件建模与设计: UML、用例、模式和软件体系结构》一一3.1 软件生存周期模型...

    本节书摘来自华章计算机<软件建模与设计: UML.用例.模式和软件体系结构>一书中的第3章,第3.1节,作者:(美)Hassan Gomaa,更多章节内容可以访问云栖社区"华章计 ...

  4. [软件工程]软件生存周期过程与管理————(2020.6.29学习笔记)

    目录 第一节 软件生存周期过程概述 第二节 过程描述 第三节 应用说明 第四节 软件生存周期模型 第五节 过程规划与管理 第一节 软件生存周期过程概述 软件生存周期(SDLC,软件生命周期) 是软件的 ...

  5. 软考—程序员(软件生存周期模型)

    **引言:**软件生存周期模型是一个包括软件产品开发.运行和维护中有关过程.活动和任务的框架,覆盖了从该系统的需求定义到系统的使用终止(IEEE标准12207.0-1996).把这个概念应用到开发过程 ...

  6. 软考——软件工程——软件生存周期

    目录 1,软件生存周期 2,软件过程 3,瀑布模型 4,增量模型 5,演化模型 6,螺旋模型 7,喷泉模型 8,统一过程 9,敏捷过程 10,软件过程评估 11,软件工具 12,软件维护工具 13,软 ...

  7. 软件工程——软件生存期模型

    目录 1.瀑布模型(文档驱动)(带反馈环) 2.快速原型模型(不带反馈环) 3.增量模型 4.螺旋模型(风险驱动) 5.喷泉模型 6.统一过程(用例驱动) 7.基于构件的开发模型 8.敏捷过程 软件是 ...

  8. 常用的软件过程模型(软件生存周期模型)

    文章目录 瀑布模型 瀑布模型特点: 优点: 缺点: 快速原型模型 优点: 缺点: 增量模型 优点: 缺点: 风险更大增量模型: 螺旋模型 优点: 缺点: 喷泉模型 优点: 缺点: Rational 统 ...

  9. 软件生存周期过程及其模型

      记录软件工程基础的学习过程,第二篇:软件生存周期过程及其模型. 文章目录 软件生存周期过程 软件生存周期 软件生存周期过程 国标软件生存周期过程 软件生存周期模型 软件生存周期过程和模型的关系 经 ...

最新文章

  1. .net托管环境下struct实例字段的内存布局(Layout)和大小(Size)
  2. MySQL优化关联查询
  3. C++ Double-Ended Queues(双向队列)
  4. Spring Cloud-微服务架构集大成者
  5. Java 使用 Timer 进行调度
  6. Android社会化分享详解
  7. 2457: 很简单的一道题
  8. linux c 网络编程与信号量,linux网络编程-----线程同步--信号量
  9. python selenium 等待元素_python3 selenium 设置元素等待的三种方法
  10. 首次!让我们出一个基于延迟的同行 IP 库数据评估来打个样~
  11. termios结构体详解
  12. ERROR: Error while obtaining start requests
  13. 来来来!docker清华源
  14. 输入两个实数,用一个函数求出它们之和
  15. 教你低成本获取用户:利用数据精细化运营(附手绘图)
  16. python 视频加字幕_Python追风者之视频编辑moviepy
  17. 打开浏览器时主页被锁定怎么也改不掉的一个好办法
  18. 学java的就业方向_学Java以后的就业方向
  19. OTM应用能解决人工智能领域的数据安全问题
  20. JavaWeb 打开的默认主页设置问题

热门文章

  1. swift 获取iphone设备型号
  2. Android学习之图片画廊(SimpleAdapter)
  3. 四千多个厂商默认帐号、默认密码
  4. mac os zcat: can't stat:
  5. 机器学习中的线性代数知识(中)
  6. CSDN编程竞赛 ——— 第十期
  7. 本地html网页不显示ico,关于网页:浏览器不请求favicon.ico的原因是什么?
  8. 什么是优质的测试服务?你知道吗???
  9. 全球天气预报软件测试,国外主要城市天气接口 全球天气预报API 国外未来一周天气预报接口...
  10. 同步与异步多线程的区别