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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SList(单链表)

文章目录 一:线性表二:数组2.1数组在内存中的存储 三:链式结构四:单链表4.1概念与结构4.1.1概念4.1.2 结构(节点)4.1.3链表的性质4.1.4链表的打印 4.2实现单链表 结语 欢迎大家来到我的博客,给生…

VTK知识学习(21)- 数据的读写

1、前言 对于应用程序而言,都需要处理特定的数据,VTK应用程序也不例外。 VTK应用程序所需的数据可以通过两种途径获取: 第一种是生成模型,然后处理这些模型数据(如由类 vtkCylinderSource 生成的多边形数据); 第二种是从外部存储介质里导…

Nignx部署Java服务测试使用的Spring Boot项目Demo

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

虚幻引擎生存建造系统

先做一个建造预览模式,按下按键B后进入建造预览模式 首先创建自定义事件Preview Loop 用射线追踪摆放物体预览位置,并做一个预览材质 增强输入设置按键 每帧判断是否进入建造模式 预览模式制作成功! 接着做点击左键放置物品&#xff0…

Blender中使用BlenderGIS插件快速生成城市建筑模型

导入下载 BlenderGIS 插件 去github上下载其压缩包,地址如下: https://github.com/domlysz/BlenderGIS 在BlenderGIS中导入这个插件压缩包: 点击上方菜单栏的编辑,点击偏好设置 在插件>从磁盘安装中导入刚刚下载的压缩包 可…

C语言期末复习

1、任意输入一个半径给r&#xff0c;求圆的面积。 #include <stdio.h> #include <windows.h> void main() { double r,s; printf("输入一个半径给r"); scanf("%lf",&r); sr*r*3.1415926; printf("%lf",s); system(&qu…

深圳大学《2024年904自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《深圳大学904自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题

transformers生成式对话机器人

简介 生成式对话机器人是一种先进的人工智能系统&#xff0c;它能够通过学习大量的自然语言数据来模拟人类进行开放、连贯且创造性的对话。与基于规则或检索式的聊天机器人不同&#xff0c;生成式对话机器人并不局限于预定义的回答集&#xff0c;而是可以根据对话上下文动态地…

NanoLog起步笔记-4-Server端的两个线程

nonolog起步笔记-4-Server端的两个线程 Server端的两个线程两个线程的角色与各自的职责RuntimeLogger::compressionThreadMain线程 详细学习一下相关的代码第三个线程第一次出现原位置swip buffer Server端的两个线程 如前所述&#xff0c;nanolog的server端&#xff0c;相对而…

Freertos任务切换

一、操作系统进行任务切换的时机&#xff1a; 采用信号量实现任务的互斥&#xff1a; 二、FreeRTOS 任务切换场合 PendSV 中断的时候提到了上下文(任务)切换被触发的场合&#xff1a; ● 可以执行一个系统调用 ● 系统滴答定时器(SysTick)中断。 1、执行系统调用 执行系统…

【硬件测试】基于FPGA的4FSK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.Verilog核心程序 4.开发板使用说明和如何移植不同的开发板 5.完整算法代码文件获得 1.算法仿真效果 本文是之前写的文章: 《基于FPGA的4FSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR》 的…

【Vue2+Element-ui】el-dialog宽度适配

1、不适配问题 分辨率100%-页面 分辨率150%-页面 在项目中&#xff0c;我开发分辨率一直是100%&#xff0c;但是客户使用的分辨率不相同&#xff0c;所以宽度要适配 2、解决-封装mixins.js 1)、封装的mixins 我将宽度设置成动态的&#xff0c;因为我的项目中需求不同。 expor…

Tr0ll: 1 Vulnhub靶机渗透笔记

Tr0ll: 1 本博客提供的所有信息仅供学习和研究目的&#xff0c;旨在提高读者的网络安全意识和技术能力。请在合法合规的前提下使用本文中提供的任何技术、方法或工具。如果您选择使用本博客中的任何信息进行非法活动&#xff0c;您将独自承担全部法律责任。本博客明确表示不支…

23. C++STL 9 (priority_queue的使用和适配实现详解)

⭐本篇重点&#xff1a; 1 priority_queue的使用与底层原理 2 使用容器来适配 priority_queue ⭐本篇代码&#xff1a;c学习 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) ⭐标⭐是比较重要的部分 目录 一. priority_queue&#xff08;优先级队列&#xff09;的…

十四、Pod的升级和回滚

当集群中的某个服务需要升级时,我们需要停止目前与该服务相关的所有Pod,然后下载新版本镜像并创建新的Pod。如果集群规模比较大,则这个工作变成了一个挑战,而且先全部停止然后逐步升级的方式会导致较长时间的服务不可用。Kubernetes提供了滚动升级功能来解决上述问题。 如…

中间件--MongoDB部署及初始化js脚本(docker部署,docker-entrypoint-initdb.d,数据迁移,自动化部署)

一、概述 MongoDB是一种常见的Nosql数据库&#xff08;非关系型数据库&#xff09;&#xff0c;以文档&#xff08;Document&#xff09;的形式存储数据。是非关系型数据库中最像关系型数据库的一种。本篇主要介绍下部署和数据迁移。 在 MongoDB 官方镜像部署介绍中&#xff…

MES系统通过eDrawings Pro API开发图纸批量转换工具,实现3D在线查看

声明&#xff1a;部分代码来源于网络&#xff0c;如有疑问&#xff0c;请联系本人删除。 通过C#结合eDrawings API提供接口&#xff0c;实现图纸转换为换.jpg、.tif、.bmp、.stl、.exe、.html、.zip、.edrw、.eprt 和 .eas格式工具&#xff0c;尤其是.html格式&#xff0c;可以…

Java阶段三06

第3章-第6节 一、知识点 理解MVC三层模型、理解什么是SpringMVC、理解SpringMVC的工作流程、了解springMVC和Struts2的区别、学会使用SpringMVC封装不同请求、接收参数 二、目标 理解MVC三层模型 理解什么是SpringMVC 理解SpringMVC的工作流程 学会使用SpringMVC封装请求…

【计算机网络】期末速成(2)

部分内容来源于网络&#xff0c;侵删~ 第五章 传输层 概述 传输层提供进程和进程之间的逻辑通信&#xff0c;靠**套接字Socket(主机IP地址&#xff0c;端口号)**找到应用进程。 传输层会对收到的报文进行差错检测。 比特流(物理层)-> 数据帧(数据链路层) -> 分组 / I…

word poi-tl 表格功能增强,实现表格功能垂直合并

目录 问题解决问题poi-tl介绍 功能实现引入依赖模版代码效果图 附加&#xff08;插件实现&#xff09;MergeColumnData 对象MergeGroupData 类ServerMergeTableData 数据信息ServerMergeTablePolicy 合并插件 问题 由于在开发功能需求中&#xff0c;word文档需要垂直合并表格&…