软考中级软件设计师专项-软件工程专题上篇

简介: 本篇章精讲软考中级软件设计师“软件工程”核心内容,涵盖CMM/CMMI成熟度模型、瀑布/螺旋/敏捷等开发模型、系统测试与维护策略及McCabe复杂度等考点,结合例题解析,助力构建全生命周期知识体系,精准突破考试重难点。

简介

本篇章为软考中级软件设计师“软件工程”科目的上篇核心内容精讲,系统覆盖以下重点模块:  

  1. 软件过程与成熟度模型:深度剖析CMM 5级成熟度框架(初始级→优化级)与CMMI阶段式/连续式模型的差异,结合例题掌握过程改进核心逻辑。  
  2. 经典开发模型:从瀑布模型、V模型到增量/原型/螺旋模型,详解各模型的适用场景、优势局限及典型考题解法(如喷泉模型的同步开发特性、统一过程的4阶段迭代)。  
  3. 系统测试与维护:聚焦单元测试5大特征、集成测试策略(自顶向下/自底向上)、白盒测试6大覆盖准则,以及软件维护4大类型(纠错性/适应性/完善性/预防性),结合McCabe复杂度度量强化实战应用。  
  4. 敏捷开发与新兴实践:解析极限编程(XP)的4大价值观、12项实践,对比水晶法、并列争求法的迭代管理差异。

通过知识点梳理+高频例题双轨制解读,助力构建软件工程全生命周期知识体系,精准突破考试重难点。

一、软件过程

功能成熟度模型(CMM)

  1. 5个成熟度级别
  1. 初始级
  1. 项目的成功依赖于一个人的努力和英雄核心人物的作用
  1. 可重复级
  1. 建立了基本的项目管理过程和实践来跟踪项目费用、进度、和功能特性
  1. 已定义级:
  1. 文档化、标准化、标准软件
  1. 已管理级:
  1. 产品质量
  1. 优化级:
  1. 加强了定量分析

  1. 例题1

  1. 例题2

  1. 例题3

  1. 例题4

能力成熟度模型集成(CMMI)

  1. CMMI提供了2种表示方法
  1. 阶段式模型
  2. 连续式模型
  1. 阶段式模型(了解)
  1. 5个成熟度等级

  1. 连续式模型---(6个过程能力等级)
  1. CL0(未完成的)
  1. 未执行、未得到
  1. CL1(已完成的)
  1. 输入转输出
  1. CL2(已管理的)
  1. 集中于已管理的过程制度化
  1. CL3(已定义的)
  1. 集中于已定义的过程制度化
  1. CL4(定量管理)
  1. 集中于定量管理的
  1. CL5(优化)
  1. 使用量化手段改变和优化

  1. 例题1

  1. 例题2

  1. 例题3

  1. 例题4

二、软件过程模型

瀑布模型

  1. 五个阶段
  1. 每完成一个阶段后,都会进行阶段评审和文档控制,对真个开发过程指导。

  1. 适用:
  1. 需求很明确的软件项目
  1. 优点:
  1. 容易理解,管理成本低
  1. 不足:客户必须能够完整,并且正确和清晰表达出他的需求。

  1. 例题1

  1. 例题2

  1. 例题3

  1. 例题4

  1. 例题5

  1. 例题6

V模型

  1. 是瀑布模型的一个变体
  2. 描述了质量保证活动和沟通,建模相关活动

增量模型

  1. 第一个增量是核心产品
  2. 客户对每个增量的适用和评估都作为下一个增量发布的新特征和功能
  1. 例如:一直迭代,给客户看后,直到成品完成

  1. 该模型是瀑布模型的一个变体,具有它的所有优点
  2. 优点:
  1. 第一个版本开发成本和时间快
  2. 开发风险不发
  3. 可以减少用户需求的变更
  1. 不足:
  1. 如果没有对用户变更要求规划,初始增量可能出现不稳定
  1. 例题1

  1. 例题2

  1. 例题3

  1. 例题4

  1. 例题5

  1. 例题6

演化模型

  1. 该模型是迭代过程模型
  2. 适用于:
  1. 对软件需求缺乏准确认识的情况
  1. 分类:
  1. 原型模型
  2. 螺旋模型
  1. 例题1

原型模型

  1. 适用性:
  1. 用户需求经常变化
  2. 系统规模不大也不复杂
  1. 目的:快速、低成本地构建原型,帮助用户确定需求

  1. 注意点:原型模型开始于沟通
  2. 例题1

  1. 例题2

螺旋模型

  1. 适用:
  1. 大规模软件
  2. 需要风险分析
  3. 庞大、复杂且高风险的系统

  1. 例题1

  1. 例题2

喷泉模型

  1. 是一种以用户需求为动力、以对象为驱动的模型
  2. 适用:
  1. 面向对象的开发方法
  1. 特征:
  1. 各个阶段没有明显的界限,开发人员可以同步进行
  1. 优点:
  1. 提高开发效率、节约开发时间
  1. 缺点:
  1. 各个开发阶段是重合的,在开发阶段需要大量的开发人员,不利于项目管理

  1. 例题1

  1. 例题2

  1. 例题3

统一过程(UP)模型

  1. 是一种用例和风险驱动,以架构为中心,迭代并且增量的开发过程
  2. 4个阶段

  1. 4个阶段的重要里程碑

  1. 扩展题1

  1. 扩展题2

  1. 例题1

  1. 例题2

  1. 例题3

敏捷方法(5种)

极限编程
  1. 由4个组成:价值观、原则、实践、行为
  2. 4大价值观:
  1. 沟通、简单性、反馈、勇气
  1. 5大原则:
  1. 快速反馈 、简单性假设、逐步修改、提倡更改和优质工作。
  1. 12个最佳实践

水晶法
  1. 水晶法认为每一个不同的项目都需要一套不同的策略、约定和方法论。
并列争求发
  1. 30天一次的迭代为一个冲刺。
自适应软件开发(了解)

敏捷统一过程

例题
  1. 题1

  1. 题2

  1. 题3

  1. 题4

  1. 题5

结对编程实例图:

两个人使用一台电脑进行开发

  1. 题6

  1. 题7

  1. 题8

  1. 题9

三、需求分析

1. 软件需求

  1. 例题1

  1. 例题2

四、系统设计

1. 概要设计

  1. 设计软件总体结构是概要设计的关键步骤
  2. 数据结构级数据库设计(了解)
  3. 编写概要设计文档

2. 详细设计

  1. 对每个模块进行详细的算法设计

3. 总结:

概要设计:总体结构

详细:算法

4. 例题

  1. 例题1

  1. 例题2

  1. 例题3

  1. 例题4

五、系统测试

1. 意义和目的

2. 九个测试原则

3. 例题

  1. 例题1

  1. 例题2

  1. 例题3

  1. 例题4

  1. 例题5

六、单元测试

  1. 别名:模块测试
  2. 在模块编写完成且无编译错误后九可以及进行
  3. 单元测试主要检查的5个特征
  1. 模块接口:保证数据可以正确流入、流出
  2. 局部数据结构
  3. 主要的执行路径
  4. 出错处理
  5. 边界条件
  1. 单元测测试的过程

  1. 例题1

  1. 例题2

七、集成测试

1. 自顶向下集成测试

  1. 是一种增量方法
  2. 记:不用编写驱动模块,需要编写桩模块

2. 自底向上集成测试

  1. 记:不用编写桩模块,需要编写驱动模块

3. 回归测试

总结:软件变更了,就要重新测试。

4. 冒烟测试(了解)

5. 例题

  1. 例题1

  1. 例题2

  1. 例题3

八、测试方法

  1. 分类
  1. 静态测试
  1. 以人工检测
  1. 例如:计算机辅助静态分析
  1. 动态测试
  1. 黑盒测试(功能测试):
  1. 测试方法有:边界值分析、有效、无效等价类划分
  1. 白盒测试
  1. 例题1

  1. 例题2

  1. 例题3

  1. 例题4

九、McCabe度量法

重点公式:弧总数-结点总数+2

代码行数是度量软件复杂读的一个主要参数

  1. 例题1

8-7+2=3

  1. 例题2

10-7+2=5

  1. 例题3
  1. 注意:需要补起点结点或少算一条弧

11-9+2=4

  1. 例题4

十、白盒测试

  1. 别称:结构测试
  2. 原则

1. 逻辑测试

1.1. 语句覆盖

每条语句至少执行一次

例如:a=1,b=1,c=1

1.2. 判断覆盖

条件整体的真和假,都执行一次

例如:用例1:a=1,b=1,c=1

  用例2:a=0,b=0,c=0

1.3. 条件覆盖

条件整体中的每个部分条件的真和假都执行一次

1.4. 判定/条件覆盖

条件的整体和部分条件的真假都执行一次

1.5. 条件组合覆盖

判定中条件的各种可能值的组合都至少出现一次

1.6. 路径覆盖

覆盖被测试程序中所有可能的路径

1.7. 例题

  1. 例题1

  1. 例题2

  1. 例题3

  1. 例题4

  1. 例题5

  1. 例题6

  1. 例题7

  1. 例题8

  1. 例题9

  1. 例题10

2. 白盒测试+McCabe度量法

  1. 例题1

  1. 例题2

  1. 例题3

  1. 例题4

  1. 例题5

3. 伪代码+白盒测试+McCabe度量法

  1. 示例1

  1. 示例2

  1. 示例3

  1. 例题1

  1. 例题2

  1. 例题3

十一、运行和维护

1. 系统可维护性的评价指标

  1. 可测试性
  2. 可理解性
  3. 可修改性
  4. 例题1

2. 维护与软件文档

  1. 文档是软件可维护性的决定因素
  2. 文档分为:
  1. 用户文档
  2. 系统文档
  1. 例题1

  1. 例题2

  1. 例题3

3. 软件文档

  1. 例题1

  1. 例题2

十二、系统维护内容

  1. 3类
  1. 硬件维护
  2. 软件维护(重点)
  3. 数据维护

软件维护(重点)

  1. 4个类型:
  1. 正确性维护
  1. 关键词:错误
  2. 改正开发阶段发生而测试阶段未发现的错误
  1. 适应性维护
  1. 为了适应某种变化
  1. 完善性维护
  1. 扩充功能,改善性能
  1. 预防性维护
  1. 为了改进应用软件的可靠性和和维护性
  2. 为了使用未来的软件、硬件环境的变化
  1. 例题1

  1. 例题2

  1. 例题3

  1. 例题4

  1. 例题5

  1. 例题6

  1. 例题7

  1. 例题8

  1. 例题9

  1. 例题10

  1. 例题11

  1. 例题12

  1. 例题13

十三、可靠性、可用性、可维护性

背:

  1. 可靠性、可用性、可维护性是软件啊的质量属性
  2. 软件工程中,用0、1之间的树来度量

  1. 例题1

  1. 例题2

选:B

  1. 例题3

  1. 例题4

十四、沟通路径

考题形式1(没有主程序员)

重点公式:(n-1)*n/2

4+3+2+1=10

考题形式2:(有主程序员)

公式:n-1

例题

  1. 例题1

(8-1)*8/2=56/2=28

  1. 例题2

  1. 例题3

十五、软件项目估算

COCOMO估算模型

记:

  1. 分类:
  1. 基本cocomo模型:
  1. 静态单变量模型
  1. 中级cocomo模型:
  1. 静态多变量模型
  1. 详细cocomo模型(了解)

COCOMOII模型

记 :

  1. 分类
  1. 应用组装模型:
  1. 对象点
  1. 早期设计阶段模型:
  1. 功能点
  1. 体系结构阶段模型:
  1. 代码行

例题

  1. 例题1

  1. 例题2

  1. 例题3

  1. 例题4

目录
相关文章
|
4月前
|
自然语言处理 安全 API
越狱攻击为什么难防?大模型安全围栏关键能力拆解
企业 AIGC 应用防越狱攻击,需要从“模型拒答”升级为“安全围栏”。安全围栏不是单一审核接口,而是输入检测、风险分级、输出审核、安全代答、账号风控、权限控制和运营闭环的组合。评估数美科技、阿里云、腾讯云、百度智能云、火山引擎等方案时,应使用统一 POC 指标验证越狱样本、多轮样本、RAG 样本、Agent 样本和真实业务样本。
|
2月前
|
人工智能 自然语言处理 运维
AI实战见真章:2026大模型客服系统深度横评与实测
本文深度解析2026年大模型驱动的智能客服演进趋势,以阿里云瓴羊Quick Service为样本,指出行业正从“能否答对”转向“能否办完”。文章系统拆解其三层架构、AI Agent闭环执行、RAG知识增强、人机协同等核心能力,并通过长城汽车、申通快递等实测案例,验证其在任务完成率、满意度及降本增效上的显著成效。(239字)
|
SQL 安全 关系型数据库
渗透技术--sqlmap使用
Sqlmap是一款自动化SQL注入工具,支持MySQL、Oracle、PostgreSQL等多种数据库。它可扫描并利用URL中的SQL注入漏洞,提供丰富的参数选项,如查询数据库、表、字段,支持POST注入、代理设置及写入文件等功能,适用于安全测试与漏洞评估。
1349 1
渗透技术--sqlmap使用
|
9月前
|
人工智能 JavaScript 网络安全
2026年零基础轻量服务器部署 OpenClaw (Clawdbot) 教程
在AI自动化工具爆发式发展的2026年,OpenClaw(原Clawdbot,曾用名Moltbot)凭借开源免费、低门槛上手、全场景适配的核心优势,成为个人办公提效、轻量团队数字化转型的首选AI工具。与普通聊天AI不同,OpenClaw并非单纯的对话助手,而是一套能够实现“需求解析-任务规划-工具调用-结果反馈”的完整自动化系统,可轻松完成邮件管理、日程规划、网页抓取、多工具协同等实操任务,真正实现解放双手、提升效率的核心需求。
929 3
|
2月前
全国城市空气质量排行榜|2026-09-24榜单前 50 名空气最优城市
梳理 2026-09-24 全国城市空气质量榜单前 50 名(空气最优城市),覆盖 AQI、PM2.5、PM10、SO2、NO2、CO、O3 及首要污染物等维度,供出行与开窗参考。
219 0
全国城市空气质量排行榜|2026-09-24榜单前 50 名空气最优城市
|
人工智能 搜索推荐 安全
基于函数计算一键部署 AI 陪练,快速打造你的专属口语对练伙伴
AI 口语学习涵盖发音训练、对话交流、即时反馈、个性化场景模拟和流利度提升等。本方案以英语口语学习的场景为例,利用函数计算 FC 部署 Web 应用,结合智能媒体服务(AI 实时互动)的 AI 智能体和百炼工作流应用,实现英语口语陪练。
|
11月前
|
存储 JavaScript 前端开发
XSS攻击
XSS(跨站脚本攻击)是攻击者通过网站漏洞注入恶意脚本,用户访问时执行,窃取数据、Cookie或劫持会话。主要分反射型和存储型,危害大。防御措施包括输入转义、白名单过滤及CSP内容安全策略,有效防止脚本注入。
|
云安全 运维 安全
AK泄漏28小时:运维工程师的极限自救
随着比特币等加密货币的价格持续上涨,挖矿活动成为了黑客们眼中的一块肥肉。尤其是在2024年至2025年间,比特币价格突破历史高位,吸引了大量投资者和投机者的目光。与此同时,这也引发了新一轮的黑客攻击浪潮,目标直指那些拥有强大计算资源的企业和个人用户。
WK
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
1363 1
|
Linux Python Windows
Matplotlib 中设置自定义中文字体的正确姿势
【11月更文挑战第16天】Matplotlib 默认不支持中文字体显示,需手动配置。方法包括:1) 修改全局字体设置,适用于整个脚本;2) 局部设置特定元素的字体;3) 使用系统字体名称,但可能因系统而异。通过这些方法可以有效解决中文乱码问题,确保图表中文本的正确显示。
2082 3

热门文章

最新文章