文章目录
前言
-
这篇博文是对四川大学软件学院2022级《软件工程导论》课程的知识总结,借鉴内容为课件和慕课上的公开课视频。
-
每一章后面有单元测验解答,题目来源为慕课上的《软件工程与实践导论》——四川大学
-
第 2 章的内容和第 1 章中的部分内容高度耦合,笔者就将第 2 章融入到第 1 章里面了
第 1 章 软件工程的概念 & 第 2 章 软件过程
0 学习内容

1 软件的定义
-
计算机软件 = 程序 + 数据结构 + 文档
- 程序:指令的集合,通过执行这些指令可以满足预期的特征、功能和性能需求
- 数据结构:使得程序可以合理利用信息
- 文档:软件描述信息,用来描述程序操作和使用
-
计算机软件的双重作用
- 产品
- 作为一个产品,软件扮演着信息交换的角色
- 产品交付载体
- 软件提供了我们这个时代最重要的产品:信息
- 产品
2 软件的特点 & 3 软件和硬件的区别
- 软件是设计开发出来的一种
逻辑的产品
,与硬件产品有本质区别 - 软件
产品质量的体现方式
与硬件不同,软件不会“磨损” - 软件产品的
成本构成
与硬件产品的成本构成不同。- 软件产品的成本构成
- 人力成本
- 时间成本
- 硬件产品的成本构成
- 原材料成本
- 软件产品的成本构成
- 软件产品的失败曲线与硬件产品不同
- 大多数软件是根据
顾客需求定制产生
,硬件的可复用性
比软件强很多
4 软件生命周期和软件危机

-
软件生产发展的三个阶段
- 程序设计时代(1946~1956)
- 程序系统时代(1956~1968)
- 软件工程时代(1968至今)
-
软件危机
- 定义:
- 落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件
开发
和维护
过程中出现的一系列严重问题的现象
- 落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件
- 软件危机的具体表现:
- 软件危机产生的原因:
- 定义:
5 什么是软件工程?
软件工程即运用系统的、科学的、可量化的方法开发、运行和维护软件,将工程化的方法运用到软件开发中。
软件工程 = 计算机科学 + 管理 + 工程
6 软件工程的层次结构
软件工程是一种层次化的技术

- 软件工程的根基:质量关注点
- 软件工程的基础:软件开发过程
- 软件工程的核心:软件开发方法
- 软件工程的关键:软件开发工具
软件工程 = 过程 + 方法 + 工具
7 软件过程基本框架活动
- 软件过程 的定义:
- 构建产品时所执行的一系列活动、动作和任务的集合
- 软件过程 的特点:
- 软件过程不是如何构建计算机软件的严格规定,而是一种可适应性调整的方法
- 软件过程框架(process framework)的 5 个活动:

除了上述 5 个最基本的活动之外,软件过程还有很多其他辅助支持活动(普适性活动):

8 软件神话的观点和看法
- 一本软件开发标准和规程宝典,可以提供需要了解的所有信息。只要照此宝典,就一定能开发出成功的软件产品吗?
- 不可以
- 尽信书不如无书,实践才是检验真理的唯一标准
- 如果我们未能按时完成计划,可以通过增加程序员人数而赶上进度吗?
- 不可以
- 只有有计划、有序地增加开发人员,才能对我们地项目开展有意义
- 当我们完成程序并将其交付使用后,我们的任务就完成了吗?
- 并没有
- 软件有生命周期,当软件交付给用户之后,将进入软件维护阶段,这是软件任务并没有完成。
- 对于一个成功的软件项目,可执行程序时唯一可交付的工作成果
- 错误
- 除了交付可执行程序,还有知道用户正确使用软件的操作手册、维护手册等等这些帮助文档都是工作成果
第 1 单元单元测验
1、单选题:
开发软件的高成本和产品的低质量之间有着尖锐的矛盾,这称作( )。
选项:
A: 软件投机
B: 软件危机
C: 软件工程
D: 软件产生
2、单选题:
软件工程学是应用科学理论和工程上的技术指导软件开发的学科,其目的是( )。
选项:
A: 引入新技术提高空间利用率
B: 用较少的投资获得高质量的软件
C: 缩短研制周期扩大软件功能
D: 硬软件结合使系统面向应用
3、单选题:
软件生命周期中持续时间最长的阶段是( )
选项:
A: 详细设计
B: 软件编码
C: 软件测试
D: 软件维护
4、单选题:
可行性分析研究的主要目的是( ) 。
选项:
A: 定义项目
B: 项目是否值得开发
C: 开发项目
D: 规划项目
5、单选题:
在软件生产的程序系统时代由于软件规模扩大和软件复杂性提高等原因导致了( ) 。
选项:
A: 软件危机
B: 软件工程
C: 程序设计革命
D: 结构化程序设计
6、单选题:
( )是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程。
选项:
A: 软件过程
B: 软件测试
C: 软件生存周期
D: 软件工程
7、单选题:
软件的复杂性是( ),它会引起开发费用超支、开发时间超时等问题。
选项:
A: 固有的
B: 人为的
C: 可消除的
D: 不可降低的
8、多选题:
下列选项属于软件特性的是( ).
选项:
A: 复杂性
B: 不可见性
C: 易变性
D: 服从性
9、多选题:
下列选项属于软件危机表现形式的有( )。
选项:
A: 对开发成本和开发进度难以进行准确地估计
B: 用户对软件产品不满意
C: 软件产品的质量难以保证
D: 软件开发效率的提高远远跟不上计算机应用快速普及的趋势
10、多选题:
下列选项属于软件生命周期阶段的有( )。
选项:
A: 系统设计
B: 编码实现
C: 配置管理
D: 需求分析
11、判断题:
文档是软件产品的一部分,没有文档的软件就不称其为软件。
选项:
A: 正确
B: 错误
12、判断题:
软件具有产品和产品交付载体的双重作用。
选项:
A: 正确
B: 错误
13、判断题:
当软件交付给用户使用后,软件生命周期就结束了。
选项:
A: 正确
B: 错误
14、判断题:
软件工程的研究内容就是软件代码的编写技术。
选项:
A: 正确
B: 错误
15、判断题:
风险管理不属于软件过程活动。
选项:
A: 正确
B: 错误
16、判断题:
一本软件开发标准和规程宝典,可以提供需要了解的所有信息。只要照此宝典,就一定能开发出成功的软件产品。
选项:
A: 正确
B: 错误
17、判断题:
如果我们未能按时完成开发计划,可以通过临时增加程序员人数而赶上进度。
选项:
A: 正确
B: 错误
18、判断题:
对于一个成功的软件项目,可执行程序是唯一可交付的工作成果。
选项:
A: 正确
B: 错误
19、判断题:
软件不会磨损。
选项:
A: 正确
B: 错误
20、判断题:
软件工程是建立在计算机科学和管理科学的基础上的,所以我们可以说:软件工程=计算机科学+管理+工程。
选项:
A: 正确
B: 错误
21、填空题:
构成一个完整计算机系统的两部分是硬件和( )。
答案: 【 软件】
22、填空题:
软件与物质产品有很大的区别,软件是一种( )产品。
答案: 【 逻辑】
23、填空题:
( )是解决软件危机的最有效方法。
答案: 【 软件工程】
24、填空题:
软件是计算机系统中程序、数据和( )的总称。
答案: 【 文档】
25、填空题:
一个通用的软件过程框架包含5个基本活动:沟通、策划、建模、( )、部署。
答案: 【 构建】
26、填空题:
( )就是一系列指令的集合.
答案: 【 程序】
27、填空题:
( )是指软件生命周期所涉及的一系列相关过程,它是在构建软件产品时所执行的一系列活动和任务的集合。
答案: 【 软件过程】
第 2 单元单元测验
1、单选题:
下面列出的哪一项不是软件工程的层次? 〔 〕
选项:
A: 软件开发工具
B: 软件开发方法
C: 软件生产制造
D: 软件开发过程
2、单选题:
软件开发的形式化方法模型利用数学方法:( )
选项:
A: 为基于计算机的系统定义了规格说明
B: 开发无缺陷的计算机系统
C: 验证计算机系统的正确性
D: 以上所有
3、单选题:
下列哪一个不是由软件开发统一过程模型定义的阶段名称?( )
选项:
A: 起始阶段
B: 细化阶段
C: 构建阶段
D: 验证阶段
4、单选题:
软件过程框架定义软件开发的:( )
选项:
A: 活动和任务集
B: 活动的顺序和关系
C: 活动的完成要求
D: 活动的时间计划
5、单选题:
以下哪些属于5个软件过程框架活动?〔 〕
选项:
A: 分析,计划,设计,编程,测试
B: 分析,设计,编程,调试,维护
C: 沟通,风险管理,度量,生产,评估
D: 沟通,计划,建模,构造,部署
6、多选题:
下面列出的哪些是评估软件过程的标准?( )
选项:
A: SEI
B: CMMI
C: DevOps
D: ISO 9001
7、多选题:
软件行业内常采用的标准有:( )
选项:
A: GB/GJB国家标准
B: 行业标准
C: 项目标准
D: 产品标准
8、多选题:
软件开发过程主要研究和建议软件开发的:( )
选项:
A: 编程语言
B: 开发流程
C: 质量保证
D: 开发工具
9、多选题:
软件开发的过程有: ( )
选项:
A: 瀑布式开发;
B: 迭代开发;
C: 面向对象开发;
D: 结构化开发;
10、多选题:
人类解决一个问题的主要步骤包括:( )
选项:
A: 分析问题
B: 沟通交流
C: 确定解决方案
D: 评估问题解决的效果
11、多选题:
软件过程定义开发软件中的:( )
选项:
A: 一系列活动、行为和任务集
B: 相关的完成规范和要求
C: 软件开发的工具、语言
D: 软件开发的约束条件
12、多选题:
下列哪项被认为是过程流类型?( )
选项:
A: 并发过程流
B: 迭代过程流
C: 线性过程流
D: 螺旋过程流
13、多选题:
在软件开发之前,需要与( )进行广泛的沟通、交流。
选项:
A: 与用户方的高层管理者
B: 最终用户
C: 技术支持团队
D: 市场人员
14、多选题:
软件建模的方式可以是:( )
选项:
A: 数学公式
B: 图、表、模型
C: 程序流程图
D: 编程语言
15、多选题:
软件过程框架中的保护性辅助活动主要关注:( )
选项:
A: 项目管理
B: 项目跟踪
C: 项目控制
D: 以上都不是
16、判断题:
软件开发过程主要研究软件开发的阶段划分、任务和活动、阶段性产出结果等。( )
选项:
A: 正确
B: 错误
17、判断题:
人们普遍认为,一个软件产品不会同时拥有薄弱的软件过程和高质量的最终产品。( )
选项:
A: 正确
B: 错误
18、判断题:
软件开发活动和任务之间的关系可以是顺序的、分支的、循环的。( )
选项:
A: 正确
B: 错误
19、判断题:
软件过程框架具有通用性,适用于各类软件开发,无论项目的规模和复杂度。 ( )
选项:
A: 正确
B: 错误
20、判断题:
风险管理是指为规避风险的发生而采取的一些列活动。( )
选项:
A: 正确
B: 错误
第 3 章 软件过程模型
1 通用过程模型
-
软件过程模型的种类:
(这些模型的区别在于执行沟通、计划、建模、构建、部署这 5 个框架活动的顺序不同)
- 线性
- 按顺序执行 5 个活动框架
- 迭代
- 每一个或多个活动可以反复迭代执行多次,但每一次迭代的具体任务有所不同
- 演化
- 采用循环方式执行 5 个框架活动,但每一次循环都有增量,形成更完善的软件
- 并行
- 将一个或多个活动与其他活动并行执行
- 线性
2 惯用过程模型
2.1 瀑布模型(waterfall model)

特点:
- 采用线性工作流方式,是一个不可逆的过程,只适用于可以清楚地了解问题需求的软件项目
- 是最早的软件过程模型,强调软件开发的阶段性
- 得到可运行软件的时间较晚,会带来巨大的风险
- 对文档编写的要求高,其文档工作量往往大于编程工作量
2.2 V 模型
V 模型是由瀑布模型改进得来的一个变体,它建立了质量保证活动与瀑布模型之间的关系,将早期的软件开发活动与后期的验证和确认活动关联起来。

特点:
- 阶段间具有顺序性和依赖性
- 任务间的依赖性容易导致”阻塞状态“
- 推迟实现的观点
- 质量保证的观点
- 适用于所有的系统功能需要一次性交付或必须同时淘汰全部老系统的场景
- V 模型有很大的局限性,如下所示:
- 错误假设:需求是固定的
- 错误假设:我们可以在进行构建之前作出正确的设计
- 没有考虑到人为的一些因素
- 直到项目接近尾声时才能得到可执行的程序
2.3 增量模型(incremental model)

增量模型结合瀑布模型和迭代开发思想,将一个大型复杂软件分解成若干的”增量“。
在增量模型中,软件开发采用迭代的方法,每一次迭代开发过程采用瀑布模型,完成一个增量的开发,生成部分的软件。通过多次的迭代开发,最终生成完整的软件。
特点:
- 每一次迭代开发得到的增量都是一个可运行的软件版本,这提高了软件开发过程的可见性,有利于收集用户反馈意见,改进软件的下一个版本
- 如果每个增量相对独立,那么整个增量开发过程中就可以适当并行,从而提高开发效率
- 可以规避风险,用小批量的增量进行尝试,成功以后再在以后的迭代中更大范围地推广经验
- 采用增量模型的前提是:软件可以分解,因此增量模型被广泛应用于面向对象软件开发方法中
2.4 演化过程模型(evolutionary process model)
-
针对需求不明确的软件开发,引入软件演化的思想
-
演化模型是迭代的过程模型
- 增量与迭代的区别:
- 假如现在要开发 A, B, C, D 四个功能模块,那么增量开发就是,第一个版本中先完成 A, B 功能,第二个版本中再完成 C, D 功能;而迭代开发就是,第一次迭代先完成 A, B, C, D 中的基本业务模块而不去动复杂模块,第二次再去细化完成每个功能模块下的复杂模块。
- 增量与迭代的区别:
-
演化过程模型分为两类:原型开发和螺旋模型。
2.4.1 原型开发(prototyping)

特点:
-
原型开发即,简化软件的实现,只实现软件的部分功能,借用软件工具快速生成一个软件样品,这个样品就是软件原型,然后基于原型与用户进行沟通,确定修改意见,再对原型进行修改和增加功能。通过多次演化开发,最终生成满足用户需求的完整软件。
-
在每次进化过程中,采用瀑布模型进行开发。
2.4.2 螺旋模型(spiral model)

特点:
- 螺旋模型是一个风险驱动的过程模型,它结合了原型模型和增量模型的特点,具有快速开发逐渐完善的软件版本的潜力。
- 螺旋模型在增量模型的每一次迭代过程中增加了风险控制机制,强调风险分析,在保证风险可控的前提下进行迭代开发
- 在每一次迭代过程中使用瀑布模型,将开发划分为制定计划、风险分析、工程实现、用户评审 4 个阶段
- 是开发大型软件系统的理想过程,常用来指导大型软件项目的开发
2.5 协同模型(concurrent model)
特点:
- 可用于所有类型的软件开发,能够提供精确的项目当前状态图
- 协同模型不是把软件活动、动作和任务局限在一个事件的序列,而是定义了一个过程网络,网络上某一点产生的事件可以触发状态的转换
3 专用过程模型:基于构件的开发(component-based development)
- 面向对象技术为基于构件的开发模型提供了技术保证
- 构件 = 类或类库
- 优点:
- 有助于软件复用,提高开发效率
- 采用面向对象技术,使程序具有更好的可维护性
- 缺点:
- 过分依赖构件,构件库的质量影响着产品质量
4 敏捷过程模型(agile process model)
正确的过程产生正确的结果,完全的有序意味着缺乏可变性。
4.1 敏捷开发(agile development)?
4.1.1 什么是敏捷开发?
- 敏捷的基本动力:普遍存在的变化
- 它强调可运行软件的快速交付而不那么看重中间产品
- 敏捷开发最具强制性的特点之一就是:能够通过软件过程来降低由变更所引起的代价
- 敏捷开发推崇:
- 让客户满意
- 软件尽早增量发布
- 小而高度自治的开发团队
- 非正式的方法
- 最小化的软件工作产品
- 整体精简开发的原则
- 敏捷开发强调:
- 超越分析和设计的发布
- 开发人员和客户之间的主动、持续沟通
4.1.2 敏捷开发的原则
- 尽早和持续地交付有价值地软件
- 可运行软件是进度的首要衡量标准
- 接受需求的变更,为客户创造竞争优势,快速交付可运行软件
- 在整个开发期间,负责人、开发人员、用户一起工作
- 采用相对独立的个人软件构建项目
- 面对面交流,关注优秀技术、好的设计,简捷自组织团队,持续改进
- 对个人基本能力要求高
4.2 敏捷过程模型——极限编程
- 特点:
- 是敏捷开发中应用最广泛、最富有成效的一种开发过程
- 是一个轻量级的、可适应的、严谨周密的开发过程
- 适用于小团队
- 基本思想:
- 将软件开发任务分解为可以在较短周期内完成的若干子任务,通过一个短的迭代周期获得阶段性进展
- 强调测试、代码质量和及早发现问题
- 及时形成一个可用版本,供用户参考,并对用户需求变更作出及时响应
- 极限编程过程:
- 策划
- 获取需求,理解软件的应用背景、输入、主要功能
- 设计
- 保持简洁原则,使用简单而不是复杂的表示
- 编码
- 采用测试驱动的编程方法,即在编码前设计单元测试,编码的目标是:通过单元测试
- 测试
- 采用可以自动测试的框架,实现编码完成后的即时回归测试,客户的验收测试基于用户故事进行测试
- 策划
4.3 敏捷过程模型——Scrum模型
Scrum 中的软件开发过程由若干的**冲刺(sprint)**组成,每个冲刺将解决一个实际问题。


单元测验
1、单选题:
软件开发的瀑布模型是:( )
选项:
A: 需求定义明确时的合理方法
B: 要求快速产生工作程序时的好方法
C: 大型开发团队开发项目时的最好方法
D: 一种很少再使用的老式模型
2、单选题:
软件开发的增量模型是:( )
选项:
A: 需求定义明确时的合理方法
B: 要求快速产生工作核心产品时的好方法
C: 大型开发团队开发项目时的最好方法
D: 一个不用于商业产品的革命性模型
3、单选题:
演化软件过程模型:( )
选项:
A: 本质上是迭代的
B: 能够很容易地适应产品需求的改变
C: 一般不产生一次性的系统
D: 以上所有
4、单选题:
软件开发的原型模型是:( )
选项:
A: 需求定义明确时的合理方法
B: 客户不能明确定义需求时的有用的方法
C: 大型开发团队开发项目时的最好方法
D: 很少产生有意义产品的风险模型
5、单选题:
软件开发的螺旋模型:( )
选项:
A: 以软件产品的交付作为结束
B: 比增量模型更混乱
C: 每次迭代中包括项目风险管理
D: 以上所有
6、单选题:
( )是用户和设计交换最频繁的方法。
选项:
A: 原型化方法
B: 瀑布模型方法
C: 螺旋模型方法
D: 构件组装模型
7、单选题:
软件过程模型的种类很多,但归纳起来,只有( )。
选项:
A: 线性、迭代、演化、并行4种
B: 瀑布式、原型法、螺旋模型、增量模型4种
C: 并行、串行、迭代、回归4钟
D: 规划、部署、设计、分析4种
8、单选题:
在敏捷软件团队中,成员需要具备哪些特征?( )
选项:
A: 个人能力
B: 决策能力
C: 相互信任尊重
D: 以上所有
9、单选题:
下列哪一个不是每个团队成员在每天的Scrum会议上要回答的关键问题?( )
选项:
A: 上次例会之后做了什么?
B: 遇到了什么困难?
C: 你遇到的困难的原因是什么?
D: 下次例会前计划做些什么?
10、多选题:
以下哪些模型是迭代式的?( )
选项:
A: V模型
B: 增量模型
C: 螺旋模型
D: 原型法
11、多选题:
并发开发模型是:( )
选项:
A: 并发工程的另一个名字
B: 定义触发工程活动状态转变的事件
C: 仅用于开发并行或分布式系统
D: 在预料到有大量变更请求时使用
12、多选题:
如何创建敏捷过程来管理不可预测性?( )
选项:
A: 需求采集必须非常仔细地实施
B: 风险分析必须在计划进行之前实施
C: 软件增量必须在短时间间隔内交付
D: 软件过程必须增量地适应改变
13、多选题:
敏捷建模在下列哪些软件任务中为实践者提供指导?( )
选项:
A: 分析
B: 设计
C: 编码
D: 测试
14、判断题:
瀑布式模型只适合于需求很明确的软件开发场景。( )
选项:
A: 正确
B: 错误
15、判断题:
原型开发模型可以作为一种获取软件需求的工具。( )
选项:
A: 正确
B: 错误
16、判断题:
螺旋模型是开发大型软件系统的理想方法。( )
选项:
A: 正确
B: 错误
17、判断题:
在敏捷软件过程中,最高优先级是通过尽早、持续交付有价值的软件来使客户满意。( )
选项:
A: 正确
B: 错误
18、判断题:
在敏捷开发中,构建满足用户当前需求的软件比担心将来可能需要的特性更为重要。( )
选项:
A: 正确
B: 错误
第 4 章 需求及建模
1 软件需求
- 共利益者(stakeholder)
- 与要开发的软件有着直接或间接关系的任何人
- 需求的分类
- 功能性需求
- 非功能性需求
- 设计约束
2 需求工程
需求工程包含的任务
- 起始(inception)
- 对客户问题和软件解决方案建立起基本的理解
- 导出(elicitation)
- 从软件共利益者那里导出需求
- 精化(elaboration)
- 构建代表软件信息、功能、行为方面的分析模型
- 协商(negotiation)
- 开发人员和客户要就要交付的软件系统进行沟通协商
- 规格说明(specification)
- 开发软件需求规格说明书,描述要开发的软件的需求
- 确认(validation)
- 对需求说明书进行评审
- 需求管理(requirements management)
- 对变化的需求进行管理
3 需求建模
3.1 两种下需求建模分析方法
- 结构化分析(SA)
- 面向对象的分析(OOA)
3.2 不同的需求模型要素
- 基于场景的模型
- 用例图、用户故事
- 流模型
- DFDs、数据模型ERD
- 行为模型
- STD、时序图
- 类模型
- 类图、协作图
单元测验
1、单选题:
需求管理只适用于需求分析阶段。( )
选项:
A: 正确
B: 错误
C: 空
D: 空
2、单选题:
实体关系图代表了软件系统哪方面的模型?( )
选项:
A: 架构图
B: 信息
C: 功能
D: 行为
3、单选题:
软件系统的行为模型包括( )
选项:
A: 数据流图
B: 实体关系图
C: 用例图
D: 状态图
4、单选题:
UML需求分析模型中代表系统和外界交互关系的模型是( )
选项:
A: 用例图
B: 活动图
C: 时序图
D: 状态图
5、单选题:
从用例场景中识别分析类主要用什么方法?( )
选项:
A: 介词筛选
B: 动词筛选
C: 名词筛选
D: 形容词筛选
6、单选题:
UML支持的需求分析模型中表示用例场景主要活动过程的模型是( )
选项:
A: 用例图
B: 活动图
C: 时序图
D: 状态图
7、多选题:
下面各选项属于软件共利益者(stakeholder)的是( )
选项:
A: 客户
B: 用户
C: 软件销售员
D: 软件开发人员
8、多选题:
软件需求分类一般可以分为( )
选项:
A: 性能需求
B: 功能性需求
C: 设计约束
D: 非功能性需求
9、多选题:
下面需求属于非功能性需求的有( )
选项:
A: 安全性需求
B: 易用性需求
C: 7X24服务
D: 数据库需求
10、多选题:
下面活动属于需求工程任务的有( )
选项:
A: 协商
B: 导出
C: 规格说明
D: 确认
11、多选题:
下面属于需求收集方法的有( )
选项:
A: 客户面谈
B: 问卷
C: 观察
D: 协作的需求收集会议
12、多选题:
软件系统的分析模型类别包括( )
选项:
A: 架构图
B: 信息
C: 功能
D: 行为
13、多选题:
属于软件系统的功能模型的有( )
选项:
A: 数据流图(DFD)
B: 实体关系图
C: 状态图
D: 用例模型
14、多选题:
需求模型要素包括( )
选项:
A: 基于场景的要素
B: 流模型
C: 类模型
D: 行为模型
15、多选题:
UML支持需求分析建模的模型有( )
选项:
A: 用例图
B: 活动图
C: 时序图
D: 状态图
16、多选题:
UML需求分析模型中代表系统行为模型的是( )
选项:
A: 用例图
B: 活动图
C: 时序图
D: 状态图
17、多选题:
软件系统的功能性需求可以用哪些模型表示?( )
选项:
A: 用例图
B: 活动图
C: 实体关系图
D: 状态图
18、多选题:
类的基本构成包括( )
选项:
A: 类名
B: 属性
C: 方法
D: 状态
19、多选题:
为分析类分配方法可以借助什么模型?( )
选项:
A: 用例图
B: 状态图
C: 时序图
D: 协作图
20、多选题:
主流的需求建模分析方法包括( )
选项:
A: 特征驱动的分析
B: 结构化分析(SA)
C: 面向对象分析(OOA)
D: 面向服务的分析
21、判断题:
需求决定了软件所有后续的开发活动。
选项:
A: 正确
B: 错误
22、判断题:
客户只需参与需求阶段的活动,后续阶段不需要参与。
选项:
A: 正确
B: 错误
23、判断题:
需求管理只能在需求阶段进行。
选项:
A: 正确
B: 错误
24、判断题:
客户需求只需要收集功能性需求,其他需求可以不考虑。
选项:
A: 正确
B: 错误
25、判断题:
设计约束也是一种需求,会对软件设计人员选择设计方案形成制约。
选项:
A: 正确
B: 错误
26、判断题:
界面交互的友好性是一种非功能性需求。
选项:
A: 正确
B: 错误
27、判断题:
非功能性需求就是质量属性需求。
选项:
A: 正确
B: 错误
28、判断题:
软件7X24的服务需求是一种非功能性需求。
选项:
A: 正确
B: 错误
29、判断题:
对信息的增删改查操作是典型的功能性需求。
选项:
A: 正确
B: 错误
30、判断题:
需求工程包括了初启、导出、精化、协商、规格说明、确认六个任务和需求管理。
选项:
A: 正确
B: 错误
31、判断题:
需求工程的协商只需要争取自己的利益,不管客户的利益。
选项:
A: 正确
B: 错误
32、判断题:
需求的确认必须由客户或客户方的代表认可。
选项:
A: 正确
B: 错误
33、判断题:
需求管理是对变化需求的导出、编档、组织和跟踪。
选项:
A: 正确
B: 错误
34、判断题:
需求分析必须借助一些需求模型来更好的表示客户的需求。
选项:
A: 正确
B: 错误
35、判断题:
需求分析模型可以分为信息、功能和行为三大类。
选项:
A: 正确
B: 错误
36、判断题:
UML的模型用于分析建模的只有用例图。
选项:
A: 正确
B: 错误
37、判断题:
用例图表示的是系统和外界的交互关系。
选项:
A: 正确
B: 错误
38、判断题:
活动图主要根据用例场景进行构建。
选项:
A: 正确
B: 错误
39、判断题:
状态图代表了系统的行为需求。
选项:
A: 正确
B: 错误
40、判断题:
时序图和协作图都是UML的交互图。
选项:
A: 正确
B: 错误
第 5 章 软件设计概念与原则
1 软件设计的概念
软件设计:是把需求转化为软件系统的最重要环节
系统设计:优劣在根本上决定了软件系统的质量
软件设计在软件工程中处于技术核心。在软件生命周期中,软件设计是建模活动的最后一个软件工程活动。
四种设计模型:
软件设计是一个迭代的过程
软件设计过程目标:
- 首先,设计必须实现需求分析模型中描述的所有显性需求,还必须满足用户希望的所有隐性需求
- 其次,设计必须是可读的、可理解的、易于编码实现的、易于测试的、易于维护的
- 最后,设计应该从现实的角度出发,给出与数据、功能和行为相关的软件全貌
设计允许在软件实现前评估质量,用哪些指标来评估?
答:FURPS,软件质量属性,体现了所有软件设计的目标。

2 软件设计原则
2.1 原则一:抽象

抽象 的层次:

常用抽象方法:
- 过程抽象
- 对软件要执行的动作进行抽象
- 是指具有明确和有限功能的指令序列
- 数据抽象
- 是描述数据对象的冠名数据集合
2.2 原则二:精化
精化实际上是一个细化的过程
抽象和精化是两个互补的概念。
- 抽象让设计人员忽略底层细节,重点描述结构、过程和数据
- 精化有助于设计人员在设计过程中揭示底层的细节
2.3 原则三:模块化
模块化指将待开发的软件分解成简单模块,模块独立开发、测试,最后把模块组装成软件。
模块化使应注意将模块的数量保持在最小成本区域M附近,应避免不足的模块化或过度的模块化问题
2.4 原则四:信息隐藏
每个模块的实现细节对其他模块来说是隐藏的、不可见的。
在一个模块内的信息不允许其它不需要这些信息的模块使用。
2.5 原则五:功能独立
功能独立是抽象、模块化和信息隐藏等概念的直接产物。
- 每个模块有单一功能,与其他功能没有太多联系
- 模块的功能独立程度是评价设计好坏的重要度量标准
模块独立性的两个标准:

优秀的软件设计:高内聚、低耦合,这也是评判设计好坏的一个标准
单元测验
1、单选题:
内聚是衡量模块内部聚合能力的量度。内聚越高,说明模块内各成分彼此联系的程度( )
选项:
A: 越松散
B: 彼此相等
C: 越紧密
D: 没有联系
2、单选题:
需求规格说明书的作用不包括( )
选项:
A: 软件验收的依据
B: 用户与开发人员对软件要做什么的共同理解
C: 软件可行性研究的依据
D: 软件设计的依据
3、单选题:
模块内部的算法设计在结构化方法的( )阶段进行。
选项:
A: 系统分析
B: 概要设计
C: 详细设计
D: 可行性分析
4、多选题:
下列选项可用于评估软件质量的属性有( ).
选项:
A: 易用性
B: 可靠性
C: 功能性
D: 性能
5、多选题:
接口设计应包括( ).
选项:
A: 软件内部各组成部分之间的接口
B: 软件和其它协作系统之间的接口
C: 软件和使用人员之间的交互方式
D: 软件结构设计
6、多选题:
下列关于设计的描述正确的是( ).
选项:
A: 设计必须实现需求分析模型中描述的所有显性需求。
B: 设计必须是可读的、可理解的、易于编码实现的、易于测试的、易于维护的。
C: 设计应从现实的角度出发,给出与数据、功能和行为相关的软件全貌。
D: 设计必须满足用户希望的所有隐性需求。
7、多选题:
下列关于软件设计的抽象原则描述正确的是( )
选项:
A: 最高抽象层次的模块常常用数据模型方式表示。
B: 较低抽象层次的模块是对较高抽象层次模块的进一步细化。
C: 抽象的最底层就是实现该软件的源程序代码。
D: 过程抽象是对软件要执行的动作进行抽象。
8、多选题:
模块化的优点是( )。
选项:
A: 可以使软件程序的结构更清晰;
B: 使开发工作更易于规划、更容易阅读和理解;
C: 更容易实施变更、也更容易有效的开展测试和调试;
D: 可以方便的定义和交付软件增量;
9、多选题:
下列关于内聚与耦合描述正确的是( )
选项:
A: 内聚与耦合是度量软件模块功能独立性的两个标准。
B: 一个模块与其他模块的耦合性越强,则该模块与其它模块的相互依赖性就越强。
C: 在程序结构中,各模块的内聚性越强,则耦合性越强。
D: 低内聚高耦合,是一个好的设计标准。
10、判断题:
需求分析阶段已经解决了待开发软件究竟要“做什么”的问题,软件设计阶段开始着手解决“如何做”的问题。( )
选项:
A: 正确
B: 错误
11、判断题:
从技术的角度看,软件设计通常分为概要设计、体系结构设计以及接口设计。( )
选项:
A: 正确
B: 错误
12、判断题:
可以通过系统设计文档来评估软件质量。( )
选项:
A: 正确
B: 错误
13、判断题:
软件系统设计的依据是软件需求规格说明书。( )
选项:
A: 正确
B: 错误
14、判断题:
软件设计是一个迭代的过程。( )
选项:
A: 正确
B: 错误
15、判断题:
信息隐藏是指每个模块的实现细节对于每个模块来说都是隐藏起来的、不可见的。( )
选项:
A: 正确
B: 错误
16、判断题:
模块化就是采用分而治之的原则把一个复杂系统划分成若干个不同模块的过程。( )
选项:
A: 正确
B: 错误
17、判断题:
抽象和精化是两个互补的设计原则。( )
选项:
A: 正确
B: 错误
18、判断题:
概要设计也称为总体设计或接口设计。( )
选项:
A: 正确
B: 错误
19、判断题:
在软件设计过程中,常用的抽象方法有过程抽象和数据抽象。( )
选项:
A: 正确
B: 错误
20、判断题:
精化就是一个细化的过程,有助于设计人员在设计过程中揭示底层的细节。( )
选项:
A: 正确
B: 错误
21、判断题:
功能独立是指软件系统中每个模块具有单一的功能,并与其它模块没有太多联系。( )
选项:
A: 正确
B: 错误
22、判断题:
系统设计时,模块划分得越细越好,这样实现起来也就越简单。( )
选项:
A: 正确
B: 错误
第 6 章 系统设计方法
1 体系结构设计
体系结构:系统的一个或多个结构,包括软件构件(各个不同的软件模块)、外部属性及相互关系。
体系结构并非可运行的软件,而是对软件系统的一种宏观表达方式
几种常见的软件体系结构:
-
以数据为中心的体系结构(data-flow architecture,黑板模式)
- 容易添加新的客户端软件
- 修改数据结构容易导致各个客户端都受影响
-
数据流的体系结构(管道-过滤器模式)
-
每一个处理步骤都封装在一个过滤器内,要处理的数据通过管道传递,各过滤器无需了解其他过滤器的工作
-
-
C/S 模式
- 在此基础上发展出一个变体:B/S 模式
-
调用-返回模式
- 能够设计出相对易于修改和扩展的程序结构
- 主程序-子程序体系结构是调用-返回模式的典型代表
-
层次体系结构(多层次体系架构模式)
体系结构设计的原则:
- 合适性
- 稳定性
- 可扩展性
- 可复用性
2 构件级设计
构件级设计是在接近于代码的抽象层次上描述软件,按照设计原则完成构件的详细设计。
在面向对象变成中,构件的基本单位是类,构件级设计关注需求模型中分析类的定义和细化。
四个构件级设计的基本原则:
- “开闭”原则
- 依赖倒置原则
- 里氏替换原则
- 接口分离原则
构件级设计本质上是精细化的设计
3 用户界面设计
界面设计的三条黄金规则:
- 用户操纵控制
- 减少用户的记忆负担
- 保持界面的一致性
用户界面分析和设计也是一个反复迭代、不断优化的过程,每次迭代包含以下过程:
- 界面分析与建模
- 界面设计
- 界面构造
- 界面评估确认
单元测验
1、多选题:
关于界面设计的“黄金规则”有:( )
选项:
A: 保持界面一致性。
B: 减少用户的记忆负担。
C: 用户操纵控制。
D: “可以用”、“方便用”、“喜欢用”。
2、多选题:
常见的体系结构模型有( )
选项:
A: 黑板模式
B: 管道-过滤器模式
C: B/S结构
D: 增量模式
3、多选题:
下列关于体系结构设计原则的描述正确的是( )
选项:
A: 体系结构应该满足软件的“功能性需求”和“非功能性需求”
B: 体系结构应在一定的时间内保持稳定。
C: 系统结构不可以复用。
D: 体系结构一旦确定,需求就不能变更。
4、多选题:
传统构件作为软件体系结构中的一部分,它承担的重要角色包括:( )
选项:
A: 控制构件:协调问题域中所有其它构件的调用。
B: 问题域构件:实现客户需要的全部功能或部分功能。
C: 基础设施构件:负责完成问题域中所需支持处理的功能。
D: 接口构件:实现各个构件的相互协作。
5、多选题:
下列适用于构件级设计的基本原则有( )。
选项:
A: 里氏替换原则
B: 依赖倒置原则
C: 接口分离原则
D: “开闭 ” 原则
6、多选题:
软件体系结构是具有一定形式的结构化元素的集合,具体包括( ).
选项:
A: 处理构件
B: 数据构
C: 连接构件
D: 人机界面构件
7、多选题:
UI设计过程通常包含的框架活动有:( )
选项:
A: 界面分析与建模
B: 界面设计
C: 界面构造
D: 界面评估确认
8、多选题:
下列属于系统设计阶段工作内容的是( )
选项:
A: 构件级设计
B: 体系结构设计
C: UI设计
D: 需求建模
9、判断题:
主程序-子程序体系结构属于调用-返回模式。( )
选项:
A: 正确
B: 错误
10、判断题:
软件体系结构设计有助于对计算机系统开发感兴趣的各方利益相关者开展交流( )
选项:
A: 正确
B: 错误
11、判断题:
软件系统的构件级设计是在详细设计阶段完成的工作。( )
选项:
A: 正确
B: 错误
12、判断题:
在面向对象的软件工程环境中,构件的基本单位是函数。( )
选项:
A: 正确
B: 错误
13、判断题:
一个设计良好的软件模块应该对扩展具有开放性,对修改具有封闭性。( )
选项:
A: 正确
B: 错误
14、判断题:
设计软件人机交互界面的前提条件是美观、舒适。( )
选项:
A: 正确
B: 错误
15、判断题:
用户界面分析和设计也是一个反复迭代、不断优化的过程。( )
选项:
A: 正确
B: 错误
16、判断题:
依赖倒置原则强调的是“依赖具体实现,不要依赖抽象”。( )
选项:
A: 正确
B: 错误
17、判断题:
在接口设计时,多个客户各自具备专用接口比共用一个通用接口要好。( )
选项:
A: 正确
B: 错误
18、判断题:
里氏替换原则要求:父类应当可以替换子类并出现在子类能够出现的任何地方。( )
选项:
A: 正确
B: 错误
19、判断题:
构件是计算机软件中的一个模块,它封装实现并暴露一组接口。( )
选项:
A: 正确
B: 错误
20、判断题:
主程序-子程序体系结构是调用-返回模式的典型代表。( )
选项:
A: 正确
B: 错误
21、判断题:
C/S结构是B/S结构的一个具体应用。( )
选项:
A: 正确
B: 错误
第 7 章 系统实现
软件工程项目中的角色:
- 高级经理
- 具体参与项目或产品的时间不多,但对项目的成败起了至关重要的作用
- 产品经理或项目经理
- 作为客户方和公司内部交流的纽带,对项目过程进行监控,对项目的进度和项目质量负责
- 开发经理
- 是具体开发的领导者,由熟悉业务和技术的专家担任
- 分析设计师
- 软件蓝图的设计者,具有丰富的项目经验,能够准确把握客户需求并提供可行的实现思路
- 测试经理
- 测试活动的领导者,是公司内部认定的产品质量责任人
- 开发人员
- 根据设计师的设计成果进行具体编码工作,对自己的代码进行基本的单元测试
- 测试人员
- 根据测试经理的计划和测试总体方案对目标产品进行测试,编写测试用例
- 根据用户需要编写用户手册、进行用户培训等
- 工程实施人员
- 软件系统安装配置和系统运行期间的维护工作
几种项目团队模式:
- 主治医师模式
- 其极致就是“明星模式”,这种模式违背了团队的初衷,体现不出团队的价值
- 社区模式
- 业余剧团模式
- 不适用于竞争强烈、创造性要求高的团队
- 交响乐团模式
- 分工明确,各司其职
- 爵士乐模式
- 强调个性化的表达,强有力的互动,对变化的内容给予有创意的回应,将成员的创造性发挥到极致
- 功能团队模式
- 具备不同能力的同时平等协作,共同完成一个功能,他们之间没有管理与被管理的关系
- 官僚模式
- 沟通成本较高,容易导致跨组织的合作比较困难,降低整个团队的开发效率
编码规范:
- 代码风格规范
- 代码设计规范
单元测验
1、多选题:
对一个软件产品或者一个软件工程项目来说,项目经理的主要职责包括:( )
选项:
A: 制定项目计划
B: 协调项目资源
C: 控制项目进度和产品质量
D: 控制客户期望值。
2、多选题:
强调软件开发流程的目的是为了:( )
选项:
A: 提高软件开发效率
B: 提升用户满意度
C: 提升软件的可靠性和可维护性
D: 提高软件运营、维护的效率
3、多选题:
作为一个合格的团队成员,应该做到:( )
选项:
A. 严格遵守项目开发的规则,做好本职工作
B. 及时与团队成员沟通、交流、获取和反馈项目开发中的信息。
C. 站在项目整体立场上思考问题。
D. 灵活控制项目时间进度,满足用户需求变更。
4、多选题:
组建项目团队开始软件开发时应该注意的几个方面是:( )
选项:
A: 根据产品需求选择软件过程模型。
B: 确保团队成员都是合格的软件工程师。
C: 确定团队成员角色。
D: 根据项目特点选择团队模式。
5、多选题:
遵循代码规范的好处有( )。
选项:
A: 规范的代码可以促进团队合作;
B: 规范的代码可以减少软件缺陷;
C: 规范的代码可以降低维护成本;
D: 养成代码规范的习惯,有助于程序员自身的成长;
6、多选题:
组建项目团队的过程中,需要遵循的原则是( ).
选项:
A: 项目组尽量小型化、灵敏化
B: 项目成员数量尽量充足
C: 保证沟通顺畅和高效
D: 项目成本尽量低
7、判断题:
代码审查可以发现软件中的所有缺陷。( )
选项:
A: 正确
B: 错误
8、判断题:
采用一窝蜂模式的软件项目团队可以开发出高质量的软件产品。( )
选项:
A: 正确
B: 错误
9、判断题:
瀑布开发模型比较适合的团队模式是爵士乐模式。( )
选项:
A: 正确
B: 错误
10、判断题:
软件开发流程不光指团队的流程,还包括个人开发流程。( )
选项:
A: 正确
B: 错误
11、判断题:
源代码是写给计算机看的。( )
选项:
A: 正确
B: 错误
11、判断题:
源代码是写给计算机看的。( )
选项:
A: 正确
B: 错误
13、判断题:
代码规范会降低开发效率。 ( )
选项:
A: 正确
B: 错误
14、判断题:
团队应该是一个具有一致目标且成员分工明确、互相依赖合作完成目标的集体。( )
选项:
A: 正确
B: 错误
15、判断题:
官僚模式因为沟通成本较高,容易导致跨组织的合作比较困难( )
选项:
A: 正确
B: 错误
16、判断题:
当某个软件领域处于稳定成长阶段的时候,适合采用社区模式。( )
选项:
A: 正确
B: 错误
17、判断题:
业余剧团模式适用于竞争性强烈、创造性要求高的团队。( )
选项:
A: 正确
B: 错误
18、判断题:
组建项目团队时可以根据实际情况灵活设置项目成员角色。( )
选项:
A: 正确
B: 错误
19、判断题:
开发人员可以完成部分测试工作。( )
选项:
A: 正确
B: 错误
20、判断题:
一段代码能够通过机器的编译,而且能够正确的运行就是合格的。( )
选项:
A: 正确
B: 错误
21、判断题:
测试人员不用编写代码。( )
选项:
A: 正确
B: 错误
22、判断题:
需求分析不属于软件设计师的工作内容。( )
选项:
A: 正确
B: 错误
第 8 章 软件测试的概念
**软件测试的概念:**使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的要求或弄清预期结果与实际结果之间的差别。
软件测试基本技术:
- 静态测试
- 不用执行程序,主要对软件的编程格式、结构等方面进行评估并发现可能存在的错误,即代码评审
- 动态测试
- 需要通过运行软件来检查软件的动态行为和运行结果是否正确
- 白盒测试
- 依据:软件源代码
- 是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子内部是透明可见的
- 是一种基于软件内部路径、程序结构和代码实现基础上的软件测试策略
- 黑盒测试
- 依据:软件规格说明书
- 把测试对象看作一个黑盒子,不考虑软件的内部逻辑和代码的具体实现,验证软件是否达到规格说明书上写的功能、性能、约束条件等
软件测试的阶段:
-
单元测试
- 对软件中的基本组成单位进行测试,是软件动态测试的最基本部分
- 目的:检验软件基本组成单元的正确性
-
集成测试/组装测试/联合测试
- 将软件单元集成为子系统或最终的系统再测试
- 集成测试的对象是已经经过单元测试的软件单元
-
确认测试/有效性测试
- 确认测试的基础:软件规格说明书
- 在模拟或真实的软件运行环境下,运用黑盒测试方法,验证软件的功能和性能及其他特性是否与用户要求的一致
- 验证与确认的区别:
- 验证是指确保软件正确地实现某一特定功能的一系列活动,而确认指的是确保开发的软件满足用户需求的一系列活动
- 确认测试的方法:
- α测试
- 在开发环境下进行,环境是可控的,其关键在于尽可能逼真地模拟实际运行环境和用户对软件的操作
- β测试
- 由软件的多个用户在一个或多个用户的实际使用环境下进行的测试,环境不可控
- α测试
-
系统测试
-
将分别经过集成测试后的软、硬件作为计算机系统的一个部分,在实际运行环境中对计算机系统进行一系列的有效的测试来发现软件的潜在问题,保证系统运行
-
系统测试关注在最高集成条件下产生的软件缺陷
-
包括很多类型的测试如:功能测试、易用性测试、安全性测试、可靠性和可用性测试、容量测试、性能测试、备份和恢复测试、便携式测试等
-
软件测试既可用于验证,又可用于确认。
测试是发现错误的过程,调试是消除错误的过程。
单元测验
1、多选题:
传统的集成测试策略有
选项:
A: 自顶向下集成
B: 自底向上集成
C: 基于线程的测试
D: 基于使用的测试
E: 回归测试
F: 冒烟测试
2、多选题:
面向对象系统的集成测试策略有
选项:
A: 自顶向下集成
B: 自底向上集成
C: 基于线程的测试
D: 基于使用的测试
E: 回归测试
F: 冒烟测试
3、多选题:
进行冒烟测试必须要包括活动是
选项:
A: 将已经转换为代码的软件构件集成到构建中
B: 编写驱动模块以确保完成每日对整个产品的测试
C: 编写桩模块以确保完成每日对整个产品的测试
D: 每天将该构建与其他构建及整个软件产品集成起来进行评估
E: 设计一系列测试以暴露影响构建正确性地完成其功能的错误
4、多选题:
依据交互图设计测试用例,我们可参考采用的覆盖指标是
选项:
A: 类中各个方法被调用
B: 履行了规定的职责
C: 对应于客户定义用例的场景
D: 覆盖所有不同组件中的交互状态对
5、多选题:
一个好的测试策略,必须解决下述哪些问题
选项:
A: 早在测试开始之前,就要以量化的方式规定产品需求
B: 明确的陈述测试目标
C: 了解软件的用户并为每一类用户建立用户描述
D: 测试之前,利用有效的正式评审技术作为过滤器
第 9 章 软件测试方法
单元测验
1、单选题:
以下给出了一个代码逻辑段,请问其环路复杂度V(G)是多少?( )int a, b;int x=0;int y=0;if( a>b ){ x = a-b;} else { x = b-a; }while ( b<0 ) { y += b; b++; }
选项:
A: 2
B: 3
C: 4
D: 5
2、单选题:
传统软件测试活动的组织顺序是什么?
选项:
A: 集成测试, 单元测试, 系统测试,确认测试
B: 单元测试, 集成测试, 系统测试,确认测试
C: 单元测试, 集成测试, 确认测试,系统测试
D: 系统测试, 确认测试, 集成测试,单元测试
3、单选题:
自底向上集成测试的主要优势是什么?
选项:
A: 主要的决策点可提前测试。
B: 不需要编写驱动程序
C: 不需要编写桩
D: 不需要回归测试
4、单选题:
需要设计测试用例来证明每个程序功能是可操作的测试技术是
选项:
A: 黑盒测试
B: 玻璃盒测试
C: 灰盒测试
D: 白盒测试
5、单选题:
( )是一种测试用例设计理念,它根据组件级设计规约中的控制结构描述来派生测试用例.
选项:
A: 黑盒测试
B: 玻璃盒测试
C: 灰盒测试
D: 白盒测试
6、单选题:
黑盒测试试图找到哪些缺陷? ( )
选项:
A: 不正确的或缺失的功能
B: 接口,尤其是用户界面错误
C: A,B都是
D: A,B都不是
7、单选题:
软件测试员的目标是
选项:
A: 验证软件是正确的
B: 发现软件存在的问题
C: 尽可能早地找到软件缺陷,并确保其得以修复
D: 以上都是
8、单选题:
广义的测试活动包括()
选项:
A: 需求评审和设计评审
B: 代码走查
C: 单元测试、集成测试、确认测试和集成测试
D: 以上都是
9、单选题:
边界值分析作为一种测试技术的原因是()
选项:
A: 大量错误发生在输入域的边界处
B: 为了减少测试用例的数目
C: 对等价划分技术的补充
D: 以上都是
10、单选题:
为什么将根本原因附加到缺陷报告中是十分重要的
选项:
A: 能够让缺陷被明明白白的解决、根除
B: 能够使后续版本或分支版本不至于残留该缺陷
C: 缺陷所涉各方如果能够汲取教训总结经验的话就能在以后的开发中避免此类错误、提高过程质量,保证技术的稳定发挥
D: 以上都是
11、判断题:
边界值分析只能用于白盒测试
选项:
A: 正确
B: 错误
12、判断题:
单元测试就是进行白盒测试
选项:
A: 正确
B: 错误
13、判断题:
单元测试不需要驱动程序和桩,因为模块之间是独立测试的。
选项:
A: 正确
B: 错误
14、判断题:
应根据软件规格说明进行测试。
选项:
A: 正确
B: 错误
15、判断题:
在设计测试时,如果等价类选择得很好,就没有必要测试每个等价类所属区间的边界值了。
选项:
A: 正确
B: 错误
16、判断题:
软件测试的目标是在交付给客户之前发现软件中的所有错误.
选项:
A: 正确
B: 错误
17、判断题:
在程序“运行”之前,是没有办法评估它的质量的。
选项:
A: 正确
B: 错误
18、判断题:
测试活动应及早的不断的进行。
选项:
A: 正确
B: 错误
19、判断题:
评审不是测试活动。
选项:
A: 正确
B: 错误
20、判断题:
评审和测试是软件验证和确认的两种有效手段。
选项:
A: 正确
B: 错误
第 10 章 测试实践
单元测验
1、单选题:
依据活动图设计测试用例时,我们多采用基本路径法,这时确立的覆盖指标是:
选项:
A: 100%路径覆盖
B: 100%语句覆盖和75%判定覆盖
C: 100%覆盖基本路径。
D: 100%判定/条件
2、单选题:
以下给出了一个代码逻辑段,请问下列哪一组测试用例满足多条件覆盖要求if (a>0 && c1 ) { x = x+1; }if (b3 || d<0 ) { y = 0; }
选项:
A: a>0,c=1, b!=3, d<0;a<=0, c=1, b=3,d>=0;a>0, c!=1, b!=3,d<0;a<=0, c!=1, b!=3, d>=0
B: a>=0,c=1, b=3, d<0;a<0, c=1, b=3,d>=0;a>0, c!=1, b!=3, d<0;a<=0, c!=1, b!=3, d>=0
C: a>0,c=1, b=3, d<0;a<=0, c=1,b=3,d>=0;a>0, c!=1,b!=3, d<0;a<=0, c!=1, b!=3, d>=0
D: a>0,c=1, b!=3, d<=0;a<=0, c=1, b=3,d>=0;a>0, c!=1, b!=3,d<0;a<=0, c!=1, b!=3, d>=0
3、单选题:
给出了代码逻辑段如下:A&&(B||C),A,B,C分别取T或F。请问需要设计()组测试用例才能满足多条件覆盖条件。
选项:
A: 4
B: 8
C: 9
D: 6
4、单选题:
给出了代码逻辑段如下,试求环路复杂度()if (a>0 && c1) { x= x+1;}if (b3 || d<0) { y=0; }
选项:
A: 2
B: 3
C: 4
D: 5
5、单选题:
( )是测试的基准!
选项:
A: 源代码
B: 用例
C: 分析模型
D: 设计模型
6、多选题:
测试设计步骤包括:
选项:
A: 获取测试对象的控制流规约。
B: 做过程分析,得到若干“测试路径”。针对每一条“测试路径”,获取与该路径相关的前提条件、输入参数、后续条件和输出参数等数据流的规约或定义。
C: 对输入参数做边界值分析,对前置条件作等价类划分,得到若干细化“测试路径”,或称“测试实例”。
D: 需要为每一实例化的测试路径分析输出变量和后置条件写出其“期望输出”
E: 根据事先确立的测试覆盖准则,迭代开发测试用例集。
7、多选题:
黑盒测试试图发现以下哪些内容的缺陷:
选项:
A: 不正确或遗漏的功能
B: 接口错误
C: 数据结构或外部数据库访问错误
D: 行为或性能错误
E: 初始化和终止错误
8、多选题:
依据状态图设计测试用例时,我们可参考采用的覆盖指标是:
选项:
A: 覆盖每个事件
B: 覆盖组件中的每个状态
C: 覆盖组件中的每个转移
D: 覆盖所有不同组件中的交互状态对
E: 覆盖对应于客户定义用例的场景
9、多选题:
测试计划时,确立测试覆盖准则很重要。为什么
选项:
A: 因为测试数目是巨大的,需要在时间和经费的限制下有效进行测试
B: 因为需要将巨大甚至无限的测试数目减少到可控的范围内
C: 因为如果不确立测试覆盖准则,无从知道测试到底什么时候结束
D: 因为确立测试覆盖准则可以保证找到所有的缺陷
10、判断题:
穷尽测试是不可能的。
选项:
A: 正确
B: 错误
11、判断题:
测试可以产生质量。
选项:
A: 正确
B: 错误
12、判断题:
一旦发生变更,我们需要回归测试。
选项:
A: 正确
B: 错误
13、判断题:
测试是一组可以提前计划并系统地进行的活动。
选项:
A: 正确
B: 错误
14、判断题:
如果好好设计系统测试可以捕获所有的缺陷,所以无需再冗余地进行单元测试。
选项:
A: 正确
B: 错误
15、判断题:
因为单元测试可以捕获所有的缺陷,所以无需再冗余地进行系统测试。
选项:
A: 正确
B: 错误
16、判断题:
直到程序开始运行,才能评估其质量。
选项:
A: 正确
B: 错误
17、判断题:
测试计划时,确立测试覆盖准则很重要。
选项:
A: 正确
B: 错误
18、判断题:
使用思维导图可以帮助我们可视化测试设计思路。
选项:
A: 正确
B: 错误
19、判断题:
如果我们进行100%条件覆盖测试,则一定满足100%语句覆盖条件.
选项:
A: 正确
B: 错误
20、填空题:
黑盒测试,又称( ),侧重于软件的( )
答案: 【 行为测试
功能需求】
21、填空题:
边界值分析是一种测试用例设计技术,是对( )的补充。边界值分析在等价类的边缘上选择测试用例。
答案: 【 等价划分】
22、填空题:
技术评审被证明是最有效的软件质量保证机制之一,被称之为( ),是从项目启动时就可以开始实行了。
答案: 【 质量过滤器】
23、填空题:
典型的技术评审活动包括( )、设计评审和代码走查。
答案: 【 需求评审】
第 11 章 项目管理
软件项目的分类:
- 为了探索新业务的项目
- 根据特定客户需求的新应用开发项目
- 对现有产品进行功能增强的项目
- 改进现有产品缺陷的项目
- 全新打造用于替换现有项目的再生工程项目
软件工作量的估计技术主要方法:
- 专家判断法
- 类比法
- 自顶向下法/由底向上法
- 功能点法
- COCOMO Ⅱ(Constructive Cost Model,构造型成本模型)
风险管理的步骤:
- 风险识别
- 风险评估
- 风险影响 = 风险产生的危害 * 发生概率
- 风险策划
- 风险监督
PERT 程序评价评审技术:

单元测验
1、单选题:
软件项目中常用的工作量估算单位不包括
选项:
A: LOC
B: 功能点
C: KLOC
D: 记录数
2、单选题:
关于COCOMO II模型,说法不正确的是
选项:
A: 是一个基于先验,修正于后验参数化的模型
B: 充分考虑了项目类型的不同,项目所处阶段的不同
C: 考虑了类似项目经验、过程成熟度、人员能力和开发工具等的影响
D: 该模型主要采用了类比法
3、单选题:
优先网络活动图的节点中存在缓冲期,说法正确的是
选项:
A: 缓冲期即为最晚结束时间减去最晚开始时间
B: 同一路径上节点缓冲期存在共享性,当某个节点的活动用完自己的缓冲期后,其后续节点的缓冲期将受到影响
C: 节点的跨度越大,缓冲期就越多
D: 缓冲期隶属于某个节点,不在同路径相邻节点间共享
4、单选题:
关于关键路径,说法不正确的是
选项:
A: 关键路径即为从开始到结束路径中所有任务缓冲期均为0的路径
B: 关键路径上的任何任务的延迟都将影响任务的结束时间
C: 关键路径即为从开始到结束路径中所有任务缓冲期均相等的路径
D: 关键路径上的任务的执行时间可以通过采取措施来缩短
5、单选题:
关于风险评估,不正确的说法是
选项:
A: 评估每个风险发生的可能性和产生的影响
B: 风险评估在主要作用在于可以确定风险列表上哪些风险一定会发生,哪些一定不会发生
C: 对评估后的风险进行排序,在项目的监控和资源分配中优先考虑具有最高优先级的风险
D: 风险评估需要根据项目进度,不断更新
6、单选题:
以下说法不正确的是
选项:
A: 在应对风险时,一定不能选择接受风险
B: 风险监督时会维护一个风险记录表,在项目管理过程中不断的评价和更新该表,直至该项风险可以被关闭
C: 挣值分析是比较常用的成本监控方法
D: PERT技术可以用来评估任务的不确定性
7、多选题:
软件项目的特点包括
选项:
A: 跨平台性
B: 不可见性
C: 复杂性
D: 灵活性
8、多选题:
有效的软件项目管理活动集中于
选项:
A: 人员
B: 产品
C: 过程
D: 项目
9、多选题:
常见的工作量估算技术包括
选项:
A: 专家判断法
B: COCOM II
C: 类比法
D: 自底向上法
10、多选题:
软件项目风险主要来源于
选项:
A: 项目自身
B: 技术
C: 商业
D: 合同
11、多选题:
风险管理包括的步骤是
选项:
A: 风险识别
B: 风险评估
C: 风险策划
D: 风险监督
12、多选题:
关于估算工作量的功能点法,以下说法正确的是
选项:
A: 功能点法的优势是与程序设计语言无关
B: 功能点法估算的工作量可以转化为某类程序语言对应的SLOC
C: 功能点法只适用于可行性分析阶段
D: 不同功能点,复杂度不同时,乘以的难度系数不同
13、判断题:
软件项目一般具有一定规模,但本身不受技术和资源的约束
选项:
A: 正确
B: 错误
14、判断题:
软件项目管理的目标是按时完成项目的约定功能。
选项:
A: 正确
B: 错误
15、判断题:
根据项目技术复杂度和管理复杂度的不同,项目管理侧重点不同,管理过程可以相应裁剪。
选项:
A: 正确
B: 错误
16、判断题:
使用类比法估算工作量,需要以历史数据中类似的项目的数据作为评价基础,之后不需要再做任何调整。
选项:
A: 正确
B: 错误
17、判断题:
使用由底向上法估算工作量,需要先推导出系统中的软件模块数量和类型,并为每个模块标识所需要的SLOC,在这个过程中需要专业资深人士的参与。
选项:
A: 正确
B: 错误
18、判断题:
甘特图以类似日历的方式显示任务的计划。
选项:
A: 正确
B: 错误
19、判断题:
和甘特图相比,优先网络图可以显示子任务间的部分相互依赖关系。
选项:
A: 正确
B: 错误
20、判断题:
软件项目计划的目标是提供一个能使管理人员对资源、成本及进度做出合理策划的框架,计划一旦制定,便需要团队遵守,不再修改,从而确保如期完成项目。
选项:
A: 正确
B: 错误
21、判断题:
使用PERT对各个子任务做时间周期评估时,需要进行悲观、最可能和乐观三次估计。
选项:
A: 正确
B: 错误
22、判断题:
项目风险指“不确定的事件或情况,一旦出现,将会对项目的目标产生积极或消极的影响”,风险管理更侧重于防范造成消极影响的风险。
选项:
A: 正确
B: 错误