软件工程 应试笔记 #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