软件工程 应试笔记 #2
本文最后更新于:2022年5月19日 晚上
该笔记(考点预测)是本人于哈尔滨工业大学(深圳)2021 年秋季学期「软件工程」课程的笔记。
笔记是在考前复习时扫 PPT 做的,内容偏应试风格,内容涵盖了所有考试内容(变异测试、性能测试不在考试范围,故不在此列)。主要包括:软件工程概论、软件开发过程管理、需求工程、软件设计、软件测试、软件维护。
2021 年秋季学期的简答题内容基本涵盖于本题单中(少数内容漏掉了,考完后进行了补充),整份题单按照 PPT 顺序,可用于复习过程中的查缺补漏、自我检测。
括号内是本人的答案助记,不保证其准确性,仅供参考!
考试回忆
2021 年简答题考了题单里的 6, 25, 29, 35
,大题考了 5, 8, 9, 10
。判断题、选择题也基本在题单覆盖范围内,已在文中加粗。
2020 年简答题考了题单里的 23, 40, 42, 45
,大题考了 4, 5, 6, 8, 9, 10
。
考点预测
简答考点
- 软件的本质特性有哪些?(复杂性、一致性、可变性、不可见性)
- 软件开发面临的挑战为什么会出现?(客观上、主观上)
- 软件工程的基本要素有哪些?(方法、工具、过程、范型)
- 软件开发过程的典型阶段(需求定义与分析、软件设计、软件实现、软件验证、软件运行与维护)
- 可以通过调整软件开发不同阶段的顺序使之适应不同的情况。(√)
- 五种软件开发模型(瀑布、增量、快速应用开发、快速原型开发、螺旋)及特点
- 软件开发管理的 4P(人员、产品、过程、项目)
- 列举软件项目参数估算的技术(代码行、功能点、COCOMO、用例点、故事点、机器学习)
- 软件项目进度如何安排?(工作量分配、任务依赖网络、关键路径分配时间、确定资源等)
- 功能性需求和非功能性需求的区别和举例。(描述了系统与其独立于系统实现环境之间的交互——功能上,描述了不直接关联到系统功能行为的系统的方方面面——性能上)
- 非功能性需求有哪些层次?(业务规则、外部接口需求、约束条件)
- 描述一个完整的需求工程(需求获取、需求分析、需求规格说明、需求验证)
- 基于场景的需求建模方法举例与说明(用户故事、用例图、活动图)
- 绘制一个完整的用例图的步骤(确定系统边界、识别并描述参与者、识别用例、识别通讯关联、给出用例描述、细化用例模型)
- 通讯关联不表示参与者和用例之间的信息流。(√)
- 什么是 SRS?(精确阐述 FR、NFR、限制条件,法律效力,理解和交流的手段)
- 传统软件工程开发方法有哪些?特点是?(功能分解法、结构化方法、信息建模法)
- 传统开发方法和面向对象方法有什么区别、优势?(过程抽象/实体对象,分析与设计难以对应/直接映射问题域形成良好的对应)
- 面向对象方法的三步骤(分析、设计、编程)
- 面向对象设计有哪些基本概念?(对象、类、封装、消息、泛化继承、多态)
- 软件设计的原则有哪些?(抽象、封装、模块化、层次化、复用)
- 软件体系结构的要素有哪些?(构建+连接件+约束)
- 软件体系结构风格(数据流风格、以数据为中心的风格、调用和返回体系结 构风格、面向对象体系结构风格、层次体系结构风格)
- C/S+B/S 层次体系结构具有什么优点?(将二者结合起来,企业内/外有别,内部交互性增强响应速度高,外部不直接访问数据更安全)
- CRC 面向对象方法的具体内容(类、责任、协作)
- 顺序图包含哪些组件?
- 协作图与顺序图的异同点和适用情形。(都是交互,顺序图偏重时间顺序,协作图偏重链接关系)
- 活动图与状态图的异同点和适用情形。(图形差不多,状态图只有单个对象,活动图侧重多个对象交互,可以描述并行行为)
- 软件编程除了代码实现还包含哪些内容?(程序设计、代码审查、代码重构)
- 代码审查有哪些形式?(桌面检查、代码走查、代码审查)
- 代码重构和添加新功能有什么区别?(重构不改变功能和外部行为,仅提高代码的可理解性、可扩展性等,新功能不修改既有代码,仅增加代码。二者交替进行)
- 软件缺陷的演化过程(错误、缺陷、故障、失效)
- 软件测试的两种思维是什么?(正向:验证正常、反向:假定缺陷)
- 软件测试有哪些局限性?(不彻底性——不能说明错误不存在、不完备性——不能完全覆盖、间接性)
- 按照测试对象分类的软件测试类型(单元、集成、系统、验收)
- 单元测试需要哪些模块?(驱动、桩模块)
- 集成测试有哪些方法?(整体集成方式、自顶向下、自底向上的增量集成)
- 回归测试是什么?什么时候需要回归测试?(任何一个阶段)
- 自动化测试和手工测试的区别?自动化测试能替代手工测试吗?
- 测试用例的重要性(指导系统地测试、提高测试效率、作为检验软件的度量标准、积累和传递测试的经验)
- 测试用例的组成要素(测试用例值、期望结果、前缀值、后缀值)
- 黑盒测试与白盒测试的区别(白盒利用程序的内部逻辑、对所有逻辑路径进行测试、考虑逻辑的覆盖程度,黑盒不考虑内部逻辑、在软件接口处进行测试、考虑需求的覆盖程度)
- 黑盒测试用于辅助白盒测试发现其他类型错误。(√)
- 测试用例的评价标准(覆盖度高——黑白不一样、用例少、冗余度低、用例的缺陷定位能力高)
- 3 种黑盒测试方法(等价类测试、边界值测试、场景法测试)共同点都是不用考虑内部实现就可以的方法,前两中面向数据,后一种面向过程
- 等价类测试中等价类划分原则(分而不交、和而不变、类内等价)
- 「事件流」出现在了需求建模的用例模型中的用例描述里,也出现在黑盒测试的场景法测试里,一个是常规流+扩展流,一个是基本流+备选流
- 传统的软件开发模式和现在的软件开发模式有什么区别?(传统的侧重预见性的开发方法,如瀑布模型,但是难以预知所有的内容和风险;现在的开发方法采用弹性的管理方式,系统迭代演进来应对快速变化的需求,适应而非预测)
- 敏捷开发方法有哪些?(极限编程XP、Scrum开发方法)
- Scrum 制品中的产品订单和迭代订单有什么区别?(产品订单是从客户角度要求实现的所有功能的列表,迭代订单是从开发技术角度的每个迭代要完成的功能列表)
- 软件交付工作包含哪些方面?(项目实施、客户培训、项目验收)
- 软件维护和软件再工程有什么区别?(软件维护是为了修改软件的缺陷或者增加新功能,软件再工程是为了避免软件本身退化对软件的一部分进行重新设计、编码和测试)
- 软件维护有哪些类型?有什么区别?(改正性、适应性、完善性)
大题考点
- 给定需求,写出增量模型的迭代功能、故事卡片
- 给定需求,画出用例图并写出用例描述(耗时)
- 绘制层级体系结构图(B/S 和 C/S)(耗时)
- 面向对象设计,写出类和类图(耗时)
- 结构化方法数据建模,画出 0 层和 1 层 DFD 图(耗时)
- 结构化方法数据建模,找出 DFD 图里的错误
- 过程行为建模,绘制状态图(耗时)
- 过程行为建模,画出顺序图(耗时)
- 白盒测试用例设计,要求覆盖
- 白盒测试基本路径,画出流图算环复杂度
- 黑盒测试用例设计,等价类测试:划分等价类,设计测试用例来覆盖
- 黑盒测试用例设计,边界值测试
- 黑盒测试用例设计,场景法测试
软件工程 应试笔记 #2
https://hwcoder.top/Software-Engineering-2