这份文档提供了关于软件工程项目中考研复试阶段笔试和面试的具体问题及回答建议,旨在帮助考生更好地准备相关考试。
本段落为华科考研复试软件工程专业的专业面试问答集锦,涵盖了常见的软件工程相关专业知识点,例如流程图与数据流图的区别、面向对象与面向过程的不同之处以及什么是软件工程等问题。
适合人群:具有编程基础并准备参加考研复试的考生。
通过阅读可获得以下知识:
① 各种模式方法(如工厂模式、策略模式和观察者模式等);
② 软件工程领域的常见问题;
③ 软件测试等相关内容;
④ 程序设计的相关知识点。
建议:以问答形式学习软件工程原理及内核,不仅注重代码实现还强调需求分析与方案设计。因此,在学习过程中应结合本科期间所学课程进行实践。
### 软件工程考研复试知识详解
#### 一、定义及其主要方法
**定义**:
- 软件工程是一门学科,它将工程原理应用于软件开发中,旨在通过科学的方法和技术来指导产品的创建与维护,确保其质量、可靠性和可维护性。
**主要方法包括:**
1. **传统法**(即经典软件工程或生命周期方式):
- 强调阶段划分和有序执行。
2. **面向对象法**:
- 侧重于以对象为中心的设计思想,并通过封装、继承等机制提高灵活性与复用率。
#### 二、流程图与数据流图的区别
1. 数据流图(DFD):
- 描述系统中如何处理和流动的数据,仅反映逻辑功能。
- 箭头表示数据流向,用于宏观分析业务过程。
2. 流程图:
- 阐述具体步骤及顺序的控制流程。
- 适用于详细描述模块内部工作方式。
#### 三、软件需求分析的任务与步骤
**任务**:
- 基于用户的实际需要,将功能和性能规范转化为系统必须实现的需求点。
**步骤包括:**
1. **问题识别阶段**:
- 明确功能性、非功能性等需求。
2. **分析综合阶段**:
- 进行一致性检查,并细化软件的功能性要求。
3. **文档编写阶段**:
- 编写详细的设计规格说明书及其他相关文件。
#### 四、结构化分析与设计要点
1. 自顶向下:
- 从整体到局部逐步深入细节。
2. 模块化:
- 将系统划分为较小且易于管理的部分。
3. 迭代式细化:
- 高层次抽象开始,逐渐细化至具体实现。
#### 五、数据字典的主要内容
- 数据项:基本单元;
- 数据结构:组合方式定义;
- 流程图中的数据流路径描述;
- 存储位置说明(如数据库);
- 处理过程的记录。
#### 六、软件测试的目标与方法
**目标**:
1. 通过发现并修复错误来提高质量及可靠性。
**常见方法包括:**
- 动态测试: 真实运行程序进行检测;
- 静态检查: 不运行代码,审查潜在问题;
- 正确性证明: 使用数学手段验证正确性。
#### 七、白盒测试覆盖
关注内部结构和逻辑的白盒测试方法包括:
1. **语句覆盖率**: 至少执行每条指令一次。
2. **分支/判定覆盖率**: 确保每个判断条件都至少被评估为真或假一次;
3. 条件覆盖率:确保所有可能的真假组合都被覆盖。
#### 八、程序设计语言的选择依据
1. 用户需求: 必须满足最终用户的使用习惯。
2. 编译器支持情况.
3. 工具链的支持程度。
4. 系统规模与复杂性考量;
5. 开发团队的技术背景;
6. 软件的可移植性和跨平台兼容性考虑;
7. 针对特定领域的特殊需求。
#### 九、软件维护的目标及类型
**目标**:
- 维持和提升软件的生命力。
**常见类型包括:**
1. 改正性维护: 解决已知错误问题。
2. 适应性维护: 应对外部环境的变化;
3. 完善性维护: 增强现有功能或性能特性;
4. 预防性维护: 提前为未来可能的改进做好准备。
上述内容涵盖了考研复试中软件工程的一些核心知识点,对于备考学生来说具有很高的参考价值。希望通过对这些知识的学习能够帮助大家更好地理解和掌握基本原理和技术方法。