本帖开始分享考研真题中设计【软件工程】的部分,预计会出5期左右,敬请期待~
一.单选题
1.程序编写不是软件质量保障过程~
静态代码扫描是今年来多数被人提及的软件应用安全解决方案之一,指程序员在编写好代码后无需进行编译,直接通过一些扫描工具发现语义缺陷、安全漏洞的解决方案~
2.确认测试用以验证需求
- 目的是要表明软件是可以工作的,并且符合需求规格说明书中的全部要求~
- 通过对组合测试的软件进行的~
3.里氏替换原则体现了子类替换父类不影响程序的逻辑和运行~
4.配置管理的活动:
- 版本管理
- 标识配置项
- 变更控制
5.策略模式定义了一系列算法,并将每个算法封装起来,使他们之间可以相互替换,且算法的变化不会影响使用算法的客户;属于对象行为模式,通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理~
6.关于敏捷过程的正确描述:
- 个体与互动:高于流程和工具
- 工作的软件:高于详尽的文档
- 客户合作:高于合同谈判
- 响应变化:高于遵循计划
也就是说,尽管右项有其价值,敏捷方法更重视左想的价值~
7.持续集成包含如下哪些:
持续集成也是一种增量集成方法,但它提供尽早集成和频繁集成~
- 尽早集成是指不需要总是等待一个模块开发完成后才把他集成起来,而是在开发之处就利用sub集成起来
- 频繁集成式指开发者每次完成一些开发任务之后,就可以利用开发结果替换sub中的相应组件,进行集成与测试。一般来说,每人每天至少集成一次,也可以多次~
8.视图的4+1模型
- 逻辑视图:显示系统中对象和对象类的一些主要抽象~
- 进程视图:显示在运行时系统是如何组织为一组交互的进程,主要关注非功能系统特征~
- 开发视图:显示软件是如何为了开发而被分解的~
- 物理视图:显示系统硬件和系统中软件组件是如何分布在处理器上的~
9.确认测试时需要:需求规格说明文档
确认活动式检验开发者是否建立了正确的系统,确保最终产品符合产品规格,所以是基于需求的~
10.在数据库系统中,开闭原则可以满足不修改源代码的情况下更改数据库驱动程序~
二.简答题
1.功能性需求和非功能性需求的区别?
- 功能需求:功能需求是和系统主要工作相关的需求,即在不考虑物理约束的情况下,用户希望系统所能够执行的活动~
- 非功能需求:除功能以外的软件需求,主要包括性能需求、质量属性、对外接口和约束~
2.黑盒测试和白盒测试方法的区别?
- 黑盒测试:把测试对象看做一个黑色盒子,完全基于输入和输出数据来判断测试对象的正确性~(主要方法有等价类划分、边界值分析、决策表和状态转换等)
- 白盒测试:白盒测试把测试对象看作是透明的,不关心测试对象的规格,而是按照测试对象内部的程序结构来设计测试用例进行测试工作,最常用的方法有语句覆盖、路径覆盖和信息隐藏等~
3.为什么要使用信息隐藏?
每一个模块都隐藏了这个模块中关宏宇重要设计决策的实现,以至于只有这个模块的每一个组成部分才知道具体的实现细节,信息隐藏就是利用抽象的方法,抽象出每个类的关键细节,也就是模块的职责,外部不需要知道对象内部的复杂程度,信息隐藏的目的就是为了做到模块与模块尽可能独立,便于修改,保证对象数据的一致性、完整性,实现高内聚、低耦合,提高软件的可扩展性和维护性~
4.抽象和分解的关系
- 分解:横向的将系统分割为几个相对简单的子系统及各子系统之间的关系,分解之后只需要关注经过抽象的相对简单的子系统技巧相互间的关系,从而降低了复杂度~
- 抽象:在纵向上聚焦给子系统的接口,抽象可以分离接口与实现过程,让人更好地关注系统本质,从而降低复杂度
分解和抽象一般是一起作用的,可以将系统分解为子系统,又通过抽象分离接口与实现~
5.重构是什么,以及在什么情况下回发生
- 修改软件系统的严谨方法,在不改变代码外部表现(即系统功能)的情况下改进其内部结构(即提升详细设计结构的质量~)
- 重构发生在新功能增加完成之后,用于消除新功能带来的负面影响~
6.单元测试、系统测试、集成测试的区别
- 单元测试:测试一个单元接口,是对软件设计的最小单位进行正确性检验的测试工作
- 集成测试:测试多个单元接口,即对程序模块一次性或采用增量方式组装起来,对系统的接口进行正确性检验的测试工作
- 系统测试:测试全部单元接口,测试关注整个系统的行为,但愿测试和集成测试更加关注技术上的正确性,重点在于发现设计缺陷和代码缺陷,系统测试更关注不符合需求的缺陷和需求自身的内在缺陷
三.代码相关大题
1.
2.
3.
4.