当前位置: 首页 > news >正文

软考-软件工程开发模型

软考-软件工程开发模型

参考视频: 软件工程概述&开发模型 ,配合视频理解更清晰~

软件的生命周期为:需求分析软件设计软件开发运行维护直至被淘汰 几个阶段。

软件工程支持 4 个活动,简称 PDCA,分别是:Plan、Do、Check、Action

  • 软件规格说明:规定软件功能及其运行时限制
  • 软件开发:开发出满足规格说明的软件
  • 软件确认:确认开发的软件能满足用户需求
  • 软件演进:软件在运行过程中不断改进以满足用户新的需求

为了使软件生命周期中的各项任务有序进行,需要一定的模型给予规程约束,这就是软件生命周期模型。

1、瀑布模型

基础知识:

【1】又被称为生命周期法

【2】开发计划分为:软件计划、需求分析、软件设计、程序编码、软件测试、运行维护 6 个阶段

优点:

【1】为项目提供了按阶段划分的检查点

【2】当前一阶段完成后,只需要关注后一阶段

【3】提供了一个模板,使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导

缺点:

【1】各个阶段产生了大量的文档,极大地增加了工作量

【2】开发模型是线性的,用户只有在开发末期才能看到开发成果,从而增加了开发风险

【3】不适应用户需求的变化,并且在需求分析阶段不可能完全获取

【4】前期未发现的错误在后面的开发活动中可能被扩散,进而导致整个项目开发失败

适用场景:

【1】需求明确或很少变更的项目

2、原型化模型

基础知识:

【1】快速建立一个目标系统的最初版本,并交给用户试用、补充和修改,再进行新的版本开发,直到用户满意

【2】成败的关键和效率的高低,在于模型的建立和建模的速度

【3】按照最终的结果可以分为抛弃型原型和演化型原型

适用场景:

【1】用户需求不明确

3、螺旋模型

基础知识:

【1】瀑布型模型和演化型原型相结合

【2】强调风险分析

【3】每一次迭代分为:目标设定、风险分析、开发和有效性验证、评审

适用场景:

【1】大型软件开发

【2】面向规格说明、面向过程和面向对象的开发,及几种开发方法的组合

4、敏捷模型

基础知识:

【1】适应型(图右)而非预设型(或者叫可预测型,图左)

image-20250519221343062

【2】以人为本而非以过程为本,强调开发人员有权做技术方面的所有决定强调相关人员的沟通提倡面对面交流

【3】迭代增量式的开发过程

迭代(图左),增量(图右)

image-20250519221535137

敏捷模型是一组,包含下面多种:

4.1 极限编程(XP)

基础知识:

【1】价值观是:交流、朴素、反馈和勇气,将开发过程分解为一个个相对比较简单的小周期

4.2 水晶方法

基础知识:

【1】提倡“机动性”,认为每个项目都有独特的角色、过程模式、工作产品和实践。

4.3 SCRUM

基础知识:

【1】侧重于项目管理,迭代式增量软件开发过程

4.4 特征驱动开发方法(FDD)

基础知识:

【1】一种迭代开发模型,认为有效的软件开发需要三要素:人、过程和技术

4.5 开放源码(很少考)

基础知识:

【1】程序员地域上分布十分广泛

4.6 ASD 方法(很少考)

基础知识:

【1】核心是三个非线性的、重叠的开放阶段:猜测、开放和学习

4.7 动态系统开放方法(DSDM)(很少考)

基础知识:

【1】倡导以业务为核心

5、构件组装模型(CBSD)

基础知识:

【1】利用模块化方法,将整个系统模块化,在一定构件模型的支持下,复用构件库中的一个或多个构件,通过组合手段高效率、高质量的构造软件系统

【2】融合了螺旋模型的许多特征,本质上是演化的,开发过程是迭代的

【3】基于构件的软件开发分为:需求分析和定义、体系结构设计、构件库的建立、应用软件构建、测试和发布

6、V 模型

基础知识:

【1】测试分段(每一步都有对应的测试)

【2】测试计划先行(例如详细设计阶段做单元测试的测试计划,这样提前做下一步骤的测试计划)

image-20250519223418051

7、W 模型

基础知识:

【1】依据“尽早且持续进行软件测试”的原则,开发流程与测试活动并行展开

8、快速应用开发模型(RAD)

基础知识:

【1】增量型软件开发模型

【2】通过大量使用可复用构件,采用基于构件的开发方法快速开发,强调极短的开发周期

【3】流程分为:业务建模、数据建模、过程建模、应用生成、测试与交付

适用场景:

【1】模块化要求程度比较高

相关文章:

  • SCGI 服务器详解
  • 软件工程第六章-详细设计
  • 【C语言】易错题 经典题型
  • 小土堆pytorch--神经网路的基本骨架(nn.Module的使用)卷积操作
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Vision Kit (3)
  • 从理论到实践:可靠性预计与分配全解析
  • sentinel核心原理-高频问题
  • PyTorch Geometric(PyG):基于PyTorch的图神经网络(GNN)开发框架
  • 已解决——如何让网站实现HTTPS访问?
  • 如何设计一个二级缓存(Redis+Caffeine)架构?Redis 6.0多线程模型如何工作?
  • 二元Logistic回归
  • Visual Studio解决方案构建三剑客:生成/重新生成/清理完全指南(实战经验总结)
  • 使用 Qt QGraphicsView/QGraphicsScene 绘制色轮
  • 智能体应用如何重塑未来生活?全面解析技术场景与实在Agent突破
  • Linux权限练习题
  • 3.安卓逆向2-安卓文件目录
  • BUUCTF PWN刷题笔记(持续更新!!)
  • Unreal Engine: Windows 下打包 AirSim项目 为 Linux 平台项目
  • Chromium 回调设计实战:BindOnce 与 BindRepeating 的最佳实践
  • stm32如何触摸屏设置显示按钮
  • 马上评|去年维修竣工的鼓楼,今年就“瀑布式落瓦”
  • 一座与人才共成长的理想之城,浙江嘉兴为何如此吸引人?
  • 黄仁勋的新逻辑:从“卖铲人”到“全球AI基建运营商”
  • 新华每日电讯:把纪律的螺丝拧得紧而又紧
  • 上海文化馆服务宣传周启动,为市民提供近2000项活动
  • 对话作家吉井忍:“滚石”般的生活,让我看到多种人生可能