5.2-软件工程基础知识-软件过程模型

软件过程模型

  • 瀑布模型
  • 瀑布模型变种-V模型
  • 演化模型-原型模型
  • 增量模型
  • 演化模型-螺旋模型
  • 喷泉模型
  • 基于构件的开发模型
  • 形式化方法模型
  • 统一过程模型
  • 敏捷方法
    • 极限编程
    • 其他方法
  • 软件过程模型概述
  • 练习题

瀑布模型

在这里插入图片描述

  • 瀑布模型(SDLC):瀑布模型是一个经典的生命周期模型,一般将软件开发分为:可行性分析(计划)、需求分析、软件设计(概要设计、详细设计)、编码、测试、运行维护几个阶段。
  • 瀑布模型是以文档作为驱动、适合于软件需求很明确的软件项目的模型。
  • 瀑布模型特点:
    ①从上一项开发活动接收该项活动的工作对象作为输入
    ②接收输入后,实施该项活动应完成的工作内容
    ③给出该项活动的工作成果,作为输出传给下一项开发活动。
    ④对该项活动的实施工作成果进行评审。若评审通过,则进入下一项开发活动;否则返回前一项甚至更前项的活动。

瀑布模型变种-V模型

在这里插入图片描述

  • V模型:从整体上看起来,就是一个V字型的结构,由左右两边组成。
    • 左边的线分别代表了需求建模(需求分析)、概要设计、详细设计、编码。
    • 右边的线分别代表了单元测试、集成测试、系统测试与验收测
      试。
  • V模型的特点如下:
    单元测试主要针对编码过程中可能存在的各种错误进行验证。
    集成测试主要针对详细设计中可能存在的各种错误进行验证。
    系统测试主要针对概要设计,检查系统作为一个整体是否可以有效地运行。
    验收测试主要是针对需求建模、需求分析,通常由业务专家或者用户进行,以确认产品能真正符合用户业务上的需要。
    ⑤ V模型用于需求明确和需求变更不频繁的情形。
    ⑥ V模型中的突出的是测试和开发生命周期各阶段的结合。

演化模型-原型模型

在这里插入图片描述

  • 原型模型:第一步是交流,然后创建一个快速原型,能够满足项目干系人与未来的用户之间通过原型进行交互,再通过与相关干系人进行充分的讨论和分析,最终弄清楚当前系统的需求,进行了充分的了解之后,在原型的基础上开发出用户满意的产品。
    例如Axure RP快速原型设计工具,可以使用拖拽元件生成一个web
  • 原型法认为在很难一下子全面准确地提出用户需求的情况下,原型应当具备的特点如下:
    实际可行
    ② 具有最终系统的基本特征
    构造方便、快速,造价低
    ④ 它对用户需求是动态的、逐步纳入的

增量模型

在这里插入图片描述

  • 增量模型:增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,它假设可以将需求分段为一系列增量产品,每一增量可以分别开发。增量之间是需要有优先级的,首先要开发核心模块功能,第一个增量是它的核心,而后与用户确认后开发下一个增量,优先级高的增量(服务)最先交付
  • 特点:由于不是从系统整体角度规划各个模块,每一次增量的模块划分可能没有延续性,因此不利于模块划分。难点在于如何将客户需求划分为多个增量。与原型不同的是增量模型的每一个增量版本都可以作为独立的作品,而原型的构造一般是为了演示。

演化模型-螺旋模型

在这里插入图片描述

  • 螺旋模型:是一个演化过程模型,它将原型实现的迭代特征与瀑布模型中控制的和系统化的方面结合起来。在螺旋模型中,软件开发是一些列的增量发布
  • 螺旋模型将瀑布模型和演化模型结合起来,强调了风险分析,特别适用于大型、复杂度高、风险高的系统
  • 螺旋模型将开发过程分为几个螺旋周期,具有周期性重复的螺旋线状,每个螺旋周期大致和瀑布模型相符合。每个螺旋周期分为如下4个工作步骤:制定计划、风险分析、实施工程和客户评估

喷泉模型

在这里插入图片描述

  • 喷泉模型:是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法使开发过程具有迭代性和无间隙性
  • 特点
    • 喷泉模型的各个阶段没有明显的界线,开发人员可以同步进行。
    • 其优点是可以提高软件项目的开发效率,节省开发时间
    • 由于喷泉模型在各个开发阶段是重叠的,在开发过程中需要大量的开发人员,不利于项目的管理。此外,这种模型要求严格管理文档,使得审核的难度加大

基于构件的开发模型

了解,近几年没有考过
在这里插入图片描述

  • 基于构件的开发模型(CBSD):利用预先保证的构件拉构造应用系统。构件可以是组织内部开发的构件,也可以是商品化成品软件构件。
  • 特点是增强了复用性,在系统开发过程中,会构建一个构件库,供其他系统复用,因此可以提高可靠性,节省时间和成本

形式化方法模型

了解,考点的少

  • 形式化方法模型:建立在严格数据基础上的一种软件开发方法,主要活动是生成计算机软件形式化的数学规格说明。
    一般用于数学建模

统一过程模型

  • 统一过程(UP)模型:是一种“用例和风险驱动,以架构为中心,迭代并且增量”的开发过程,由UML方法和工具支持。迭代的意思是将整个软件开发项目划分为许多个小的“袖珍项目”,每个“袖珍项目”都包含正常软件项目的所有元素:计划、分析和设计、构造、集成和测试,以及内部和外部发布。
  • 统一过程模型包括4个阶段:初始阶段、精化阶段、构建阶段、移交阶段
    ①初始阶段:生命周期目标。
    ②精化阶段:生命周期架构。
    ③构建阶段:初始运作功能。
    ④移交阶段:产品发布。
  • 每次迭代产生包括最终系统的部分完成的版本和任何相关的项目文档的基线,通过逐步迭代基线之间相互构建,直到完成最终系统。在每个迭代中有5个核心工作流:捕获系统应该做什么的需求工作流,精化和结构化需求的分析工作流,在系统构架内实现需求的设计工作流,构造软件的实现工作流,验证实现是否如期望那样工作的测试工作流
  • 统一过程的典型代表是RUP(Rational Unified Process)。RUP是UP的商业扩展,完全兼容UP,但比UP更完整、更详细。

敏捷方法

  • 敏捷方法:敏捷开发的总体目标是通过“尽可能早地、持续地对有价值的软件的交付”使客户满意。通过在软件开发过程中加入灵活性,敏捷方法使用户能够在开发周期的后期增加或改变需求
  • 敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,相对于传统软件开发方法的“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用
  • 敏捷软件开发宣言:
    • 个体和交互胜过过程和工具
    • 可以工作的软件胜过面面俱到的文档
    • 客户合作胜过合同谈判
    • 响应变化胜过遵循计划
  • 敏捷过程的典型方法有很多,每一种方法基于一套原则,这些原则实现了敏捷方法所宣称的理念(敏捷宣言):极限编程(XP)、水晶法(Crystal)、并列争求法(Scrum)、自适应软件开发(ASD)、敏捷统一过程(AUP)

极限编程

  • 极限编程(XP):XP是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式。它由价值观、原则、实践和行为4个部分组成,彼此相互依赖、关联,并通过行为贯穿于整个生存周期。
    • 4大价值观:沟通、简单性、反馈和勇气。
    • 5个原则:快速反馈、简单性假设、逐步修改、提倡更改和优质工作。
    • 12个最佳实践
      ① 计划游戏(快速制定计划、随着细节的不断变化而完善)、
      ② 小型发布(系统的设计要能够尽可能早地交付)、
      ③ 隐喻(找到合适的比喻传达信息)、
      ④ 简单设计(只处理当前的需求,使设计保特简单)、
      ⑤ 测试先行(先写测试代码,然后再编写程序)、
      ⑥ 重构(重新审视需求和设计,重新明确地描述它们以符合新的和现有的需求)、
      ⑦ 结队编程、
      ⑧ 集体代码所有制、
      ⑨ 持续集成(可以按日甚至按小时为客户提供可运行的版本)、
      ⑩ 每周工作40个小时、
      ⑪ 现场客户
      ⑫ 编码标准

其他方法

  • 结对编程:一个程序员开发,另一个程序员在一旁观察审查代码,能够有效的提高代码质量,共同对代码负责:
  • 自适应开发:强调开发方法的适应性。侧重为软件的重要性提供最根本的基础,并从更高的组织和管理层次来阐述开发方法为什么要具备适应性。
  • 水晶方法:每一个不同的项目都需要一套不同的策略、约定和方法论
  • 并列争求法SCRUM:是一种迭代的增量化工程,把每段时间(30天)一次的迭代成为一个“冲刺”,并按需求的优先级别来实现产品,多个自组织和自治的小组并行地递增实现产品。

软件过程模型概述

类型特征
瀑布模型结构化方法。容易理解、管理成本低、需求明确、文档齐全、风险控制弱
V模型瀑布模型的变体,开发与测试结合。
增量模型瀑布模型和原型模型的结合体。第一个增量是核心。如增量不确定管理成本会增加。
原型模型原型方法。也叫快速原型模型,属于演化模型。适合需求不明确、经常变化的项目
螺旋模型属于演化模型。瀑布模型和原型模型的结合体。适合大型、复杂、有风险的项目。
喷泉模型面向对象方法复用好、开发过程无间隙、节省时间。
RUP/UP用例驱动、架构为中心、迭代、增量

练习题

(2014年真题)以下关于统一过程UP的叙述中,不正确的是()。
A.UP是以用例和风险为驱动,以架构为中心,迭代并且增量的开发过程
B.UP定义了四个阶段,即起始、精化、构建和确认阶段
C.每次迭代都包含计划、分析、设计、构造、集成、测试以及内部和外部发布
D.每个迭代有五个核心工作流

答案B
统一过程模型包括4个阶段:初始阶段、精化阶段、构建阶段、移交阶段

(2020年真题)喷泉模型是一种适合于面向()开发方法的软件过程模型。该过程模型的特点不包括()
A,对象
B.数据
C,数据流
D,事件

A,以用户需求为动力
B,支持软件重用
C,具有迭代性
D,开发活动之间存在明显的界限

答案A D

(2021年真题)关于螺旋模型,下列陈述中不正确的是(),()。
A.将风险分析加入到瀑布模型中
B,将开发过程划分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符
C,适合于大规模、复杂且具有高风险的项目
D.可以快速的提供一个初始版本让用户测试

A,支持用户需求的动态变化
B,要求开发人员具有风险分析能力
C,基于该模型进行软件开发,开发成本低
D.过多的迭代次数可能会增加开发成本,进而延迟提交时间

答案D C

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/389868.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

声音和数据之间的调制解调 —— 电报机和电传打字机如何影响计算机的演变

注:机翻,未校对。 The Squeal of Data The through line between the telegraph and the computer is more direct than you might realize. Its influence can be seen in common technologies, like the modem. 电报和计算机之间的直通线比你想象的要…

Redis RDB AOF持久化 主从集群同步原理

RDB RDB Redis数据备份文件 也被叫做Redis数据快照 简单来说就是 把内存中的所有数据记录到磁盘中 当Redis实例故障实例重启后从磁盘读取快照文件恢复数据 快照文件称为RDB文件 默认时保存在当前运行目录执行时机 执行save命令 127.0.0.1:6379> save OK 127.0.0.1:6379&g…

opencascade AIS_TrihedronOwner源码学习对象的实体所有者用于选择管理

opencascade AIS_TrihedronOwner 前言 AIS_Trihedron对象的实体所有者用于选择管理。 在OpenCascade的AIS(交互对象框架)中,管理类似AIS_Trihedron的对象的选择涉及理解如何处理实体(或所有者)以进行选择。 方法 1…

正则表达式 空格匹配

目录 一. 前提二. 半角空格 匹配半角空格三. ^ 匹配半角空格开头的半角空格四. ^ $ 匹配整行都是半角空格五. ^[ \t]$ 匹配整行都是半角或Tab空格六. \s 匹配所有空格七. [^\s]匹配除了空格之外的所有内容 一. 前提 👇👇👇有如下所示的内容…

程序员面试 “八股文”在实际工作中是助力、阻力还是空谈?

“八股文”在实际工作中是助力、阻力还是空谈? 作为现在各类大中小企业面试程序员时的必问内容,“八股文”似乎是很重要的存在。但“八股文”是否能在实际工作中发挥它“敲门砖”应有的作用呢?有IT人士不禁发出疑问:程序员面试考…

CTF web bibibi题型

CTF web bibibi题型 1.进入网站 在kali中使用Dirsearch对地址进行目录扫描,发现robots.txt 网址内加入 /robots.txt 进入网址 /fl4gi5Here.php 找到flag

Uni-APP页面跳转问题(十六)

【背景】最近在做公司一个PAD端,谁被点检功能,主要时为了移动端点检设备和打印标签,需求比较简单就是扫描设备二维码,问题在于扫描后要能够重复进行多设备的扫描;早期开发的设备点检能够满足需求但是当连续扫描五六十个设备后,APP卡死,必须重启才能使用。 界面原图: 输…

安全基础学习-keil调试汇编代码

初始目的是为了通过汇编编写CRC功能。 但是基础为0,所以目前从搭建工程开始记录。 大佬绕路。 (一)创建项目 1. 新建项目 打开 Keil uVision。选择 Project -> New uVision Project 创建一个新项目。选择你的目标设备(如 ARM Cortex-M 系列处理器),我这里一开始选择…

buu做题(12)

[CISCN 2019 初赛]Love Math <?php error_reporting(0); //听说你很喜欢数学&#xff0c;不知道你是否爱它胜过爱flag if(!isset($_GET[c])){show_source(__FILE__); }else{//例子 c20-1$content $_GET[c];if (strlen($content) > 80) {die("太长了不会算");…

Creomagic 推出认知通信功能以应对电子战 (EW) 威胁

新时代的软件定义无线电 (SDR) 技术可以在电子战和竞争频谱环境中自主维护可靠的网络。 最近的全球冲突凸显了现代战场上战术通信面临的严峻挑战。随着自主部队的日益普及&#xff0c;战场感知变得比以往任何时候都更加先进&#xff0c;需要大量信息传输和同步。在战场上传输关…

MacOS上如何优雅的使用Burp Suite Professional

MacOS上如何注册使用Burp Suite Professional 文章目录 MacOS上如何注册使用Burp Suite Professional一.如何下载二.安装BurpSuite三.注册四.启动五.创建可执行文件六.写在最后 一.如何下载 JDK官网下载 BurpSuite专业版官网下载 [注册机下载]( https://pan.baidu.com/s/10…

秒懂Linux之编写小程序——进度条

目录 一.前文摘要 二.进度条编写 三全部代码&#xff08;非Linux环境下测试&#xff09; 一.前文摘要 在开始编写之前我们先来学习一些后面会用到的知识点~ 测试结果发现&#xff0c;Sleep无作用&#xff0c;编译完会立刻打印~ 再来看另一个测试~我们同样没有换行&#xff0c…

设计模式的优点

设计模式的优点 1、可重用性2、架构指导3、经验传承4、设计透明5、实践验证 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、可重用性 设计模式允许开发者在遇到相似问题时复用解决方案&#xff0c;节省时间并减少错误。 2、架构指导 …

C:初识指针—学习笔记

目录 前言&#xff1a; 1、内存和地址 1.1 理解内存和地址 1.2 理解编址 2、指针变量和地址 2.1 取地址操作符&#xff1a;& 2.2 指针变量 2.3 如何拆解指针类型 2.4 解引用操作符&#xff08;*&#xff09; 2.5 指针变量的大小 3、指针变量类型的意义 3.1 指针…

C语言:指针(2)

一.数组名 在了解数组名前我们先看一段代码 int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0]; 根据我们上一篇学习的知识&#xff0c;我们知道&arr[0]是数组第一个元素的地址&#xff0c;这时我们再看另一段代码的运行结果。 #include <stdio.h> int ma…

Hadoop的安装和使用-2024年08月01日

Hadoop的安装和使用-2024年08月01日 1.创建Hadoop用户2.SSH登陆权限设置3.java的安装4.Hadoop单机安装配置5.Hadoop伪分布式安装配置 1.创建Hadoop用户 如果安装Ubuntu的时候不是用的“hadoop”用户&#xff0c;那么需要增加一个名为 hadoop的用户首先按ctrlaltt打开终端窗口&…

患者特征对AI算法在解释阴性筛查数字乳腺断层摄影研究中的表现的影响| 文献速递-AI辅助的放射影像疾病诊断

Title 题目 Patient Characteristics Impact Performance of AI Algorithm in Interpreting Negative Screening Digital Breast Tomosynthesis Studies 患者特征对AI算法在解释阴性筛查数字乳腺断层摄影研究中的表现的影响 Background 背景 Artificial intelligence (AI)…

新书速览|AI创意商业广告设计:Adobe Firefly + Photoshop

《AI创意商业广告设计:Adobe Fire.yPhotoshop》 本书内容 随着AI技术的出现&#xff0c;平面设计领域也出现了利用人工智能进行创作的程序&#xff0c;比如Firefly、Midjourney、 Stable Di.usion等。这些程序能够创作出高质量的设计作品。其中&#xff0c;Fire.y是由Adobe公司…

【C++】C++应用案例-通讯录管理系统

目录 一、整体介绍 1.1、需求和目标 1.2、整体功能描述 二、页面及功能描述 2.1 主菜单 2.2 添加联系人菜单 2.3 显示联系人菜单 2.4 修改联系人菜单 2.5 退出功能 三、流程设计 3.1 主流程 3.2 添加操作流程 3.3 显示联系人操作流程 3.4 修改联系人操作流程 四…

面试中的算法 [ 持续更新中 ] 基于Python语言 如何判断链表有环

本文主要介绍了如何判断链表有环的问题&#xff0c;并进行了延伸&#xff1a; 如果链表有环如何求出环的长度&#xff0c;入环节点... ...嗯&#xff0c;点个赞总可以不&#xff01;&#xff01;&#xff01; 目录 5.1如何判断链表有环 5.1.1 有一个单向链表&#xff0c;链表…