第7章 系统开发基础
📚 章节概述
系统开发基础是软考中级软件设计师考试的核心内容,涵盖软件工程的基本理论、开发方法、过程模型和质量保证。本章将系统学习软件开发的完整生命周期和工程化方法。
🎯 学习目标
通过本章学习,你将掌握:
- 软件工程的基本概念和原理
- 软件开发生命周期和过程模型
- 需求分析和系统设计方法
- 软件测试的理论和技术
- 软件质量保证和项目管理
📖 课程安排
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课时 | 难度等级:★★★★★