Minerno's Blog 明日やろうは、馬鹿野郎だ。
博主

一小时前在线

Minerno's Blog
明日やろうは、馬鹿野郎だ。
歌曲封面 未知作品
  • 歌曲封面AzizamEd Sheeran
Title

软件工程概论复习

Minerno

·

期末笔记

·

Article
⚠️ 本文最后更新于2025年01月27日,已经过了91天没有更新,若内容或图片失效,请留言反馈

分值

♾️ text 代码:
选择: 10 * 2
判断: 10 * 1
填空: 20 * 1
名词解释: 5 * 2
简答:    4 * 5
综合: 2 * 10

选择

1
♾️ markdown 代码:
程序的三种基本控制结构的共同特点是( )
A.不能嵌套使用    
B.只能用来写简单的程序    
C.已经用硬件实现    
D.只有一个入口和一个出口

答案:D


2
♾️ text 代码:
结构化分析SA方法以数据流图、( )和加工说明等描述工具,即用直观的图和简洁的语言来描述软系统模型。
A.DFD图    
B.PAD图
C.IPO图      
D.数据字典

答案:D


3
♾️ text 代码:
瀑布模型把软件生存周期划分为软件定义、软件开发和( )三个阶段,而每一个阶段又可划分为若干个更小的阶段。
A.详细设计
B.可行性分析
C.运行和维护
D.测试和排错

答案:C


4
♾️ text 代码:
软件按照设计的要求,在规定时问和条件下达到不出故障,持续运行的要求的质量特性称( )
A.可用性
B.可靠性
C.正确性
D.完整性

答案:B


5
♾️ text 代码:
从事物的组成部件及每个部件的属性、功能来认识事物。这种方法被称为( ) 的方法。
A.面向对象
B.面向数据
C.面向过程
D.面向属性

答案:A


6
♾️ text 代码:
技术可行性是可行性研究的关键,其主要内容一般不包括()
A.风险分析
B.资源分析
C.人员分析
D.技术分析

答案:C


7
♾️ text 代码:
在需求分析之前有必要进行( )工作
A.程序设计
B.可行性分析
C.E-R分析
D.数据分析

答案:B


8
♾️ text 代码:
为改正软件系统中潜藏的错误而进行的维护活动称为( )
A.纠错性维护
B.适应性维护
C.改善性维护
D.预防性维护

答案:A


9
♾️ markdown 代码:
( )定义为调用(或控制)一个给定模块的调用模块的数目。
A.扇出
B.扇入
C.深度
D.宽度

答案:B


10
♾️ markdown 代码:
以下不属于白盒测试技术的是( )
A.逻辑覆盖
B.基本路径测试
C.循环覆盖测试
D.等价类划分

答案:D


11
♾️ markdown 代码:
软件工程这一术语首次出现在( )年的NATO会议上
A.1968
B.1970
C.1956
D.2001

答案:A


12
♾️ markdown 代码:
在软件结构化设计中,好的软件结构设计应该力求做到( )
A.顶层扇出较少, 中间层扇出较高,底层模块低扇入
B.顶层扇出较高,中间层扇出较少,底层模块高扇入
C.顶层扇入较少,中间层扇出较高,底层模块高扇入
D.顶层扇入较少,中间层扇入较高,底层模块低扇入

答案:B


13
♾️ markdown 代码:
软件的可行性研究中不包括()
A.法律可行性
B.技术可行性
C.经济可行性
D.政治可行性

答案:D


14
♾️ markdown 代码:
数据流图中,当数据流向或流自文件时()
A.数据流要命名,文件不必命名
B.数据流不必命名,有文件名就足够了
C.数据流和文件均要命名,因为流出和流进的数据流是不同的
D.数据流和文件均不要命名,通过加工可自然反映出

答案:B


15
♾️ markdown 代码:
瀑布模型的存在问题是()
A.广容易参与开发
B.缺乏活性
C.用广川发品易沟通
D.使用可心尚水

答案:B


16
♾️ markdown 代码:
快速原型模型的主要特点之一是()
A.开发完华才见到产品
B.及早提供个部完整的软件品
C.开发华质才见到工作软件
D.及早提供工作软件

答案:D


17
♾️ markdown 代码:
需求分析的任务不包括()
A.问题分析
B.系统设计
C.需求描述
D.需求评审

答案:B


18
♾️ markdown 代码:
软件测试方法中,黑盒测试和白盒测试是常用的方法,其中黑盒测试主要用于测试()
A.结构合理性
B.软件外部功能
C.程序正确性
D.程序内部逻辑

答案:B


19
♾️ markdown 代码:
软件结构图的形态特征能反映程序复用率的是()
A.深度
B.宽度
C.扇入
D.扇出

答案:C


20
♾️ markdown 代码:
一个成功的测试可以()
A.表明程序没有错误
B.发现所有的错误
C.提高软件可靠性
D.发现尚未发现的错误

答案:D


21
♾️ markdown 代码:
程序的三种基本控制结构是()
A.过程、子程序和分程序
B.顺序、选择和重复
C.递归、堆栈和队列
D.调用、返回和转移

答案:B


22
♾️ markdown 代码:
以下哪一项不是软件危机的表现形式()
A.开发的软件不满足用户需要
B.开发的软件可维护性差
C.开发的软件价格便宜
D.开发的软件可靠性差

答案:C


23
♾️ markdown 代码:
盒图也称为( )或Chapin图。这种表达方式取消了流程线,它强迫程序员以结构化方式思考和解决问题。
A.流程图
B.框图
C.判定表
D.N-S图

答案:D


24
♾️ markdown 代码:
在面向对象的设计中,我们应遵循的设计准则除了模块化、抽象、低耦合、高内聚以外,还有()
A.隐藏复杂性
B.信息隐蔽
C.经常类的复用
D.类的开发

答案:B


25
♾️ markdown 代码:
环境图也成为()
A.0层数据流图
B.1层数据流图
C.2层数据流图
D.3层数据流图

答案:A


26
♾️ markdown 代码:
模块独立性比较强的模块应是( )的模块。
A.低内聚高耦合
B.高内聚高耦合
C.高内聚低耦合
D.低内聚低耦合

答案:C


27
♾️ markdown 代码:
需求分析最终结果是产生()
A.项目开发计划
B.需求规格说明书
C.设计说明书
D.可行性分析报告

答案:B


28
♾️ markdown 代码:
以下不属于逻辑覆盖的是()
A.语句覆盖
B.判定覆盖
C.条件覆盖
D.基本路径

答案:D


29
♾️ markdown 代码:
()表示一个模块直接调用(或控制)的下属模块的数目。
A.扇出
B.扇入
C.深度
D.宽度

答案:A


30
♾️ markdown 代码:
为了提高测试的效率,应该()
A.随机地选取测试数据
B.取一切可能的输入数据作为测试数据
C.在完成编码以后制定软件的测试计划
D.选择发现错误可能性大的数据作为测试数据

答案:D


判断(部分)

1
♾️ text 代码:
软件就是程序,软件开发就是编程序。()

答案:×

2
♾️ text 代码:
算法对于效率的影响体现在程序的执行时占用的内存。()

答案:×

3
♾️ text 代码:
螺旋模型可以有效识别分析风险。()

答案:

4
♾️ text 代码:
实体关系图描述数据对象以及数据对象之间的关系。()

答案:


判断知识点

1
♾️ text 代码:
一个设计得很好的软件模块化结构,通常上层扇出比较高,中层扇出比较少,底层公用模块的扇入较高
2
♾️ text 代码:
逻辑覆盖 属于白盒测试
等价类划分、边界值分析、因果图等 属于黑盒测试
3
♾️ text 代码:
1)满足判定覆盖 一定 满足语句覆盖
2)满足条件覆盖 不一定 满足分支覆盖(判定覆盖)
3)判定-条件覆盖 满足 判定覆盖 又满足 条件覆盖

简答

1.瀑布模型的优缺点
♾️ text 代码:
优: 1)可强迫开发人员采用规范化的方法
    2)严格地规定了每个阶段必须提交的文档
    3)要求每个阶段交出的所有产品都必须是经过验证(评审)的
缺: 1)由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要
    2)只适用于项目开始时需求已确认的情况
2.敏捷开发宣言
♾️ text 代码:
1)个体和交互 胜过 过程和工具
2)可工作软件 胜过 宽泛的文档
3)客户合作 胜过 合同谈判
4)响应变更 胜过 遵循计划
3.需求的来源可以来自以下几种典型的途径。(或 需求来源的几种典型途径)
♾️ text 代码:
1)与用户进行交流
2)现有产品或竞争产品的描述文档
3)系统需求规格说明
4)当前系统的问题报告和改进要求
5)市场调查和用户问卷调查
6)观察用户如何工作
4.软件设计的5项原则
♾️ text 代码:
1)分而治之
2)模块独立性
3)提高抽象层次
4)复用性设计
5)灵活性设计
5.启发式规则
♾️ text 代码:
1)模块功能的完善
2)消除重复功能,改善软件结构
3)模块的作用范围应在控制范围之内
4)尽可能减少高扇出结构,随着深度增大扇入
5)避免或减少使用病态连接
6)模块的大小要适中
6.模式的4个基本要素
♾️ text 代码:
1)模式名称
2)问题
3)解决方案
4)效果
7.常用的设计模式(七选五满分)
♾️ text 代码:
1)抽象工厂
2)单件
3)外观
4)适配器
5)职责链
6)中介者
7)观察者
8.计算环路复杂性
♾️ text 代码:
1)控制流程图中的区域数
2)设E为控制流图的边数,N为图中的结点数,则:    V(G)=E-N+2
3)设P为控制流图中的判定结点数,则:        V(G)=P+1

填空

1.软件的分类
♾️ text 代码:
1)系统软件
2)支撑软件
3)应用软件
4)可复用软件
2.结构化分析模型

P46

image-20250102144151910
3.数据流图四个基本符号
♾️ text 代码:
1)加工
2)外部实体
3)数据存储
4)数据流
4.数据流图基本步骤
♾️ text 代码:
1)自外向内
2)自顶向下
3)逐层细化
4)完善求精
5.状态图三种状态
♾️ text 代码:
1)初态
2)终态
3)中间态
6.SRS、DRD
♾️ text 代码:
SRS: 软件需求规格说明
DRD: 数据需求说明
7.软件设计的两个阶段
♾️ text 代码:
1)概要设计阶段
2)详细设计阶段
8.典型的数据流类型
♾️ text 代码:
1)变换型数据流
2)事务性数据流
9.用户类型
♾️ text 代码:
1)外行型
2)初学型
3)熟练型
4)专家型
10.典型体系结构风格
♾️ text 代码:
1)数据流风格
2)调用-返回风格
3)仓库风格
11.注释分为
♾️ text 代码:
1)序言性注释
2)功能性注释
12.程序编写原则
♾️ text 代码:
1)清晰第一
2)效率第二
13.等价类划分
♾️ text 代码:
1)有效等价类
2)无效等价类
14.软件测试过程4个步骤
♾️ text 代码:
1)单元测试
2)组装测试
3)确认测试
4)系统测试
15.模块组装为系统方式
♾️ text 代码:
1)一次性组装
2)增殖式组装
16.人工测试的主要方法
♾️ text 代码:
1)桌面检查
2)代码评审
3)走查
17.软件维护4种类型
♾️ text 代码:
1)改正性维护
2)适应性维护
3)完善性维护
4)预防性维护

名词解释

1.软件
♾️ text 代码:
计算机系统中与硬件相互依存的另一部分,包括程序、数据、相关文档的完整集合
(软件=程序+数据+文档)
2.软件危机
♾️ text 代码:
软件的发展速度远远滞后于硬件的发展速度,不能满足社会日益增长的软件需求
(特点:软件开发周期长、成本高、质量差、维护困难)
3.软件工程
♾️ text 代码:
采用工程化的思想进行软件的开发和维护提高软件开发的质量和效率
4.软件生存期(软件生命周期)
♾️ text 代码:
软件的一个孕育、诞生、成长、成熟、衰亡的生存过程
5.CASE工具
♾️ text 代码:
计算机辅助软件工程工具
6.V模型
♾️ text 代码:
描述测试阶段的活动与开发阶段相关活动之间的关系
7.增量模型(渐增模型)
♾️ text 代码:
把产品作为一系列的增量构件来设计、编码、集成、测试,每个构件由多个相互作用的模块构成并且能够完成特定的功能
8.螺旋模型与其他软件过程模型之间的区别
♾️ text 代码:
在于 明确地考虑了开发中的风险
9.数据字典
♾️ text 代码:
以词条方式定义在数据模型、功能模型和行为模型中出现的数据对象及控制信息的特性,给出它们的准确定义,包括数据流、加工、数据文件、数据元素,以及数据源点和数据汇点等
10.模块化
♾️ text 代码:
将整体软件划分成独立命名且可独立访问的模块,不同的模块通常具有不同的功能或职责
11.模块的独立性
♾️ text 代码:
软件系统中每个模块只涉及软件要求的具体的子功能,而与软件系统中其他模块的接口是简单的

​ 独立性较强的是 高内聚、低耦合

12.度量模块独立性
♾️ text 代码:
即 模块间的耦合 和 模块的内聚
13.扇出和扇入

P76 需会计算扇入扇出

♾️ text 代码:
扇出: 一个模块直接调用(或控制)的下属模块的数目
扇入: 调用一个给定模块的调用模块的数目
14.黑盒测试
♾️ text 代码:
意味着测试要根据软件的外部特征进行,也就是说,这种方法是把测试对象看作一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明
15.白盒测试
♾️ text 代码:
是对软件的过程性细节做细致的检查,这一方法是把测试对象看作一个打开的盒子或透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期状态一致。因此,白盒测试又称作结构测试或逻辑驱动测试
16.等价类
♾️ text 代码:
某个输入域的子集合,在该子集合中,各个输入数据对于揭露程序中的错误都是等效的
17.α测试
♾️ text 代码:
是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试
18.β测试
♾️ text 代码:
是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试

综合

1.银行储蓄系统用例图

P133

6D4951C5752E4B7C5C775A8F351F51FA
2.逻辑覆盖

P239

♾️ text 代码:
四条路径表示
L1(a→c→e)
L2(a→b→d)
L3(a→b→e)
L4(a→c→d)
image-20250102163820637

​ 图10-7

3.语句覆盖

P240

♾️ text 代码:
设计若干个测试用例,运行被测程序,使得每一个可执行语句执行一次
♾️ text 代码:
【输入的(A,B,x),输出的(A,B,x)】
为图10-7所示例子设计满足覆盖的测试用例是:
【(2,0,4),(2,0,3)】覆盖ace【L1】
4.判定覆盖

P240

♾️ text 代码:
设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次
♾️ text 代码:
选择L1、L2路径
【(2,0,4),(2,0,3)】覆盖ace【L1】
【(1,1,1),(1,1,1)】覆盖abd【L2】
选择L3、L4路径
【(2,1,1),(2,1,2)】覆盖abe【L3】
【(3,0,3),(3,1,1)】覆盖acd【L4】
5.条件覆盖

P240

♾️ text 代码:
设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件可能取值至少执行一次
♾️ text 代码:
对于第一个判断:条件 A>1 取真值为 T1 ,取假值为 ¬T1;
             条件 B=0 取真值为 T2 ,取假值为 ¬T2。
对于第二个判断:条件 A=2 取真值为 T3 ,取假值为 ¬T3;
             条件 x>1 取真值为 T4 ,取假值为 ¬T4。
测试用例通过路径条件取值覆盖分支
【(2,0,4),(2,0,3)】ace【L1】T1 T2 T3 T4c,e
【(1,0,1),(1,0,1)】abd【L2】¬T1 T2 ¬T3 ¬T4b,d
【(2,1,1),(2,1,2)】abe【L3】T1 ¬T2 T3 ¬T4b,e

测试用例通过路径条件取值覆盖分支
【(1,0,3),(1,0,4)】abe【L3】¬T1 T2 ¬T3 T4b,e
【(2,1,1),(2,1,2)】abe【L3】T1 ¬T2 T3 ¬T4b,d
6.判定-条件覆盖

P241

♾️ text 代码:
设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次
测试用例通过路径条件取值覆盖分支
【(2,0,4),(2,0,3)】ace【L1】T1 T2 T3 T4c,e
【(1,1,1),(1,1,1)】abd【L2】¬T1 ¬T2 ¬T3 ¬T4b,d
7.条件组合覆盖

P242

♾️ text 代码:
设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次
♾️ text 代码:
1) A>1,B=0 记作 T1 T2,属第一个判断的取真分支;
2) A>1,B≠0 记作 T1 ¬T2,属第一个判断的取假分支;
3) A≤1,B=0 记作 ¬T1 T2,属第一个判断的取假分支;
4) A≤1,B≠0 记作 ¬T1 ¬T2,属第一个判断的取假分支;
5) A=2,X>1 记作 T3 T4,属第二个判断的取真分支;
6) A=2,X≤1 记作 T3 ¬T4,属第二个判断的取真分支;
7) A≠2,X>1 记作 ¬T3 T4,属第二个判断的取真分支;
8) A≠2,X≤1 记作 ¬T3 ¬T4,属第二个判断的取假分支。
测试用例通过路径条件取值覆盖分支
【(2,0,4),(2,0,3)】ace【L1】T1 T2 T3 T41),5)
【(2,1,1),(2,1,2)】abe【L3】T1 ¬T2 T3 ¬T42),6)
【(1,0,3),(1,0,4)】abe【L3】¬T1 T2 ¬T3 T43),7)
【(1,1,1),(1,1,1)】abd【L2】¬T1 ¬T2 ¬T3 ¬T44),8)
8.路径覆盖

P242

♾️ text 代码:
设计足够的测试用例,覆盖程序中所有可能的路径
测试用例通过路径条件取值
【(2,0,4),(2,0,3)】ace【L1】T1 T2 T3 T4
【(1,1,1),(1,1,2)】abd【L2】¬T1 ¬T2 ¬T3 ¬T4
【(1,1,2),(1,1,3)】abe【L3】¬T1 ¬T2 ¬T3 T4
【(3,0,3),(3,0,1)】acd【L4】T1 T2 ¬T3 ¬T4

其他知识点(未标注分类)

1.详细设计阶段
♾️ text 代码:
决定各个模块的实现算法,并使用过程描述工具精确地描述这些算法
2.面向对象和对象
♾️ text 代码:
面向对象 = 对象 + 类 + 继承 + 消息通信
对象 = 数据 + 作用于这些数据上地操作
3.类
♾️ text 代码:
具有相同操作功能和相同数据格式(属性)的对象的集合与抽象
4.封装
♾️ text 代码:
一种信息隐蔽技术,就是利用抽象数据类型将数据和基于数据的操作封装在一起
5.继承
♾️ text 代码:
一种联结类的层次模型,为类的重用提供了方便,它提供了明确表述不同类之间共性的方法
新类从现有类中派生的过程,称为类继承
6.多态
♾️ text 代码:
一个程序中同名的不同方法共存的情况
7.消息
♾️ text 代码:
是一个对象向另一个对象传递的信息
8.面向对象3中模型
♾️ text 代码:
1)用例模型:用例和场景表示的 功能模型
2)对象模型:类和对象表示的 静态模型
3)交互模型:状态图、顺序图等表示的 动态模型
9.软件体系结构
♾️ text 代码:
是具有一定形式的结构化元素,即构件的集合
包括
1)处理构件
2)数据构件
3)连接构件
10.软件测试
♾️ text 代码:
是为了发现错误而执行程序的过程
11.基本路径测试
♾️ text 代码:
是在程序控制流图的基础上,通过分析控制构造的环路复发性,导出基本可执行的路径集合,从而设计测试用例
12.“救火”式的紧急维护
♾️ text 代码:
如果发生的错误非常严重,不马上解决可能导致重大事故,这样就必须紧急修改,暂不顾及正常的维护控制,不必考虑评价可能发生的副作用
13.副作用
♾️ text 代码:
指因修改软件而造成的错误或其他不希望发生的情况
14.3种副作用
♾️ text 代码:
1)修改代码的副作用
2)修改数据的副作用
3)文档的副作用
15.软件维护性
♾️ text 代码:
评价软件产品质量的一项重要指标,指当对软件实施各种类型的维护而进行修改时,软件产品可被修改的能力
16. 软件维护的工作流程

P273

image-20250102160240387
现在已有 144 次阅读,0 条评论,0 人点赞
Comment:共0条
发表
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主 不再显示
博主