第7章 系统开发基础
📚 本章课程
| 课程 | 内容 |
|---|---|
| 7.1.1 软件工程概述 | — |
| 7.1.2 软件的基本生存周期 | — |
| 7.1.3 软件过程 | — |
| 7.2 软件开发方法 | — |
| 7.3 软件开发模型 (7课时) | — |
| 7.3.1 软件开发模型知识点概述 | 模型分类和选择原则 |
| 7.3.2 瀑布模型与V模型 | 传统的线性开发模型 |
| 7.3.3 演化模型(原型模型、螺旋模型) | 迭代式开发模型 |
| 7.3.4 增量模型 | 分批交付的开发模式 |
| 7.3.5 喷泉模型 | 面向对象的开发模型 |
| 7.3.6 统一过程UP | RUP统一软件开发过程 |
| 7.3.7 敏捷方法 | Scrum、XP等敏捷实践 |
| 7.4 需求分析 (4课时) | — |
| 7.4.1 需求分析知识点概述 | 需求工程的重要性 |
| 7.4.2 需求分析的基本概念 | 功能需求和非功能需求 |
| 7.4.3 需求的分类 | 业务需求、用户需求、系统需求 |
| 7.4.4 需求分析的工具 | 用例图、数据流图、状态图 |
| 7.5 系统设计 (5课时) | — |
| 7.5.1 系统设计知识点概述 | 设计的目标和原则 |
| 7.5.2 系统设计概述 | 概要设计和详细设计 |
| 7.5.3 模块设计 | 模块化设计原理和方法 |
| 7.5.4 人机界面设计 | 用户界面设计原则 |
| 7.5.5 架构设计 | 软件架构模式和风格 |
| 7.6 软件测试 (6课时) | — |
| 7.6.1 软件测试概述 | 测试的目的和重要性 |
| 7.6.2 软件测试的基本概念及分类 | 测试类型和级别 |
| 7.6.3 黑盒测试 | 等价类划分、边界值分析 |
| 7.6.4 白盒测试 | 语句覆盖、分支覆盖、路径覆盖 |
| 7.6.5 系统测试阶段 | 单元测试、集成测试、系统测试 |
| 7.6.6 McCabe环路复杂度计算 | 复杂度度量方法 |
| 7.7 软件维护 | — |
| 7.8 软件文档 | — |
| 7.9 软件质量保证模型 | — |
| 7.10 章节概述 | 知识点梳理和重点回顾 |
| 7.11 章节回顾 | 典型题目分析和解题技巧 |
📚 章节概述
系统开发基础是软考中级软件设计师考试的核心内容,涵盖软件工程的基本理论、开发方法、过程模型和质量保证。本章将系统学习软件开发的完整生命周期和工程化方法。
🎯 学习目标
通过本章学习,你将掌握:
- 软件工程的基本概念和原理
- 软件开发生命周期和过程模型
- 需求分析和系统设计方法
- 软件测试的理论和技术
- 软件质量保证和项目管理
📖 课程安排
7.1 软件工程基础 (6课时)
7.1.1 软件工程概述
- 软件工程的定义和目标
- 软件危机和软件工程的产生
- 软件工程的基本原理和方法
- 软件工程的发展趋势
7.1.2 软件的基本生存周期
- 软件生命周期的概念
- 生命周期各阶段的任务
- 阶段间的关系和依赖
- 生命周期模型的选择
7.1.3 软件过程
- 软件过程的定义和要素
- 过程改进和成熟度模型
- CMM/CMMI能力成熟度模型
- ISO 9000质量管理体系
7.2-7.3 开发方法与模型 (8课时)
7.2 软件开发方法
- 结构化方法:自顶向下、模块化设计
- 面向对象方法:封装、继承、多态
- 敏捷开发方法:迭代、增量、适应性
- DevOps方法:开发运维一体化
7.3 软件开发模型 (7课时)
- 7.3.1 软件开发模型知识点概述 - 模型分类和选择原则
- 7.3.2 瀑布模型与V模型 - 传统的线性开发模型
- 7.3.3 演化模型(原型模型、螺旋模型) - 迭代式开发模型
- 7.3.4 增量模型 - 分批交付的开发模式
- 7.3.5 喷泉模型 - 面向对象的开发模型
- 7.3.6 统一过程UP - RUP统一软件开发过程
- 7.3.7 敏捷方法 - Scrum、XP等敏捷实践
7.4-7.9 系统开发过程 (18课时)
7.4 需求分析 (4课时)
- 7.4.1 需求分析知识点概述 - 需求工程的重要性
- 7.4.2 需求分析的基本概念 - 功能需求和非功能需求
- 7.4.3 需求的分类 - 业务需求、用户需求、系统需求
- 7.4.4 需求分析的工具 - 用例图、数据流图、状态图
7.5 系统设计 (5课时)
- 7.5.1 系统设计知识点概述 - 设计的目标和原则
- 7.5.2 系统设计概述 - 概要设计和详细设计
- 7.5.3 模块设计 - 模块化设计原理和方法
- 7.5.4 人机界面设计 - 用户界面设计原则
- 7.5.5 架构设计 - 软件架构模式和风格
7.6 软件测试 (6课时)
- 7.6.1 软件测试概述 - 测试的目的和重要性
- 7.6.2 软件测试的基本概念及分类 - 测试类型和级别
- 7.6.3 黑盒测试 - 等价类划分、边界值分析
- 7.6.4 白盒测试 - 语句覆盖、分支覆盖、路径覆盖
- 7.6.5 系统测试阶段 - 单元测试、集成测试、系统测试
- 7.6.6 McCabe环路复杂度计算 - 复杂度度量方法
7.7 软件维护
- 维护的定义和分类
- 维护活动的管理
- 维护成本控制
- 遗留系统的处理
7.8 软件文档
- 文档的分类和作用
- 文档编写规范
- 文档管理和版本控制
- 用户手册和技术文档
7.9 软件质量保证模型
- 软件质量的定义和特性
- ISO/IEC 25010质量模型
- 质量保证活动
- 质量度量和评估
7.10-7.11 章节总结 (2课时)
- 7.10 章节概述 - 知识点梳理和重点回顾
- 7.11 章节回顾 - 典型题目分析和解题技巧
⏰ 学习时间安排
- 总学习时间:34课时
- 建议学习周期:4-5周
- 每日学习时间:1-2课时
- 重点难点:开发模型、需求分析、软件测试
🔍 重点难点
重点内容
- 软件生命周期 - 理解各阶段的任务和产物
- 开发模型比较 - 掌握各种模型的特点和适用场景
- 需求分析方法 - 熟练使用需求分析工具
- 测试技术 - 掌握黑盒和白盒测试方法
- 质量保证 - 理解软件质量模型和度量
难点突破
- 模型选择 - 根据项目特点选择合适的开发模型
- 需求建模 - 使用UML进行需求建模
- 测试用例设计 - 设计有效的测试用例
- 复杂度计算 - 掌握McCabe复杂度计算方法
📝 考试要点
选择题考点
- 软件工程基础 (3-4分)
- 开发模型 (4-5分)
- 需求分析 (3-4分)
- 系统设计 (3-4分)
- 软件测试 (4-5分)
- 质量保证 (2-3分)
应用题考点
- 开发模型选择 (5-8分)
- 需求分析建模 (8-10分)
- 测试用例设计 (8-10分)
- 复杂度计算 (5-8分)
🏗️ 开发模型对比
瀑布模型
- 特点:线性顺序、阶段清晰
- 优点:管理简单、文档完整
- 缺点:缺乏灵活性、风险较高
- 适用:需求明确、技术成熟的项目
螺旋模型
- 特点:风险驱动、迭代开发
- 优点:风险控制好、适应性强
- 缺点:复杂度高、成本较大
- 适用:大型复杂、高风险项目
敏捷模型
- 特点:迭代增量、快速响应
- 优点:适应变化、交付快速
- 缺点:文档较少、需要高素质团队
- 适用:需求变化频繁的项目
🧪 软件测试技术
黑盒测试方法
等价类划分法
1. 确定等价类
- 有效等价类:满足规格说明的输入
- 无效等价类:不满足规格说明的输入
2. 设计测试用例
- 每个等价类至少一个测试用例
- 优先覆盖多个有效等价类
边界值分析法
1. 确定边界值
- 输入域的边界
- 输出域的边界
2. 设计测试用例
- 边界值及其邻近值
- 最小值、最大值、典型值白盒测试方法
语句覆盖
- 要求每个语句至少执行一次
- 覆盖率 = 已执行语句数 / 总语句数
分支覆盖
- 要求每个分支至少执行一次
- 覆盖率 = 已执行分支数 / 总分支数
路径覆盖
- 要求每条路径至少执行一次
- 覆盖率 = 已执行路径数 / 总路径数📊 McCabe复杂度计算
计算公式
V(G) = E - N + 2P
其中:
E = 边的数量
N = 节点的数量
P = 连通分量的数量(通常为1)
简化公式:V(G) = E - N + 2复杂度等级
- 1-10:简单程序,风险很小
- 11-20:复杂度适中,风险中等
- 21-50:复杂程序,风险较高
- >50:极其复杂,风险很高
预计完成时间:34课时 | 难度等级:★★★★★
🎯 本章课程总览
| 课程 | 内容 | 时长 |
|---|---|---|
| 7.1.1 软件工程概述 | 从软件危机出发理解软件工程方法论与生命周期管理。 | 45分钟 |
| 7.1.2 软件的基本生存周期 | 从软件危机出发理解软件工程方法论与生命周期管理。 | 45分钟 |
| 7.1.3 软件过程 | 从软件危机出发理解软件工程方法论与生命周期管理。 | 45分钟 |
| 7.2 软件开发方法 | 从软件危机出发理解软件工程方法论与生命周期管理。 | 45分钟 |
| 7.3 软件开发模型 (7课时) | 比较主流软件开发模型的特点、适用场景与考试辨析点。 | 45分钟 |
| 7.3.1 软件开发模型知识点概述 | 比较主流软件开发模型的特点、适用场景与考试辨析点。 | 45分钟 |
| 7.3.2 瀑布模型与V模型 | 比较主流软件开发模型的特点、适用场景与考试辨析点。 | 45分钟 |
| 7.3.3 演化模型(原型模型、螺旋模型) | 比较主流软件开发模型的特点、适用场景与考试辨析点。 | 45分钟 |
| 7.3.4 增量模型 | 比较主流软件开发模型的特点、适用场景与考试辨析点。 | 45分钟 |
| 7.3.5 喷泉模型 | 比较主流软件开发模型的特点、适用场景与考试辨析点。 | 45分钟 |
| 7.3.6 统一过程UP | 比较主流软件开发模型的特点、适用场景与考试辨析点。 | 45分钟 |
| 7.3.7 敏捷方法 | 比较主流软件开发模型的特点、适用场景与考试辨析点。 | 45分钟 |
| 7.4 需求分析 (4课时) | 掌握需求工程核心概念、分类体系与建模工具。 | 45分钟 |
| 7.4.1 需求分析知识点概述 | 掌握需求工程核心概念、分类体系与建模工具。 | 45分钟 |
| 7.4.2 需求分析的基本概念 | 掌握需求工程核心概念、分类体系与建模工具。 | 45分钟 |
| 7.4.3 需求的分类 | 掌握需求工程核心概念、分类体系与建模工具。 | 45分钟 |
| 7.4.4 需求分析的工具 | 掌握需求工程核心概念、分类体系与建模工具。 | 45分钟 |
| 7.5 系统设计 (5课时) | 掌握系统设计阶段目标、模块划分原则与架构设计方法。 | 45分钟 |
| 7.5.1 系统设计知识点概述 | 掌握系统设计阶段目标、模块划分原则与架构设计方法。 | 45分钟 |
| 7.5.2 系统设计概述 | 掌握系统设计阶段目标、模块划分原则与架构设计方法。 | 45分钟 |
| 7.5.3 模块设计 | 掌握系统设计阶段目标、模块划分原则与架构设计方法。 | 45分钟 |
| 7.5.4 人机界面设计 | 掌握系统设计阶段目标、模块划分原则与架构设计方法。 | 45分钟 |
| 7.5.5 架构设计 | 掌握系统设计阶段目标、模块划分原则与架构设计方法。 | 45分钟 |
| 7.6 软件测试 (6课时) | 掌握软件测试理论、方法体系与复杂度度量应用。 | 45分钟 |
| 7.6.1 软件测试概述 | 掌握软件测试理论、方法体系与复杂度度量应用。 | 45分钟 |
| 7.6.2 软件测试的基本概念及分类 | 掌握软件测试理论、方法体系与复杂度度量应用。 | 45分钟 |
| 7.6.3 黑盒测试 | 掌握软件测试理论、方法体系与复杂度度量应用。 | 45分钟 |
| 7.6.4 白盒测试 | 掌握软件测试理论、方法体系与复杂度度量应用。 | 45分钟 |
| 7.6.5 系统测试阶段 | 掌握软件测试理论、方法体系与复杂度度量应用。 | 45分钟 |
| 7.6.6 McCabe环路复杂度计算 | 掌握软件测试理论、方法体系与复杂度度量应用。 | 45分钟 |
| 7.7 软件维护 | 梳理系统开发后期保障能力:维护、文档与质量体系。 | 45分钟 |
| 7.8 软件文档 | 梳理系统开发后期保障能力:维护、文档与质量体系。 | 45分钟 |
| 7.9 软件质量保证模型 | 梳理系统开发后期保障能力:维护、文档与质量体系。 | 45分钟 |
| 7.10 章节概述 | 从生命周期、开发模型、需求设计到测试维护构建系统开发章节的完整知识框架。 | 45分钟 |
| 7.11 章节回顾 | 聚焦开发模型、需求分析、系统设计与测试维护的高频考点,完成章节冲刺复盘。 | 45分钟 |
🧭 本章定位(命题老师视角)
- 本章以“概念辨析 + 计算/推理”混合题为主,强调关键词与方法匹配。
- 命题常把相近概念放在同题干干扰,需要先判边界再下结论。
🧱 命题主线
- 主线1:核心概念定义、边界与场景映射。
- 主线2:典型机制/流程的步骤化理解与应用。
- 主线3:高频易错点识别与反向排除。
⏱️ 复习优先级(时间不足时)
- 先做本章高频计算题与判定题。
- 再做章节概述与回顾中的综合题。
- 最后复盘错题并补齐概念盲区。
📝 一页速记
| 模块 | 快速记忆 |
|---|---|
| 核心概念 | 先记定义,再记边界,再记反例 |
| 常用方法 | 先识别题型,再调用方法模板 |
| 易错点 | 关注关键词、单位、约束条件 |
| 作答步骤 | 条件提取 -> 过程推导 -> 结果校验 |
⚠️ 高频坑位
- 概念名词相近但边界不同,容易“看着像就选”。
- 计算题忘记统一单位、位宽或默认条件。
- 过程题跳步骤,导致中间量错而全题失分。
🧪 作答模板(客观题/综合题)
- 第一步:识别题型(概念、流程、计算、综合)。
- 第二步:提取关键词(对象、条件、约束、目标)。
- 第三步:调用方法并写出关键中间步骤。
- 第四步:检查边界(符号、范围、单位、合理性)。
🛣️ 学习路线建议
- 第一轮:按课程顺序建立知识骨架。
- 第二轮:按题型专题训练并沉淀模板。
- 第三轮:只看错题与速记表做考前冲刺。