# 软件工程考研复试——关键过程与工具终极整理版 --- ## 一、需求分析与建模 ### 1.1 需求分析核心任务 - **任务目标**:明确功能/性能需求、数据需求,建立逻辑模型(数据流图DFD、E-R图) - **关键步骤**: 1. 问题定义:确定系统边界与用户核心诉求 2. 需求建模:使用DFD描述数据流动(加工节点、数据存储、外部实体) 3. 数据字典:明确定义数据元素(如"订单号=客户ID+日期+序列号") ### 1.2 建模工具对比 | 工具 | 用途 | 核心元素 | | ------------ | ------------------------ | ---------------------------- | | **数据流图** | 描述系统数据处理流程 | 加工、数据流、存储、外部实体 | | **E-R图** | 设计数据库逻辑结构 | 实体、属性、联系 | | **用例图** | 描述系统功能与参与者交互 | 参与者、用例、关联关系 | --- ## 二、设计阶段核心过程 ### 2.1 结构化设计方法 - **模块划分原则**:高内聚低耦合(功能内聚最优,数据耦合最优) - **耦合类型**(由低到高):数据耦合 → 控制耦合 → 公共耦合 → 内容耦合 - **内聚类型**(由低到高):偶然内聚 → 逻辑内聚 → 功能内聚 ### 2.2 设计工具与启发式原则 - **结构图**:描述模块调用关系(方框表示模块,箭头表示调用) - **层次图**:展示系统分层结构(顶层模块分解至底层) - **设计原则**: - 模块规模适中(建议50-200行代码) - 扇入/扇出合理(扇出建议3-5个模块) - 作用域在控制域内 --- ## 三、测试方法与工具 ### 3.1 测试分类与策略 | 测试阶段 | 目标 | 常用方法/工具 | | -------- | ------------------ | ----------------------------- | | 单元测试 | 验证模块功能 | 白盒测试(JUnit、语句覆盖) | | 集成测试 | 验证模块接口 | 自顶向下/自底向上集成 | | 系统测试 | 验证整体性能 | 黑盒测试(Selenium、Postman) | | 验收测试 | 用户验证需求符合性 | α测试(内部)、β测试(外部) | ### 3.2 测试用例设计 - **白盒测试**:路径覆盖(McCabe方法计算环形复杂度) - **黑盒测试**: - 等价类划分(有效/无效类) - 边界值分析(如输入范围0-100时测试-1,0,100,101) --- ## 四、维护与项目管理 ### 4.1 软件维护类型 | 维护类型 | 占比 | 典型案例 | | ---------- | ---- | ------------------------ | | 改正性维护 | 20% | 修复支付接口超时问题 | | 适应性维护 | 25% | 适配新操作系统版本 | | 完善性维护 | 50% | 新增用户积分系统 | | 预防性维护 | 5% | 重构核心模块提升可维护性 | ### 4.2 项目管理工具 - **CMMI成熟度模型**:初始级 → 可重复级 → 已定义级 → 已管理级 → 优化级 - **敏捷工具**:Scrum看板(JIRA)、持续集成(Jenkins) --- ## 五、高频考点与答题策略 ### 5.1 必背考点 1. **模块独立性**:结合电商系统模块划分案例说明高内聚低耦合的优势 2. **测试覆盖率**:解释路径覆盖与条件覆盖的区别(结合流程图示例) 3. **需求变更管理**:用原型模型应对需求频繁变化的场景分析 ### 5.2 复试技巧 - **案例结合**:用"微信支付模块的测试流程"说明黑盒测试方法 - **开放题策略**:采用"定义→工具→案例"三步法(如回答UML应用) - **代码题规范**:注释清晰 + 边界处理(如输入参数校验)