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

news2024/11/24 17:08:23

软件过程模型

  • 瀑布模型
  • 瀑布模型变种-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.coloradmin.cn/o/1973363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot中如何正确使用Redis(详细介绍,原理讲解,企业版)

1.引入Redis依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 2.配置Redis的连接信息(application.yml) 实际开发中有两个一个是开发环境applicati…

VBA字典与数组第十七讲:工作表数组大小的扩展及意义

《VBA数组与字典方案》教程&#xff08;10144533&#xff09;是我推出的第三套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;字典是VBA的精华&#xff0c;我要求学员必学。7.1.3.9教程和手册掌握后&#xff0c;可以解决大多数工作中遇到的实际问题。…

JAVA(IO流)7.31

ok了家人们今天还是学习IO流&#xff0c; 一.打印流【了解】 1.1 打印流的概述 我们平时使用的System语句就是调用了print()方法和println()方法。 这两个方法都来自于 java.io.PrintStream 类。 作用&#xff1a; 该类能够方便地打印各种数据类型的值&#xff0c;写入数据后…

谷粒商城实战笔记-115-全文检索-ElasticSearch-进阶-bool复合查询

文章目录 1&#xff0c;must2&#xff0c;must not3&#xff0c;should 1&#xff0c;must {"query": {"bool": {"must": [{"match": {"gender": "M"}},{"match": {"address": "mill&q…

java代码审计-SQL的注入

0x01 前言 Java里面常见的数据库连接方式有三种&#xff0c;分别是JDBC&#xff0c;Mybatis&#xff0c;和Hibernate。 0x02 JDBC注入场景 很早之前的Javaweb都是用JDBC的方式连接数据库然后去实现dao接口再调service业务层去实现功能代码JDBC连接代码 WebServlet("/d…

科技云报道:大模型引领技术浪潮,AI安全治理面临“大考”

科技云报道原创。 从文生文到文生图&#xff0c;再到文生视频&#xff0c;近年来&#xff0c;以ChatGPT、Sora等为代表的大模型引领了全球人工智能技术与产业的新一轮浪潮。2024年更是被业内称为大模型应用爆发元年。 年初&#xff0c;Sora横空出世验证了Scalling Law在视频生…

计算机的错误计算(五十)

摘要 扩展了计算机的错误计算&#xff08;四十九&#xff09;中的代码。同时发现&#xff0c;误差也“扩展”了。 下面是代码&#xff1a; import torch# 设置随机种子 torch.manual_seed(0)# 创建张量并移动到GPU W1 torch.randn(5, 3) * 10 W1 W1.to(cuda) X1 torch.ran…

高级宏定义

平时常说的 C 语言三大预处理功能是什么&#xff1f;&#xff08;吹牛谈资&#xff0c;不能不知&#xff09; 答&#xff1a;宏定义&#xff1b;文件包含&#xff1b;条件编译。 说到底&#xff0c;宏定义的实质是什么&#xff1f; 答&#xff1a;替换。 关于宏定义有一点…

CSS技巧专栏:一日一例 18 -纯CSS实现背景浮光掠影的按钮特效

CSS技巧专栏:一日一例 18 -纯CSS实现背景浮光掠影的按钮特效 先发图,再说话: 案例图片 案例分析 按钮是好几种颜色的背景色组成的,使用css的话,应该会有几个不同颜色的层,在按钮后面移动。每个层互相叠加,大概还会用到图片混合模式产生了更多的叠加的颜色,然后边缘过…

云计算实训20——mysql数据库安装及应用(增、删、改、查)

一、mysql安装基本步骤 1.下载安装包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 2.解压 tar -xf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 3.卸载mariadb yum -y remove mariadb 查看解压后的包 [rootmysq…

二叉树遍历算法的应用

1、二叉树的创建 2、二叉树的复制 3、二叉树的深度 4、计算结点总个数

jsp 自定义taglib

一、简介 我们在javaWeb开发中&#xff0c;经常会用到jsp的taglib标签&#xff0c;有时候并不能满足我们的实际需要&#xff0c;这就需要我们自定义taglib标签&#xff0c; 二、开发步骤 1、编写control方法&#xff0c;继承BodyTagSupport 2、定义zdytaglib.tld标签文件 3、…

AI Agent 如何入门?来看看这本新书!!!

半个月前&#xff0c;粗心的我细心地发现&#xff0c;有一本关于 Agent 的书籍&#xff0c;作者还是熟悉的咖哥&#xff08;黄佳老师&#xff0c;当年拜读过他的《零基础学机器学习》&#xff09;。 而在昨天&#xff0c;我终于收到了&#xff01;立刻花了半个小时品读起来~觉…

LeetCode 572.另一棵树的子树 C写法

LeetCode 572.另一棵树的子树 C写法 思路&#x1f9d0;&#xff1a; 可以用上判断两棵树是否相同的方法&#xff0c;root的每个结点都去与subroot进行该方法的比较&#xff0c;如果有一轮比较成功就表示root包含subroot。 代码&#x1f50e;&#xff1a; bool isSameTree(struc…

【时时三省】(C语言基础)函数的声明和定义

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ——csdn时时三省 函数声明 1.告诉编译器有一个函数叫什么&#xff0c;参数是什么&#xff0c;返回类型是什么。但是具体是不是存在&#xff0c;无关紧要。 2.函数的声明一般出现在函数的使用之前。要满足先声…

视频监控汇聚平台LntonCVS安防管理平台构建互联网视频监控安全管理系统方案

随着互联网和人工智能技术的发展&#xff0c;我们致力于建设一种云端平台&#xff0c;统一整合各类二三类视频资源&#xff0c;实现对网络工程最后100米、10米甚至1米的全域覆盖。 依托互联网与VPN网络&#xff0c;我们提供了一种视频监控安全管理系统方案&#xff0c;集成了大…

SpringSecurity+Mysql数据库实现用户安全登录认证

Spring Security 是一个提供身份认证、授权和防范常见攻击的安全权限框架。无论是对命令式&#xff0c;还是响应式web应用程序都完美支持&#xff0c;现在主要用作保护基于 Spring 框架的应用程序的事实标准。相对于shiro来说&#xff0c;SpringSecurity功能更加复杂而且更加强…

深入浅出:可视化理解揭示决策树与梯度提升背后的数学原理

决策树是一种非参数的监督学习算法&#xff0c;可用于分类和回归。它使用类似树的结构来表示决策及其潜在结果。决策树易于理解和解释&#xff0c;并且可以轻松地进行可视化。但是当决策树模型变得过于复杂时&#xff0c;它不能很好地从训练数据中泛化&#xff0c;会导致过拟合…

64、ELK记录nginx、httpd、mysqld日志

logstash收集服务日志文件 一、logstash收集appache日志文件&#xff0c;转发到elasticsearch 1、建立在elk1、2、3搭建好elk架构基础之上192.168.168.61 es1 2/4g192.168.168.62 es2 2/4g192.168.168.63 logstash kibana nginx/http 4/8g三台开启服务systemctl s…

《数据结构》(C语言版)第1章 绪论(上)

第1章 绪论 1.1 数据结构的研究内容1.2 基本概念和术语 1.1 数据结构的研究内容 N.沃思&#xff08;Niklaus Wirth)教授提出&#xff1a; 程序算法数据结构 电子计算机的主要用途 早期&#xff1a;主要用于数值计算 后来&#xff1a;非数值计算&#xff0c;复杂的具有一定结构…