【软考系统架构设计师】六、软件工程

软件工程是软考系统架构设计师考试的核心支柱模块 ,不仅是理解软件架构设计、系统集成等复杂内容的基础,更是案例分析题中 "架构设计方案落地""项目风险控制" 等场景的核心依托。在历年考试中,该模块分值稳定在 8-10 分,覆盖单选(4-5 分)、多选(2-3 分)和案例分析(2-3 分),属于 "分值高、考点集中、易得分" 的关键模块。其知识点框架清晰,命题规律固定,零基础考生通过系统梳理和针对性练习,可快速掌握核心考点,为整体考试奠定坚实基础。

1. 软件工程概述

1.1 知识点讲解

  1. 核心定义:软件工程是将系统化、规范化、可度量的方法应用于软件的开发、运行和维护过程,同时对这些方法进行研究的学科,核心目标是在规定时间、成本内交付高质量软件。

  2. 核心要素:包含方法(如结构化方法、面向对象方法)、工具(如 IDE、测试工具)、过程(如瀑布模型、敏捷过程) 三大核心要素,三者相辅相成。

  3. 核心目标:满足用户需求、保证软件质量(可靠性、可维护性、可扩展性等)、控制开发成本、提升开发效率。

  4. 软件生命周期:问题定义→可行性研究→需求分析→系统设计→编码→测试→运行与维护,覆盖软件从概念到消亡的全流程。

1.2 高频考点

  • 考查形式:单选为主,多选为辅
  • 分值占比:1-2 分
  • 命题角度:① 软件工程定义与核心要素;② 软件生命周期各阶段核心任务;③ 软件工程的核心目标。
  • 解题技巧:牢记 "方法 + 工具 + 过程" 三大要素;软件生命周期按 "从无到有、从开发到维护" 的逻辑记忆,关键阶段(需求分析、设计、测试)的任务需精准对应。

1.3 真题示例

【真题示例 1】(2023 年单选)以下不属于软件工程核心要素的是( )

A. 方法 B. 工具 C. 过程 D. 文档

【解析】答案:D。软件工程的核心要素是 "方法、工具、过程",文档是软件开发过程的产物,并非核心要素,故选 D。

【真题示例 2】(2022 年多选)软件生命周期中,属于开发阶段的有( )

A. 需求分析 B. 系统设计 C. 运行维护 D. 编码测试

【解析】答案:ABD。软件生命周期的开发阶段包括需求分析、系统设计、编码、测试;运行维护是独立的生命周期阶段,故选 ABD。

1.4 可视化图表

软件生命周期流程图:

图 1:软件生命周期全流程

2. 软件过程模型

2.1 知识点讲解

  1. 瀑布模型(Waterfall Model):

    • 核心特征:线性顺序、阶段固定、文档驱动,每个阶段完成后进入下一阶段,无迭代。
    • 阶段划分:需求分析→系统设计→详细设计→编码→测试→运行维护。
    • 适用场景:需求明确、变化少、规模小的项目(如传统管理系统开发)。
  2. 螺旋模型(Spiral Model):

    • 核心特征:迭代 + 风险驱动,每个迭代周期包含 "规划→风险分析→开发→评审" 四步,围绕螺旋线推进。
    • 核心优势:重视风险管控,适合大型复杂项目。
  3. 敏捷模型(Agile Model):

    • 核心思想:迭代增量、用户参与、响应变化,强调小步快跑、持续交付。
    • 典型方法:Scrum(冲刺、每日站会、产品待办列表)、XP(极限编程,强调结对编程、测试驱动)。
    • 适用场景:需求模糊、变化频繁的项目(如互联网产品开发)。
  4. 统一过程模型(RUP):

    • 核心特征:用例驱动、架构为中心、迭代增量,分为初始、细化、构造、移交四个阶段,每个阶段包含多个迭代。
    • 核心产出:用例模型、架构设计文档、可运行的增量版本。
  5. 能力成熟度模型(CMMI):

    • 核心定义:评估软件组织过程能力的模型,分为 5 个成熟度等级。
    • 等级划分:
      • 1 级(初始级):过程无序,依赖个人能力。
      • 2 级(可重复级):有基本过程规范,可重复过往成功经验。
      • 3 级(已定义级):过程标准化、文档化,全员执行。
      • 4 级(已管理级):过程可度量、可监控。
      • 5 级(优化级):持续改进过程,基于数据驱动。

2.2 高频考点

  • 考查形式:单选 + 多选 + 案例分析(模型选择)
  • 分值占比:2-3 分
  • 命题角度:① 各模型核心特征与适用场景对比;② 敏捷模型与传统模型的差异;③ CMMI 成熟度等级判断;④ RUP 阶段划分。
  • 解题技巧:用 "特征 - 场景" 对应记忆(如需求明确→瀑布,需求多变→敏捷,大型复杂→螺旋);CMMI 等级记 "初重定管优" 口诀,结合阶段特征判断。

2.3 真题示例

【真题示例 1】(2023 年单选)某互联网产品需求频繁变更,团队需快速响应并持续交付可用版本,最适合采用的软件过程模型是( )

A. 瀑布模型 B. 螺旋模型 C. Scrum 模型 D. RUP 模型

【解析】答案:C。Scrum 是敏捷模型的典型代表,核心优势是响应变化、迭代增量交付,适合需求频繁变更的互联网产品;A 适合需求明确项目,B 适合风险突出的大型项目,D 适合架构为中心的复杂项目,故选 C。

【真题示例 2】(2022 年多选)以下属于 CMMI 成熟度等级的有( )

A. 初始级 B. 可重复级 C. 已优化级 D. 标准化级

【解析】答案:ABC。CMMI5 个成熟度等级为初始级、可重复级、已定义级、已管理级、已优化级;"标准化级" 并非官方等级,故选 ABC。

2.4 可视化图表

  1. 主流软件过程模型对比图:

图 2:主流软件过程模型特征与适用场景

  1. CMMI 成熟度等级演进图:

图 3:CMMI 成熟度等级演进

3. 需求工程

3.1 知识点讲解

  1. 核心定义:需求工程是一系列与需求相关的活动,包括需求获取、分析、规格说明、验证、变更管理,核心目标是明确 "软件要做什么"。

  2. 需求分类:

    • 功能需求:软件必须完成的具体功能(如用户登录、数据查询)。
    • 非功能需求:性能、可靠性、安全性、可维护性等(如响应时间≤2 秒)。
    • 约束需求:开发环境、技术选型等限制(如基于 Java 开发)。
  3. 核心活动:

    • 需求获取:通过访谈、问卷调查、原型法、用例分析等方式收集用户需求。
    • 需求分析:梳理需求、消除歧义、建立需求模型(如用例图、数据流图)。
    • 需求规格说明:编写《需求规格说明书》(SRS),明确需求细节。
    • 需求验证:确认需求的完整性、一致性、可行性(如用户评审、原型验证)。
    • 需求变更管理:建立变更流程,评估变更影响,控制变更风险(如变更申请→评审→批准→实施)。
  4. 需求追踪:建立需求追踪矩阵(RTM),关联需求、设计、测试用例,确保需求被完整实现。

3.2 高频考点

  • 考查形式:单选 + 多选 + 案例分析(需求变更处理)
  • 分值占比:2 分
  • 命题角度:① 需求分类判断;② 需求获取方法对比;③ 需求变更管理流程;④ 需求追踪的作用。
  • 解题技巧:功能需求 vs 非功能需求:"做什么" vs "做得怎么样";需求变更流程记 "申请 - 评审 - 批准 - 实施 - 验证" 五步走。

3.3 真题示例

【真题示例 1】(2023 年单选)以下属于软件非功能需求的是( )

A. 支持用户注册登录 B. 提供数据导出 Excel 功能

C. 系统年停机时间≤8 小时 D. 允许查询近 3 年订单数据

【解析】答案:C。非功能需求是 "做得怎么样",C 属于可靠性需求;A、B、D 均是具体功能,属于功能需求,故选 C。

【真题示例 2】(2021 年多选)需求工程中,需求获取的常用方法有( )

A. 访谈法 B. 原型法 C. 数据流图法 D. 问卷调查法

【解析】答案:ABD。需求获取方法包括访谈、问卷、原型、用例分析等;数据流图法是需求分析阶段的建模方法,并非获取方法,故选 ABD。

3.4 可视化图表

需求工程核心活动流程图:

图 4:需求工程核心活动流程

4. 系统分析与设计

4.1 知识点讲解

  1. 结构化方法:

    • 核心思想:自顶向下、逐步求精、模块化,基于 "数据" 和 "流程" 建模。
    • 核心工具:
      • 数据流图(DFD):描述数据在系统中的流动和处理过程(外部实体、加工、数据流、数据存储)。
      • 数据字典(DD):定义 DFD 中的数据项、数据结构、数据流等。
      • 结构化流程图(SC):描述模块的控制流程。
    • 适用场景:需求明确、规模适中的结构化系统(如传统管理信息系统)。
  2. 面向对象方法:

    • 核心思想:以 "对象" 为核心,封装、继承、多态三大特性,模拟现实世界。
    • 核心工具(UML):
      • 用例图:描述用户与系统的交互(参与者、用例、关联)。
      • 类图:描述类的属性、方法及类间关系(关联、继承、聚合、组合)。
      • 时序图:描述对象间的交互时序。
      • 状态图:描述对象的状态变化。
  • 设计原则(SOLID):单一职责、开放封闭、里氏替换、接口隔离、依赖倒置。

4.2 高频考点

  • 考查形式:单选 + 多选 + 案例分析(建模)
  • 分值占比:2-3 分
  • 命题角度:① 结构化方法与面向对象方法的差异;② UML 图的适用场景;③ SOLID 设计原则理解;④ DFD 图元素识别。
  • 解题技巧:结构化 vs 面向对象:"数据流程驱动" vs "对象驱动";UML 图记 "用例描述交互、类图描述结构、时序图描述时序";SOLID 原则用 "单一职责(一个类做一件事)、开放封闭(对扩展开放对修改封闭)" 等通俗解释记忆。

4.3 真题示例

【真题示例 1】(2023 年单选)用于描述系统中类的属性、方法及类间继承关系的 UML 图是( )

A. 用例图 B. 类图 C. 时序图 D. 状态图

【解析】答案:B。类图的核心作用是描述类的结构及类间关系(继承、关联等);A 描述用户交互,C 描述交互时序,D 描述对象状态变化,故选 B。

【真题示例 2】(2022 年多选)以下属于面向对象设计 SOLID 原则的有( )

A. 单一职责原则 B. 开放封闭原则 C. 里氏替换原则 D. 模块化原则

【解析】答案:ABC。SOLID 原则包括单一职责、开放封闭、里氏替换、接口隔离、依赖倒置;模块化原则是结构化方法的原则,故选 ABC。

4.4 可视化图表

  1. 结构化方法 vs 面向对象方法对比图:

图 5:结构化与面向对象方法对比

  1. UML 核心图适用场景:

图 6:UML 核心图适用场景

5. 软件测试

5.1 知识点讲解

  1. 核心定义:软件测试是为了发现错误而执行程序的过程,核心目标是验证软件是否符合需求,提高软件质量。

  2. 测试方法分类:

    • 按测试对象:白盒测试(关注内部逻辑,如代码覆盖)、黑盒测试(关注输入输出,如等价类划分)、灰盒测试(结合白盒与黑盒)。
    • 按测试阶段:单元测试(测试单个模块)、集成测试(测试模块间接口)、系统测试(测试整个系统)、验收测试(用户验证)。
  3. 核心测试技术:

    • 黑盒测试技术:等价类划分、边界值分析、因果图、场景法。
    • 白盒测试技术:语句覆盖、判定覆盖、条件覆盖、路径覆盖。
  4. 测试模型:V 模型(测试与开发阶段对应,单元测试→详细设计,集成测试→概要设计,系统测试→需求分析)。

5.2 高频考点

  • 考查形式:单选 + 多选
  • 分值占比:1-2 分
  • 命题角度:① 测试方法分类与适用场景;② 测试阶段与开发阶段的对应关系;③ 黑盒 / 白盒测试技术识别。
  • 解题技巧:白盒(看内部逻辑)vs 黑盒(看输入输出);V 模型记 "测试阶段对应开发阶段的逆过程"。

5.3 真题示例

【真题示例 1】(2023 年单选)不关注程序内部逻辑,仅通过输入输出验证软件功能的测试方法是( )

A. 白盒测试 B. 黑盒测试 C. 灰盒测试 D. 单元测试

【解析】答案:B。黑盒测试的核心特征是 "不关心内部实现,只验证输入输出是否符合需求";A 关注内部逻辑,C 结合两者,D 是按阶段分类的测试,故选 B。

【真题示例 2】(2021 年单选)在 V 模型中,与概要设计阶段对应的测试阶段是( )

A. 单元测试 B. 集成测试 C. 系统测试 D. 验收测试

【解析】答案:B。V 模型中,开发阶段与测试阶段一一对应:详细设计→单元测试,概要设计→集成测试,需求分析→系统测试,故选 B。

5.4 可视化图表

V 模型(开发与测试阶段对应):

图 7:V 模型(开发与测试阶段对应关系)

6. 净室软件工程

6.1 知识点讲解

  1. 核心定义:净室软件工程是一种基于形式化方法的软件开发方法,核心思想是 "预防缺陷而非发现缺陷",通过严格的数学验证确保软件正确性。

  2. 理论基础:基于 "程序正确性证明",通过数学方法验证程序是否符合规格说明。

  3. 技术手段:

    • 盒式结构:黑盒(功能规格)、状态盒(状态行为)、清晰盒(实现逻辑)。

    • 统计测试:基于用户场景的测试,验证软件在实际使用中的可靠性。

  4. 应用与缺点:

    • 应用:高可靠性要求的系统(如航空航天软件)。

    • 缺点:开发成本高、对开发人员数学能力要求高、不适用于快速迭代项目。

6.2 高频考点

  • 考查形式:单选
  • 分值占比:1 分
  • 命题角度:① 净室软件工程的核心思想;② 技术手段(盒式结构);③ 适用场景。
  • 解题技巧:核心记 "预防缺陷",区别于传统测试 "发现缺陷";盒式结构按 "功能→状态→实现" 的逻辑记忆。

6.3 真题示例

【真题示例】(2022 年单选)以下关于净室软件工程的说法,正确的是( )

A. 核心是通过大量测试发现缺陷 B. 基于形式化方法,预防缺陷

C. 适用于需求频繁变更的项目 D. 开发成本低,易于推广

【解析】答案:B。净室软件工程核心是 "预防缺陷",基于形式化方法;A 是传统测试的核心,C、D 是其缺点的反向描述,故选 B。

6.4 可视化图表

净室软件工程盒式结构示意图:

图 8:净室软件工程盒式结构

7. 基于构件的软件工程(CBSE)

7.1 知识点讲解

  1. 核心定义:CBSE 是基于可复用构件的软件开发方法,核心思想是 "构件组装",将软件拆分为可复用的构件,通过组装构件快速构建系统。

  2. 构件和构件模型:

    • 构件:具有独立功能、可复用、可组装的软件模块(如 EJB、COM 组件)。
    • 构件模型:定义构件的接口、通信方式、组装规则(如 CORBA、J2EE、COM+)。
  3. CBSE 过程:构件开发→构件库建立→构件检索→构件组装→系统测试。

  4. 构件组装:通过接口匹配、适配器模式等方式,将构件组合为完整系统。

7.2 高频考点

  • 考查形式:单选 + 多选
  • 分值占比:1 分
  • 命题角度:① 构件的核心特征;② 主流构件模型(CORBA、J2EE、COM+);③ CBSE 过程步骤。
  • 解题技巧:构件核心特征记 "独立功能、可复用、可组装";构件模型按 "跨平台(CORBA)、Java 平台(J2EE)、Windows 平台(COM+)" 分类记忆。

7.3 真题示例

【真题示例】(2023 年多选)以下属于基于构件的软件工程核心特征的有( )

A. 构件可复用 B. 构件独立功能 C. 基于构件组装 D. 全程迭代开发

【解析】答案:ABC。CBSE 核心特征是构件可复用、独立功能、组装构建系统;D 是敏捷模型的特征,故选 ABC。

7.4 可视化图表

CBSE 开发过程流程图:

图 9:基于构件的软件工程开发过程

8. 软件项目管理

8.1 知识点讲解

  1. 核心定义:软件项目管理是对软件项目的计划、组织、协调、控制,确保项目在规定时间、成本、质量范围内完成。

  2. 核心内容:

    • 进度管理:制定进度计划(如甘特图、里程碑计划),监控进度偏差,调整计划。
    • 配置管理:管理软件配置项(代码、文档、数据),控制配置变更(版本控制、变更控制)。
    • 质量管理:制定质量计划,执行质量保证(QA)和质量控制(QC),确保软件质量。
    • 风险管理:识别风险、评估风险(概率 × 影响)、制定风险应对策略(规避、转移、减轻)。
  3. 核心工具:甘特图(进度可视化)、风险矩阵(风险评估)、配置管理工具(SVN、Git)。

8.2 高频考点

  • 考查形式:单选 + 多选 + 案例分析(风险应对、进度管理)
  • 分值占比:1-2 分
  • 命题角度:① 进度 / 配置 / 质量 / 风险管理的核心任务;② 风险应对策略;③ 配置管理的核心活动。
  • 解题技巧:风险应对策略记 "规避(避开风险)、转移(转移给他人)、减轻(降低影响)、接受(被动承受)";配置管理核心是 "版本控制 + 变更控制"。

8.3 真题示例

【真题示例 1】(2023 年单选)软件项目中,将风险转移给第三方(如购买保险)的风险应对策略是( )

A. 风险规避 B. 风险转移 C. 风险减轻 D. 风险接受

【解析】答案:B。风险转移的核心是将风险责任转移给第三方;A 是避开风险场景,C 是降低风险影响,D 是被动承受,故选 B。

【真题示例 2】(2022 年多选)软件配置管理的核心活动包括( )

A. 版本控制 B. 变更控制 C. 质量保证 D. 配置审计

【解析】答案:ABD。配置管理核心活动包括配置标识、版本控制、变更控制、配置审计;C 是质量管理的活动,故选 ABD。

8.4 可视化图表

软件项目风险管理流程:

图 10:软件项目风险管理流程

总结

软件工程是软考系统架构设计师的核心基础模块 ,核心考点集中在软件过程模型、需求工程、系统分析与设计、软件测试、项目管理五大板块,分值稳定且命题规律清晰,覆盖单选、多选和案例分析,是 "高分突破口"。

备考关键在于:① 掌握 "特征 - 场景" 对应关系(如模型→场景、方法→适用情况);② 熟记核心流程(需求工程、测试阶段、风险管理);③ 通过真题强化高频考点,结合图表辅助记忆;④ 关联案例分析,掌握流程类知识点的文字表达。

只要按 "分类记忆 + 图表辅助 + 真题巩固" 的思路推进,该模块可实现高分突破,为整体考试奠定坚实基础!祝各位备考者顺利拿下系统架构设计师证书!

相关推荐
郝学胜-神的一滴8 小时前
Linux线程编程:从原理到实践
linux·服务器·开发语言·c++·程序人生·设计模式·软件工程
小天互连即时通讯8 小时前
深度拆解:IM 系统架构的分层设计思想
系统架构·信息与通信
坏孩子的诺亚方舟8 小时前
FPGA系统架构设计实践11_FPGA开机
fpga开发·系统架构·xilinx·fpga配置
αSIM0V1 天前
人机交互期末复习
人机交互·软件工程
想用offer打牌1 天前
一站式了解长轮询,SSE和WebSocket
java·网络·后端·websocket·网络协议·系统架构
weixin_521431121 天前
需求分析介绍
软件工程
银帅183350309711 天前
系统分析师论文
系统架构
黄俊懿2 天前
【深入理解SpringCloud微服务】Seata(AT模式)源码解析——@GlobalTransactional注解与@globalLock生效的原理
java·spring cloud·微服务·云原生·架构·系统架构·架构师
法号:行颠2 天前
Chaos-nano协作式异步操作系统(六):`Chaos-nano` 在手持式 `VOC` 检测设备上的应用
c语言·单片机·嵌入式硬件·mcu·系统架构