软件工程——期末复习(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、配件、连接件、配置

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

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

相关文章

程序员需要具备哪些知识?

程序员需要掌握的知识广泛而深厚,这主要取决于具体从事的领域和技术方向。不过,有些核心知识是共通的,就像建房子的地基一样,下面来讲讲这些关键领域: 1. 编程语言: 无论你是搞前端、后端、移动开发还是嵌…

[Blender]从零开始的blender导入PMX模型教程

一、前言 最近正在接触3D打印,目前我发现,在开源的模型市场上3D的人物模型非常有限并且部分还维持收费。所以就有了一个想法,能不能自己制作3D打印的人物模型。目前虽然开源的3D打印人物模型比较少,但是以PMX开源的人物模型却非常…

C#与PLC通讯时,数据读取和写入浮点数,字节转换问题(ModbusTCP)

在与PLC进行通讯时,会发现一个问题,浮点数1.2接收过来后,居然变成了两个16位的整数。 经过一系列的分析,这是因为在PLC存储浮点数时32位,我们接收过来的数据会变成两个16位的高低字节,而且我们进行下发数据…

替代FTP最佳跨网文件传输解决方案——FileLink

在传统的企业文件传输中,FTP(文件传输协议)曾因其便捷性和高效性被广泛应用。然而,其固有的安全漏洞、对大文件传输支持的局限性、易受网络攻击等问题,已逐渐暴露出FTP在现代企业环境下的不足。针对这一问题&#xff0…

纯粹直播 1.7.7 |手机版和TV版,聚合六大直播平台,原画播放

纯粹直播是一款开源的应用程序,支持兴趣化主题的游戏直播、户外直播和才艺直播节目。目前可以观看斗鱼、B站、虎牙和抖音等六大直播平台的内容。该应用适配了安卓手机和电视盒子平台使用,并且软件无广告,提供原画质播放体验。 大小&#xff…

汉诺塔(递归)

递归、搜索与回溯算法 文章目录 递归、搜索与回溯算法前言一、递归的思想二、汉诺塔三、为什么可以使用递归思想?四、代码实现 Leetcode汉诺塔 前言 这是记录我学习算法的一个专题,如果你正在备战这类比赛,我想这对你一定有帮助。 一、递归…

【JUC-锁升级】简要版本

锁升级过程 一、偏向锁二、轻量级锁三、重量级锁四、整体流程 为什么不全部使用Synchronized、Lock等重量级锁呢? 重量级锁底层是基于操作系统的互斥锁实现的,涉及到用户态与内核态之间的切换。 一、偏向锁 如果只有一个线程A频繁的访问某一个共享资源…

C++小碗菜之二:软件单元测试

“没有测试的代码重构不能称之为重构,它仅仅是垃圾代码的到处移动” ——Corey Haines 目录 前言 什么是单元测试? 单元测试的组成 单元测试的命名 单元测试的独立性 Google Test 单元测试的环境配置与使用 1. Ubuntu下安装 Google Test 2. 编写…

家庭财务管理系统的设计与实现ssm小程序+论文源码调试讲解

2系统关键技术 2.1 微信小程序 微信小程序,简称小程序,英文名Mini Program,是一种全新的连接用户与服务的方式,可以快速访问、快速传播,并具有良好的使用体验。 小程序的主要开发语言是JavaScript,它与普…

linux运维命令

防火墙相关命令 防火墙规则查看 firewall-cmd --list-all 禁ping firewall-cmd --permanent --add-rich-rulerule protocol valueicmp drop firewall-cmd --reload 执行完以上命令后,通过firewall-cmd --list-all查看规则生效情况 firewall-cmd --list-all 其…

高通---Camera调试流程及常见问题分析

文章目录 一、概述二、Camera配置的整体流程三、Camera的代码架构图四、Camera数据流的传递五、camera debug FAQ 一、概述 在调试camera过程中,经常会遇到各种状况,本篇文章对camera调试的流程进行梳理。对常见问题的提供一些解题思路。 二、Camera配…

HCIA-openGauss_2_1数据库安装部署

本章导读 openGauss是关系型数据库,采用客户端/服务器,单进程多线程架构,支持单机和一主多备部署方式,备机可读,支持双机高可用和读扩展。 本章详细介绍了安装openGauss的环境和安装部署配置、openGauss数据库的连接…

《Tyche: Stochastic In-Context Learning for Medical Image Segmentation》CVPR2024

摘要 这篇论文介绍了一个名为Tyche的模型,它用于医学图像分割任务。Tyche通过使用上下文集来为以前未见过的任务生成随机预测,无需重新训练。该模型解决了两个主要问题:1) 对于大多数新的分割任务,需要重新训练或微调新模型&…

47 基于单片机的书库环境监测

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,采用DHT11湿度传感器检测湿度,DS18B20温度传感器检测温度, 采用滑动变阻器连接数模转换器模拟二氧化碳和氧气浓度检测,各项数值通过lc…

NAND闪存行业全面且深入的分析

根据QYResearch调研团队的最新报告“全球NAND闪存市场报告2023-2029”,预计2029年全球NAND闪存市场规模将达到1263亿美元,未来几年年复合增长率(CAGR)为10.0%。这一预测揭示了NAND闪存市场的强劲增长潜力。 一、市场研究与发展趋…

html-两个div,让一个div跟随另外一个div的高度

在开发的过程中遇到有些场景事这样的,两个div的高度不一致,而且都是动态高度,有的时候div1高,有的时候div2高,如果设置flex的话,那么就会把较矮的元素撑大,但是我想始终都以div1的高度作为基准&…

函数方法不占额外存储空间(内存分区)?

上篇博客说到扩展是不会增加存储空间的,且扩展不能扩展存储属性。既然这样,那我们就能理所应当推断出方法是不占存储空间的,为什么呢? 首先,我们要先了解内存的五大分区:栈,堆,静态…

IDEA注释格式、匹配补全调整

1.注释格式调整 目前重新捡起一部分Java,写代码时候发现注释快捷键总是放在第一列,看起来很难受,故寻找方法如下: 分别点击 编辑器-代码样式-Java 修改注释代码选项如下 2.大小写匹配补全问题 还发现在写代码过程中&#xff0c…

抖音矩阵系统快速部署指南/抖音矩阵系统源码分发,短视频矩阵账号管理系统开发部署—

抖音矩阵系统的源码分发与短视频账号管理平台的开发部署,要求通过对接官方API来实现功能的拓展。当前开发的账号矩阵管理系统专注于提供一键式管理多个账户的能力,支持定时发布内容、自动化关键词生成以实现搜索引擎优化(SEO)和霸…

算法笔记:力扣49.字母异位词分组

思路:排序哈希表映射 关键API: char [] arr str.toCharArray(); 将字符串转为字符数组返回。 Arrays.sort(arr); 对数组进行排序; Map.getOrDefault(Object key, V defaultValue): 要查找的键和默认值。如果键存在&#xf…