Skip to content

第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课时
  • 重点难点:开发模型、需求分析、软件测试

🔍 重点难点

重点内容

  1. 软件生命周期 - 理解各阶段的任务和产物
  2. 开发模型比较 - 掌握各种模型的特点和适用场景
  3. 需求分析方法 - 熟练使用需求分析工具
  4. 测试技术 - 掌握黑盒和白盒测试方法
  5. 质量保证 - 理解软件质量模型和度量

难点突破

  1. 模型选择 - 根据项目特点选择合适的开发模型
  2. 需求建模 - 使用UML进行需求建模
  3. 测试用例设计 - 设计有效的测试用例
  4. 复杂度计算 - 掌握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课时 | 难度等级:★★★★★