软件工程——期末复习(3)
一、题目类(老师重点提到过的题目)
1、高可靠性是否意味着高可用性?试举例证明自己的观点?
答:高可靠性不意味着高可用性
可靠性说明系统已经准备好,马上可以使用;可用性是系统可以无故障的持续运行,是一个持续的状态。与可用性相反,可靠性是根据时间段而不是任何时刻来定义的。
例如:A机器一年坏一次,一次坏一个月;B机器一年坏十次,一次坏10秒。在可靠性上,A机器可靠性更高。在可用性上,A机器一年中可用11个月;B机器一年中可用12个月,B机器可用性更高。
2、为什么要进行边界值分析
(1) 等价类划分忽略掉了某些特定类型的高效测试用例,而边界值分析可以弥补其中的一些不足;
(2)编程的很多错误是发生在定义域或值域的边界上。因此针对边界情况设计测试用例,可以更好的检查错误,具有更高的测试回报率;
(3) 边界值数据本质上是属于某个等价类的范围,测试时确实有些重复,但是为了更好的测试质量(边界值特别容易出bug),适当的重复是可以接受的。
3、什么是桩,试着举个例子
使用一些自己定义的测试函数来替换当前需要测试的函数。桩函数是白盒测试中的概念,是这样能够加速开发,或更好的找错误源。被替换的函数可能是目前还没写完的,
例子:想要对数据进行处理,但是处理部分还没有完成,采用桩函数,代码如下
def test(a,b) # 被测模块
c = a+b
stub(c)
def stub(c) # 桩函数
print(c)
if __name == "__main__":
test(1,2) # 驱动程序
4、如识别耦合并修改代码解耦(附例题)
印记耦合:当被调用的模块可以使用的数据多于真实所需数据时,导致数据访问可能失控,给计算机犯罪提供机会.
解耦:只提供所需要的数据
void print(double height,double weight){
System.out.println("身高"+height);
System.out.printIn("体重"+weight);
}
5、根据顺序图绘制类图或给出代码实现(有顺序图例题,类图需要自己练习)
6、为什么要“设计易读的代码”
设计易读的代码是为了让团队成员(包括自己)更容易理解代码的含义,从而更方便地对代码进行修改、维护和扩展。易读的代码有如下一些优点
(1)提高开发效率和可维护性:代码好理解,也就提高了项目的开发效率,也增强了项目的可维护性
(2)便于发现、减少错误:开发人员更容易发现代码中的错误,减少代码中的潜在缺陷和bug。
(3)便于团队合作:易读的代码让团队成员更容易互相理解和协作,从而提高团队的协作效率。
(4)便于代码重用:开发人员可以很快的找到需要的代码,重用起来也方便
综上来说,易读的代码对于提高代码质量、减少错误、提高开发效率和促进团队合作都具有重要的作用,所以我们要设计易读的代码。
7、持续的构建-修复模型是否可对需求快速响应?是否可以用于替代极限编程?试简要给出理由
(1) 在程序规模比较小,对质量要求不高时,构建-修复模型可对需求快速响应,因为此时软件结构简单,开发人员可控,可以迅速地将新功能或修改推向市场,收集用户反馈并及时进行修复和调整。
但在程序规模较大时,构建-修复模型可能无法对需求快速响应。因为该模型没有分析、没有文档,也没有质量考虑,软件结构在不断的修改中变得越来越糟糕,甚至无法修改,导致无法再对需求进行快速相应
(2) 构建-修复模型不可用于替代极限编程。两者都强调快速响应变化和持续改进,但它们的具体实现方式有所不同。
构建-修复模型可以帮助开发人员更快地修复缺陷和改进产品,但它并没有像极限编程那样强调代码质量、自动化测试、持续集成等。极限编程可以更好地促进软件开发的质量和可维护性。
因此,持续构建-修复模型不能完全替代极限编程。应该根据具体的项目需求和团队情况,选择合适的开发方法。
8、为什么说软件工程的核心是分解和抽象
因为软件系统通常是复杂的,是由许多不同的模块和组件组成的,这些模块和组件之间可能存在复杂的相互作用。为了能够更好的管理这种复杂性,我们采用分解的方法,将系统分解为更小的模块和组件,并从中抽象出关键概念和模式。
分解和抽象,让复杂的系统变为了更小的、更易于管理的一个个部分,让开发者更好的开发与维护复杂的系统,这也是软件工程的目的所在,所以我们说软件工程的核心是分解和抽象更好的管理和维护系统,提高系统的质量和可靠性。
9、说明“软件=程序+文档+数据”中的文档和建模存在什么样的关系
文档和建模是密切相关的。
文档和建模是相互支持的。例如,文档可以指导建模的方向,建模可以帮助开发人员更好地理解文档。
文档和建模是相互补充的。例如,开发人员使用UML图对软件系统进行建模,而文档中的文字描述可以对UML图进行解释和补充,更好地表达软件系统的设计。
二、知识点类(题目中需要掌握的知识点)
Part1 软件工程基本概念
1、软件复杂程度的提高给软件开发带来的影响
(1)开发周期和维护成本增加:需要更多的时间和资源来设计、实现、测试该软件
(2)质量控制变得更加困难:复杂度的提高可能会增加软件中的缺陷和bug数量
(3)团队协作的挑战加大:复杂度的提高需要更好的沟通和协作能力,以确保整个团队能够协调合作
(4)比如说带来的软件危机,这是由于使用硬件的思想来解决了软件的问题,1个人干10个月和10个人干1个月在软件思想上未必可行,这同时也引出了软件工程的重要性
2、软件工程的定义和思想
(1) 定义:应用系统的、规范的、可量化的方法来开发、运行和维护软件,即将工程应用到软件。并对这些方法展开研究。
同时来说,软件工程是一个包含复杂内容的学科,并不能用几个有限的定义将其概括
(2) 思想:把软件当作一种工业产品,采用工程化的方法对软件的进行计划、开发和维护
1、耦合都有哪些类型,解耦的方式是什么(根据找到的材料,现在能做的是判断是什么类型,解耦只会解标记耦合和控制耦合)
(1) 非直接耦合:无直接联系,完全通过主模块的调用实现
(2) 数据耦合(最低耦合):通过数据参数交换信息,且为简单数据
(3) 标记耦合:传的数据多于真实需要的
解耦方法:只提供所需要的数据,多一个数据不给
(4) 控制耦合:调用模块传递的信息,控制了被调用模块的内部逻辑
解耦方法:将被调用模块拆解,并将判定上移
(5) 重复耦合:两个模块有一部分逻辑代码是一样的,看似无耦合,但一改逻辑需要两处都改
(6) 公共耦合:两模块访问同一公共数据(如全局变量)
(7) 内容耦合:一模块可以直接访问另一模块数据
2、148-151页的体系结构(必出一大题)
3、都有哪几种内聚,如何区分
(1) 偶然内聚:一个模块完成一组任务,任务间彼此存在松散关系,或完全不相关
(2) 逻辑内聚:几个相关功能放在同一个模块,根据调用传来的参数决定执行哪个
(3) 时间内聚:模块完成的功能必须在同一时间段内执行,功能只因时间因素关联在一起(是时间而不是时间段)
(4) 过程内聚:模块内各处理程序相关,且必须以特定次序执行
(5) 通信内聚:模块内各部分使用相同的输入数据,或产生相同的输出结果
(6) 顺序内聚:特定顺序执行,前者的输出是后者的输入
(7) 功能内聚:模块仅完成一项工作
(8) 信息内聚:模块仅对单一数据完成工作(如查询账户余额、更新账户余额,都是对账号余额这一个来做的)
4、给顺序图画类图
5、给一张图,补充图中两者之间的关系
6、类图顺序图会考的多一些(类图中更多的关注的是类与类之间的关系,而不是之前参与者与类之间的关系)
7、配件、连接件、配置
相关文章:

软件工程——期末复习(3)
一、题目类(老师重点提到过的题目) 1、高可靠性是否意味着高可用性?试举例证明自己的观点? 答:高可靠性不意味着高可用性 可靠性说明系统已经准备好,马上可以使用;可用性是系统可以无故障的持续运行,是一…...
apache的BeanUtils的Converter被相互污染覆盖问题
问题描述 apache的BeanUtils工具集中用来把map对象转换为java对象的BeanUtils#populate方法会因为单例的原因其转换器Converter被相互污染覆盖问题 maven依赖 <dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</…...

TCP的“可靠性”(上)
目录 TCP的“可靠性”(上)确认应答(可靠性传输的基础)超时重传连接管理(三次握手,四次挥手) TCP的“可靠性”(上) 想必大家都或多或少的听说过TCP的特性:有连…...

超标量处理器设计笔记(5)虚拟存储器、地址转换、page fault
虚拟存储器 概述地址转换单级页表多级页表案例最好情况:虚拟地址是连续的最差情况:每个第二级 PT 都装有一项 增加级数 Page Fault 程序保护 概述 当程序比物理内存空间更大时,无法全部装在物理内存中,需要对程序进行切片 虚拟…...

SparkSQL 读写数据攻略:从基础到实战
目录 一、输入Source 1)代码演示最普通的文件读取方式: 2) 通过jdbc读取数据库数据 3) 读取table中的数据【hive】 二、输出Sink 实战一:保存普通格式 实战二:保存到数据库中 实战三:将结果保存在h…...
react 使用状态管理调用列表接口渲染列表(包含条件查询,统一使用查询按钮,重置功能),避免重复多次调用接口的方法
react开发调用api接口一般使用useEffect来监听值的变化,通过值的变化与否来进行接口调用。 比如我们要进行一个查询接口 const [pageParams, setPage] useState({name: ,id: ,});const [dataList, setDataList] useState([]);const getList async () > {const…...

Stable Audio Open模型部署教程:用AI打造独家节拍,让声音焕发新活力!
Stable Audio Open 是一个开源的文本到音频模型,允许用户从简单的文本提示中生成长达 47 秒的高质量音频数据。该模型非常适合创建鼓点、乐器即兴演奏、环境声音、拟音录音和其他用于音乐制作和声音设计的音频样本。用户还可以根据他们的自定义音频数据微调模型&…...
加油站-(贪心算法)
题目描述 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas…...
k8s-持久化存储PV与PVC(1)
1、概述 为什么 kubernetes 要持久化存储? 在 kubernetes 中部署应用都是以 Pod 的容器运行的,而 Pod 是有生命周期,一旦 Pod 被删除或重启后,这些数据也会随着丢失,则需要对这些数据进行持久化存储。 PV࿱…...

Linux Red Hat Enterprise
下载 https://developers.redhat.com/products/rhel/download 安装...

《中型 Vue 项目:挑战与成长》
一、引言 在当今的前端开发领域,Vue 作为一款渐进式 JavaScript 框架,以其强大的功能和灵活性备受开发者青睐。对于中型 Vue 项目而言,其重要性不言而喻。中型 Vue 项目通常在功能复杂度和规模上介于小型项目和大型项目之间,既需要…...

配置 DNS over HTTPS阻止DNS污染
概念介绍 DOH简介 DNS(域名系统)的主要功能是将域名解析成IP地址,域名的解析工作由DNS服务器完成。从安全角度来看,域名解析的请求传输时通常不进行任何加密,这导致第三方能够很容易拦截用户的DNS,将用…...

Facebook广告文案流量秘诀
Facebook 广告文案是制作有效 Facebook 广告的关键方面。它侧重于伴随广告视觉元素的文本内容。今天我们的博客将深入探讨成功的 Facebook 广告文案的秘密! 一、广告文案怎么写? 正文:这是帖子的正文,出现在您姓名的正下方。它可…...

22. 五子棋小游戏
文章目录 概要整体架构流程技术名词解释技术细节小结 1. 概要 🔊 JackQiao 对 米粒 说:“今天咱们玩个五子棋小游戏,电脑与你轮流在一个 nn 的网格上放置棋子(X 或 O),网格由你输入的正整数n决定࿰…...
fastadmin框架同时使用 阿里云oss和阿里云点播
背景 项目的实际需求中既要用到阿里云oss产品又用到阿里云点播系统,实现完美的统一。设置两个地址downUrl,thirdCode。分别代表阿里云oss上传路径和阿里云点播系统vId。 实现 默认框架你已经集成好阿里云oss集成工作,前端html页面实现 <…...
Java-JMX 组件架构即详解
JMX架构由三个主要组件构成: MBeans(Managed Beans):代表可管理的资源,是JMX的核心。MBean可以是Java类或接口,提供了管理操作的接口,如获取系统信息、设置参数等。MBeanServer&#x…...

unity打包web,发送post请求,获取地址栏参数,解决TypeError:s.replaceAll is not a function
发送post请求 public string url "http://XXXXXXXXX";// 请求数据public string postData "{\"user_id\": 1}";// Start is called before the first frame updatevoid Start(){// Post();StartCoroutine(PostRequestCoroutine(url, postData…...

java+ssm+mysql校园物品租赁网
项目介绍: 使用javassmmysql开发的校园物品租赁网,系统包含管理员、用户角色,功能如下: 管理员:用户管理;物品管理(物品种类、物品信息、评论信息);订单管理࿱…...

Spring Boot中实现JPA多数据源配置指南
本文还有配套的精品资源,点击获取 简介:本文详细介绍了在Spring Boot项目中配置和使用JPA进行多数据源管理的步骤。从引入依赖开始,到配置数据源、创建DataSource bean、定义实体和Repository,最后到配置事务管理器和使用多数据…...
服务器加固
1.服务器密码复杂度 密码最小长度,密码复杂度策略 vim /etc/pam.d/system-auth --------------- #密码配置 #ucredit:大写字母个数;lcredit:小写字母个数;dcredit:数字个数;ocredit:…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...