← 回笔记首页

软考 · D1 死记硬背 · 软件工程①

  1. 1过程模型速判🔥 11/26 套
  2. 2敏捷方法★ 6/26 套
  3. 3CMM 与 CMMI◇ 3/26 套
  4. 4需求与结构化分析◇ 4/26 套
  5. 5耦合与内聚★ 8/26 套
  6. 6模块设计原则★ 7/26 套
  7. 7体系结构风格◇ 3/26 套
软考中级 · 软件设计师 · D1 · 软件工程① · 开发模型、需求与结构化方法

要背的 7 组考点

D1 里要死记的内容都在这一页:7 组考点、42 张卡片和表,每组都标了考频。DFD 找错与补流要按步骤推,放在配套的技巧图解里。

怎么用
  1. 每组先看最上面的速查表或阶梯图,把全貌记住;再看卡片里的示意图、易错点和“怎么记”。
  2. 点右上角“遮住重点”:黄色关键词变成灰块,自己先说出来,再点灰块核对。
  3. 每组最后有自测和真题。背熟的卡片点“记住了”,以后点“只看没记住的”,只复习剩下的。进度存在这个浏览器里。
🔥 超高频 ≥9 套★ 高频 6–8◇ 常考 3–5· 偶考 ≤2考频 = 2009–2023 的 26 套上午真题里考过几套;近年 = 2016–2023 的 12 套
1

过程模型速判

🔥 11/26 套 · 近年 2/12

给项目情境,选最合适或最不适合的模型

这一组的考法和考频(4 个)
  • 🔥 11/26 套 · 近年 2/12按项目特点选择过程模型
  • ★ 7/26 套 · 近年 4/12增量模型特点辨析
  • ◇ 4/26 套 · 近年 3/12瀑布/螺旋/喷泉/原型特点
  • ◇ 4/26 套 · 近年 0/12统一过程 UP 阶段与元素

判断时先问四个问题:需求明确吗?风险大吗?要分批交付吗?是面向对象吗?

看到什么,选什么模型

题目里出现选易错点
需求明确、稳定;有同类项目经验;替换旧系统、交付期严格(规模再大也一样)瀑布模型需求会变、不明确时,它就是“最不适合”的
需求不清,要有效地捕获需求,让用户先看到样子原型模型超大规模的系统不宜用原型
分批交付,核心功能先上,尽快构造出可运行的产品增量模型“很容易把需求划分成增量”是错的,怎么划分恰恰是难点
技术含量高、风险多的大型复杂项目螺旋模型唯一显式做风险分析的模型;“开发成本低”是错的
测试阶段要和开发阶段一一对应V 模型详细设计对单元测试,概要设计对集成测试,需求分析对系统测试
面向对象、以对象为驱动、各阶段之间无间隙喷泉模型“各开发活动之间有明显的边界”是错的
用例驱动、以架构为中心、迭代并且增量统一过程 RUP四个阶段:初始、精化、构建、移交,没有“确认阶段”
想尽快投入使用,边用边改演化模型原型的“演化型”就是这个思路:不断完善成产品
瀑布模型示意图

瀑布模型 Waterfall

特点

各阶段按线性顺序逐级下落,前一阶段的输出是后一阶段的输入,也叫文档驱动。适合需求明确、稳定的项目。

易错缺点:缺乏灵活性,难以适应需求变化。需求可能变化时,它就是“最不适合”的那个

怎么记真题口径:需求很明确、有类似项目的经验,哪怕规模很大,也选瀑布;替换旧系统、交付期严格,也选瀑布。反过来,题目一说需求会变、需求不明确,瀑布就是最不适合的。

真题 10下·15 11下·30 12下·29
原型模型示意图

原型模型 Prototype

特点

先快速做出一个可运行的原型给用户试用,再按反馈修改,用原型把真实需求引出来。

易错抛弃型:澄清需求后丢掉;演化型:不断完善成产品。不适合超大规模系统

怎么记用户自己也说不清想要什么时用原型:先做个样子给他看,看了才知道要什么。所以“有效地捕获需求”选原型;但超大规模的系统不宜用原型。

真题 11上·29 15下·29
增量模型示意图

增量模型 Incremental

★ 7/26 套 · 近年 4/12
特点

把软件分成一系列增量构件逐个交付,第一个增量往往是核心产品。能快速构造可运行的产品。

易错首版快、风险低;优先级最高的功能先交付、测试最充分。难点:如何划分增量并不容易

怎么记增量模型是近年考得最多的模型。核心功能最先交付,所以它接受的测试最多。陷阱选项:“很容易把需求划分成增量”“有利于进行好的模块划分”,这恰恰是它的难点。

真题 12上·29 13下·30 16上·30
螺旋模型示意图

螺旋模型 Spiral

◇ 4/26 套 · 近年 3/12
特点

瀑布 + 原型 + 风险分析。每一圈都经过:制定计划、风险分析、实施工程、客户评估。

补充风险驱动,适合大型、复杂、高风险项目,要求开发人员有丰富的风险评估经验

怎么记题干一出现“风险”,先想螺旋。它是唯一显式做风险分析的模型,所以技术含量高、风险多的大项目选它;“开发成本低”“不适合大型软件”都是错误说法。

真题 15上·29
V 模型示意图

V 模型 V-Model

特点

瀑布的变种:左边自上而下是开发,右边自下而上是测试,测试与开发阶段一一对应。

补充需求分析 — 系统测试
概要设计 — 集成测试
详细设计 — 单元测试

怎么记V 模型说明测试怎样和分析、设计对应:设计越细,对应的测试粒度越小。详细设计对应单元测试,概要设计对应集成测试。

喷泉模型示意图

喷泉模型 Fountain

特点

以用户需求为动力,以对象为驱动,适合面向对象的开发方法。

易错“喷泉”体现两个特性:迭代和无间隙(分析、设计、编码之间没有明显边界)

怎么记看到“面向对象”“对象驱动”“无间隙”就选喷泉。“各开发活动之间存在明显的边界”,正是一道真题里的错误选项。

真题 11下·29 15下·30
统一过程示意图

统一过程 RUP / UP

◇ 4/26 套 · 近年 0/12
特点

用例驱动、以架构为中心、迭代并且增量。
四个阶段:初始→精化→构建→移交。

易错精化阶段做需求分析和架构演进;第四阶段叫移交不叫确认;“谁做”用角色表述

怎么记统一过程考三件事:三个特征、四个阶段、精化阶段的里程碑是生命周期架构。有的题说有五个阶段,是在最后多加了一个产生阶段。

真题 09上·16 10上·32 14上·29

顺带记 考得少,看一眼

  • 软件工程三要素 方法、工具、过程(不含人员、硬件系统、软件系统) · 1/26 套 · 近年 0/12真题 15上·15
  • 基于构件的开发 检索到可复用构件后,先做合格性检验和适应性修改,再集成到新系统中 · 1/26 套 · 近年 0/12真题 10上·15

自测 · 8 题

先在心里说出答案,再点开核对。

  1. 要开发一个大规模系统,但已有相关领域、类似规模系统的开发经验,最适合?
  2. 为了有效地捕获系统需求,应采用?
  3. 产品技术含量很高,与客户相关的风险也很多
  4. 以用户需求为动力,以对象为驱动,适合面向对象的开发方法
  5. 超大规模软件,最不适宜采用哪个模型?
    瀑布原型螺旋喷泉
  6. “很容易将客户需求划分为多个增量”是增量开发的优势吗?
  7. 统一过程中,里程碑是“生命周期架构”的阶段
  8. RUP 用哪个模型元素表述“谁做”?
真题2016下 第29–30题
某开发小组欲为一公司开发一个产品控制软件,监控产品的生产和销售过程,从购买各种材料开始,到产品的加工和销售进行全程跟踪。购买材料的流程、产品的加工过程以及销售过程可能会发生变化。该软件的开发最不适宜采用(29)模型,主要是因为这种模型(30)。
(29)A. 瀑布 B. 原型 C. 增量 D. 喷泉
(30)A. 不能解决风险 B. 不能快速提交软件
   C. 难以适应变化的需求 D. 不能理解用户的需求
2

敏捷方法

★ 6/26 套 · 近年 4/12

XP 的价值观和实践 · 四个流派的一句话特征

这一组的考法和考频(2 个)
  • ★ 6/26 套 · 近年 4/12敏捷方法流派辨析
  • ★ 6/26 套 · 近年 3/12XP 价值观与最佳实践

敏捷宣言:左边高于右边

个体和交互高于流程和工具
可工作的软件高于详尽的文档
客户合作高于合同谈判
响应变化高于遵循计划

怎么记右边的东西也有价值,只是敏捷更看重左边。

几个流派,各记一句

流派记住这一句真题
极限编程 XP四个价值观:沟通、简单、反馈、勇气;十二个最佳实践09下·36 10下·18 17下·32
并列争球法 Scrum把每段时间(30 天)一次的迭代叫一个冲刺,按需求的优先级实现16下·16 19下·29
水晶法 Crystal每一个不同的项目都需要一套不同的策略、约定和方法论12下·30 15上·30
自适应软件开发 ASD有一个使命作指导,设立项目目标,但不描述如何达到
敏捷统一过程 AUP在大型上连续,在小型上迭代
XP 价值观示意图

XP 价值观 eXtreme Programming

★ 6/26 套 · 近年 3/12
极限编程 XP

XP 由价值观、原则、实践和行为四部分组成。四个价值观:沟通、简单、反馈、勇气。

怎么记极限编程是敏捷方法里考得最多的。四个价值观是沟通、简单、反馈和勇气;“好的计划”“持续集成”都不是价值观。

真题 09下·36

XP 12 实践 Best Practices

十二个最佳实践

十二个最佳实践如下,黄色的是真题里考过的:

计划游戏小型发布隐喻简单设计测试先行重构结对编程集体代码所有制持续集成每周 40 小时现场客户编码标准

易错里面没有“精心设计”;系统要尽可能早地交付 = 小型发布

怎么记12 个实践要能认出来。常考两种:给描述问是哪个实践,比如系统要尽可能早交付是小型发布;或者问哪个不属于,比如精心设计,XP 主张的恰恰是简单设计。

真题 10下·18 17下·32
结对与重构示意图

结对与重构 Pair & Refactor

两个常考实践

结对编程:两人共用一台电脑,一人写一人审,相当于非正式的代码审查,代码质量更高。重构:不改变功能和行为,重新组织、简化设计。

易错结对编程不保证编码速度更快

怎么记结对编程是两个人盯着同一段代码,边写边审查;重构是在不改变功能的前提下,把设计改简单,2009 年上半年就考过重构的定义。

真题 09上·15
并列争球法示意图

并列争球法 Scrum

★ 6/26 套 · 近年 4/12
一句话特征

使用迭代的方法,把每段时间(30 天)一次的迭代称为一个冲刺,按需求的优先级来实现产品;多个自组织、自治的小组并行递增地实现。

易错包含产品待办列表、冲刺待办列表和冲刺;不包含“重构”

怎么记看到“冲刺”,就选并列争球法,也就是 Scrum。

真题 16下·16 19下·29
水晶法示意图

水晶法 Crystal

一句话特征

认为每一个不同的项目都需要一套不同的策略、约定和方法论。

怎么记水晶法:每个项目都不一样,所以各用一套方法论。2012 年下半年和 2015 年上半年考的是同一句话。

真题 12下·30 15上·30
ASD 与 AUP示意图

ASD 与 AUP Adaptive / Agile UP

一句话特征

自适应软件开发 ASD:有一个使命作为指导,设立项目的目标,但不描述如何达到。敏捷统一过程 AUP:在大型上连续,在小型上迭代。

怎么记ASD 记“使命”:只定目标不定做法。AUP 记一句话:在大型上连续,在小型上迭代。

自测 · 6 题

先在心里说出答案,再点开核对。

  1. 系统的设计要能够尽可能早地交付,属于 XP 的哪个最佳实践?
  2. XP 的十二个最佳实践不包括?
    小的发布结对编程持续集成精心设计
  3. XP 的价值观包括沟通、简单性和……
    好的计划不断的发布反馈和勇气持续集成
  4. 把每段时间(30 天)一次的迭代称为一个“冲刺”
  5. 一种重新组织的技术,可以简化构件的设计,而无需改变其功能或行为
  6. 有一个使命作为指导,设立项目的目标,但不描述如何达到这个目标
真题2015上 第30题
在敏捷过程的方法中(30)认为每一个不同的项目都需要一套不同的策略、约定和方法论。
A. 极限编程(XP)   B. 水晶法(Crystal)
C. 并列争球法(Scrum) D. 自适应软件开发(ASD)
3

CMM 与 CMMI

◇ 3/26 套 · 近年 0/12

五级阶梯 · “已管理”到底是第几级

这一组的考法和考频(3 个)
  • ◇ 3/26 套 · 近年 0/12CMM 各级核心判断
  • ◇ 3/26 套 · 近年 2/12CMMI 连续式能力等级
  • ◇ 3/26 套 · 近年 1/12CMM/CMMI 概念辨析

CMM 五级:1 级最低,5 级最高

1 级初始级过程无序,成功靠个人
2 级可重复级有了基本的项目管理
3 级已定义级用组织的标准过程
4 级已管理级定量理解和控制
5 级优化级量化反馈,持续改进
CMM1初始级2可重复级3已定义级4已管理级5优化级
CMMI 阶段式1初始级2已管理级3已定义级4定量管理级5优化级

易错红框是最大的坑:“已管理”在 CMM 是第 4 级,在 CMMI 阶段式是第 2 级。

怎么记顺序按“项目靠什么做成”来记:靠个人 → 靠项目管理 → 靠组织的标准过程 → 靠数据度量 → 靠持续改进。CMMI 的名字对着英文记:第 2 级 Managed 叫“已管理”,第 4 级 Quantitatively Managed 叫“定量管理”;CMM 的第 2 级是 Repeatable(可重复),第 4 级才是 Managed。

真题里每一级这样描述

级别真题里的说法真题
2 可重复级建立了基本的项目管理过程和实践,能跟踪费用、进度和功能特性09上·29
3 已定义级组织有了标准软件过程;核心是使用标准开发过程构建系统09上·29
4 已管理级收集详细的度量,对软件过程和产品有定量的理解与控制;重点关注产品和过程质量09下·29 13下·32
5 优化级过程的量化反馈和新思想、新技术,促使过程持续改进
CMMI示意图

CMMI CMM Integration

◇ 3/26 套 · 近年 1/12
要点

把已有的几个 CMM 模型结合成集成模型,同时支持阶段式和连续式两种表示。

易错“只支持阶段式”“1 级最高 5 级最低”都是错项

怎么记CMMI 同时支持阶段式和连续式,说它只支持阶段式是错的;CMM 一级最低、五级最高,说反了也是错的。

真题 11上·30 14下·30

连续式 CL0~CL5

◇ 3/26 套 · 近年 2/12
能力等级(共 6 级)

CL0 未完成、CL1 已执行、CL2 已管理、CL3 已定义、CL4 定量管理、CL5 优化。

补充CL1:可标识的输入转换为输出;CL3:过程的组织级标准化和部署;CL5:用量化(统计学)手段优化过程域

怎么记连续式按过程域评定能力等级,一共六级。考过的就是这几个等级的含义:CL1 把输入转成输出,CL3 关注组织级标准化和部署,CL5 用统计学手段优化。

真题 10上·31 18下·30

顺带记 考得少,看一眼

  • 软件过程改进框架 由过程改进基础设施、过程改进线路图、软件过程评估方法、软件过程改进计划构成;每次改进要经过评估、计划、改进、监控四步,并反复进行(这四步不是“框架的组成”) · 1/26 套 · 近年 0/12真题 10下·30

自测 · 6 题

先在心里说出答案,再点开核对。

  1. CMM 哪一级的核心是“使用标准开发过程构建系统”?
  2. CMM 哪一级对软件过程和产品都有定量的理解和控制?
  3. “CMM 中 1 级成熟度最高,5 级最低”
  4. “CMMI 只支持阶段式,不支持连续式”
  5. CMMI 连续式中关注过程的组织级标准化和部署的能力等级
  6. CMMI 连续式中使用量化(统计学)手段改变和优化过程域的能力等级
真题2013下 第32题
SEI 能力成熟度模型(SEI CMM)把软件开发企业分为 5 个成熟度级别,其中(32)重点关注产品和过程质量。
A. 级别 2:重复级  B. 级别 3:确定级
C. 级别 4:管理级  D. 级别 5:优化级
4

需求与结构化分析

◇ 4/26 套 · 近年 2/12

需求分三类 · 分析阶段交出什么

这一组的考法和考频(4 个)
  • ◇ 4/26 套 · 近年 2/12加工规格说明辨析
  • ◇ 3/26 套 · 近年 2/12结构化分析思想与产出
  • · 2/26 套 · 近年 1/12功能与非功能需求区分
  • · 2/26 套 · 近年 0/12结构化方法特点与适用

需求分三类

类别一句话真题里的例子
功能需求系统要做什么每个月特定的时间发放员工工资(17下·19)
非功能需求产品必须具备的属性或品质:要做到多好3 秒内对用户请求作出响应;并发用户数、计算精度、可靠性(13上·18)
设计约束对解决方案的限制必须使用某种数据库、某种运行环境

易错带具体数字指标的(响应时间、并发数、精度)基本都是非功能需求。

功能需求示意图

功能需求

需求分三类

系统必须完成的功能:要做什么事。例:每个月特定的时间发放员工工资。

怎么记功能需求说系统要做什么事,比如每个月特定的时间发放工资。

真题 17下·19
非功能需求示意图

非功能需求

· 2/26 套 · 近年 1/12
需求分三类

产品必须具备的属性或品质:性能、可靠性、安全性、响应时间、计算精度、并发用户数……

补充带具体指标的往往是非功能需求:“3 秒内对用户请求作出响应”

怎么记非功能需求说系统要做到多好。判断技巧:带具体指标的,比如三秒内响应、一百个用户同时查询,往往是非功能需求。

真题 13上·18 17下·19
设计约束示意图

设计约束

需求分三类

对解决方案的限制:必须使用某种技术、某种数据库或运行环境。

补充按层次另分:业务需求、用户需求、系统需求

怎么记设计约束限制你怎么做,比如必须用某种数据库。另一种分法是按层次:业务需求、用户需求、系统需求。

结构化方法示意图

结构化方法

特点

面向数据流,指导思想是自顶向下、逐层分解,基本原则是功能的分解与抽象;特别适合数据处理领域。

易错不适合大规模、特别复杂的项目,难以适应需求变化

怎么记结构化方法特别适合数据处理领域;说它比面向对象更适合大规模、特别复杂的项目,是错的。

真题 14下·15 15下·16
分析的产出示意图

分析的产出

◇ 3/26 套 · 近年 2/12
结构化分析的结果

分层的数据流图、一本数据字典、一组加工逻辑说明(小说明)、补充材料。

易错结构图、软件体系结构图是设计阶段的产物,不属于分析结果

怎么记分析阶段交四样东西:数据流图、数据字典、加工逻辑说明和补充材料。模块结构图、体系结构图都是设计阶段的。

真题 16上·19 18下·15
数据字典示意图

数据字典

四类条目

数据流、数据项、数据存储、基本加工。

易错符号:= 定义为,+ 与,[ | ] 或,{ } 重复,( ) 可选;外部实体不是数据字典条目

怎么记数据字典给数据流图里的每个元素下定义,四类条目是数据流、数据项、数据存储和基本加工。

加工规格说明示意图

加工规格说明

◇ 4/26 套 · 近年 2/12
加工逻辑

每个基本加工都要有一个,描述把输入数据流变换为输出数据流的加工规则。

易错不必描述实现加工的具体流程;多个条件组合时用判定表、判定树最清楚

怎么记加工规格说明只写规则,不写实现。“必须描述实现加工的具体流程”就是错的;动作依赖多个条件的组合时,用判定表或判定树。

真题 13下·15 15下·33

自测 · 5 题

先在心里说出答案,再点开核对。

  1. “软件产品必须能够在 3 秒内对用户请求作出响应”属于?
  2. 财务系统:每个月特定的时间发放员工工资
  3. 结构化分析的输出不包括?
    数据流图数据字典加工逻辑结构图
  4. “加工规格说明必须描述实现加工的具体流程”
  5. 加工的一组动作依赖多个逻辑条件的取值,用什么表示最清楚?
真题2015下 第15–16题
若用户需求不清晰且经常发生变化,但系统规模不太大且不太复杂,则最适宜采用(15)开发方法;对于数据处理领域的问题,若系统规模不太大且不太复杂,需求变化也不大,则最适宜采用(16)开发方法。
(15)(16)的选项相同:
A. 结构化 B. Jackson C. 原型化 D. 面向对象
5

耦合与内聚

★ 8/26 套 · 近年 7/12

两条 7 级阶梯 · 按描述认类型

这一组的考法和考频(2 个)
  • ★ 8/26 套 · 近年 7/12按描述判断耦合类型
  • ★ 7/26 套 · 近年 4/12按描述判断内聚类型

耦合看模块之间,越低越好;内聚看模块内部,越高越好。设计目标永远是高内聚、低耦合。

耦合:模块之间联系有多紧

为什么是这个顺序:从上到下,两个模块共享的东西越来越多、越来越“私密”——什么都不传 → 传一个值 → 传一整个结构 → 传控制信号去指挥对方 → 共用一个全局变量 → 共用一大块全局数据 → 直接闯进对方内部。

低(好)高(差)
  1. 1无直接耦合示意图
    无直接耦合
    两个模块之间没有直接联系,各干各的
  2. 2数据耦合示意图
    数据耦合
    只传递简单的数据值(参数)
  3. 3标记耦合示意图
    标记耦合
    传递一个数据结构,比如一条记录
    真题:模块 A 给模块 B 传递数据结构 X(19上·32)
  4. 4控制耦合示意图
    控制耦合
    传递控制信号(比如标志位),决定对方走哪个分支
  5. 5外部耦合示意图
    外部耦合
    都访问同一个全局简单变量,或同一个外部环境
  6. 6公共耦合示意图
    公共耦合
    都访问同一个公共数据环境,比如全局数据结构
    真题:A 和 B 都访问相同的全局变量和数据结构(16上·29)
  7. 7内容耦合示意图
    内容耦合
    直接访问对方的内部数据,或从非正常入口转入对方
    真题:A 直接访问 B 的内部数据(11上·16);A 通过非正常入口转入 B(21上·31)

易错耦合度取决于接口的复杂性、调用方式和传递的信息,与模块里有几个功能无关。

内聚:模块内部结合得有多紧

为什么是这个顺序:从上到下,模块里的东西“待在一起的理由”越来越弱——为了同一个功能 → 上一步的输出给下一步 → 用的是同一份数据 → 只是要按某个次序做 → 只是同一时间做 → 只是功能长得像、靠参数挑一个 → 毫无理由,凑在一起。

高(好)低(差)
  1. 1功能内聚示意图
    功能内聚
    所有元素共同完成一个功能,缺一不可
  2. 2顺序内聚示意图
    顺序内聚
    必须顺序执行,前一个的输出是后一个的输入
  3. 3通信内聚示意图
    通信内聚
    都在同一个数据结构上操作,或用相同的输入、产生相同的输出
    真题:向一个数据结构区域写数据,又从该区域读数据(15上·32)
  4. 4过程内聚示意图
    过程内聚
    必须以特定的次序执行,但不一定传数据
    真题:模块内的多个功能必须以特定的次序执行(17下·35)
  5. 5时间内聚示意图
    时间内聚
    需要同时执行的动作放在一起,比如初始化模块
  6. 6逻辑内聚示意图
    逻辑内聚
    几个逻辑上相似的功能,用参数决定做哪一个
    真题:执行几个逻辑上相似的功能,通过参数确定完成哪一个(12上·16)
  7. 7偶然内聚示意图
    偶然内聚
    元素之间没有任何联系,也叫巧合内聚
    真题:几个模块里语句互不相关的相同程序块,抽出来成一个模块(17上·33)

易错偶然内聚最低:不易理解、不易修改和维护,还会影响模块间的耦合(17上·34)。教程第 10 章写的是“功能、信息、通信……”,第 2 级换成了信息内聚;真题按这一页的“功能、顺序、通信……”出。

自测 · 8 题

先在心里说出答案,再点开核对。

  1. 模块 A 直接访问模块 B 的内部数据
  2. 模块 A 通过非正常入口转入模块 B 内部
  3. 模块 A 和模块 B 都访问相同的全局变量和数据结构
  4. 已知模块 A 给模块 B 传递数据结构 X
  5. 模块执行几个逻辑上相似的功能,通过参数确定完成哪一个
  6. 某模块向一个数据结构区域写数据,又从该区域读数据
  7. 模块内的多个功能必须以特定的次序执行
  8. 划分软件系统模块时,应尽量做到?
    高内聚高耦合高内聚低耦合低内聚高耦合低内聚低耦合
真题2017上 第33–34题
模块 A、B 和 C 有相同的程序块,块内的语句之间没有任何联系,现把该程序块取出来,形成新的模块 D,则模块 D 的内聚类型为(33)内聚。以下关于该内聚类型的叙述中,不正确的是(34)。
(33)A. 巧合 B. 逻辑 C. 时间 D. 过程
(34)A. 具有最低的内聚性 B. 不易修改和维护
   C. 不易理解     D. 不影响模块间的耦合关系
6

模块设计原则

★ 7/26 套 · 近年 6/12

概要 vs 详细 · 作用范围 · 两个反例

这一组的考法和考频(5 个)
  • ★ 7/26 套 · 近年 6/12模块化设计原则辨析
  • ★ 7/26 套 · 近年 3/12概要与详细设计任务
  • ◇ 3/26 套 · 近年 1/12作用范围与控制范围
  • ◇ 3/26 套 · 近年 1/12分析模型映射到设计
  • · 2/26 套 · 近年 1/12结构图成分与模块类型

这些说法对不对

说法对错
模块的作用范围应在其控制范围之内对
模块的控制范围应在其作用范围之内错:记反了
模块的大小适中;结构图的深度、宽度、扇入、扇出都适中对
顶层扇出较大,中层扇出较小,底层扇入较高对
避免或减少病态连接(从中部进入或访问一个模块);减少高扇出对
完善模块的功能对
模块的功能越单纯越好、模块越小越好错:模块太多,接口变复杂
把相似功能的模块合并错:会形成逻辑内聚

怎么记两个反例最常考:模块功能越单纯越好,会让模块太多;把相似功能的模块合并,会形成逻辑内聚。这两种做法都不能改进设计质量(16上·31、17上·32)。

概要 vs 详细示意图

概要 vs 详细

★ 7/26 套 · 近年 3/12
设计两阶段

概要设计:划分子系统和模块、确定模块之间的调用关系,做体系结构、接口和数据设计。详细设计:每个模块内部的算法和数据结构。

易错“项目范围”不是设计模型关注的内容

怎么记确定模块划分和调用关系,是概要设计;模块内部用什么数据结构和算法,是详细设计。

真题 11下·15 15上·16 15下·32

分析 → 设计

◇ 3/26 套 · 近年 1/12
怎么对应

数据流图 → 体系结构设计、接口设计;数据字典、E-R 图 → 数据设计;加工规格说明 → 过程设计。

补充接口设计:软件与外部环境、模块之间的交互和调用关系;过程设计 = 数据结构和算法的设计

怎么记接口设计依据数据流图,这一条考过好几次;过程设计主要是对数据结构和算法的设计。

真题 11下·16 16下·15 17上·15
作用与控制示意图

作用与控制

◇ 3/26 套 · 近年 1/12
一条原则

控制范围:模块本身及所有下属模块。作用范围:受该模块内一个判定影响的模块。作用范围应在控制范围之内。

易错超出时把判定上移,或把受影响的模块下移;“将父模块下移”不对

怎么记一个模块的作用范围要在它的控制范围之内,千万别记反成“控制范围在作用范围之内”,那是一道真题的错误选项。

真题 12下·18 13下·16
扇入与扇出示意图

扇入与扇出

结构图

扇出:直接调用的下级模块数;扇入:直接调用它的上级模块数。好的结构:顶层扇出大,中层扇出小,底层扇入高。

补充深度、宽度、扇入、扇出都要适中,尽量减少高扇出

怎么记结构图的深度、宽度、扇入、扇出要适中,好的结构是顶层扇出较大、底层扇入较高。

模块四类示意图

模块四类

· 2/26 套 · 近年 1/12
按功能分

传入:取得数据交给别人;传出:输出数据;变换:从上级拿数据,加工后返回上级;协调:只调用和协调其他模块。

补充结构图的基本成分:模块、调用、数据

怎么记模块 B 拿到成绩,算出平均分和最高分再返回给模块 A,B 就是变换模块。

真题 14上·16
数据流与结构示意图

数据流与结构

再记两条

数据流分变换流和事务流,一个系统往往两种都有。程序的三种基本控制结构:顺序、选择、重复。

补充N-S 盒图强制结构化;PAD 是二维树形结构;PDL 伪代码可嵌入源程序

怎么记“一个软件系统只有一种数据流类型”是错的;程序的三种基本控制结构是顺序、选择和重复。

真题 14上·15 10上·33

顺带记 考得少,看一眼

  • 界面设计三条黄金准则(Mandel) 用户操纵控制、减轻用户的记忆负担、保持界面一致(“界面美观整洁”不是其中之一) · 1/26 套 · 近年 1/12真题 19上·33

自测 · 6 题

先在心里说出答案,再点开核对。

  1. 确定软件的模块划分及模块之间的调用关系,是哪个阶段的任务?
  2. 利用结构化分析模型进行接口设计时,应以什么为依据?
  3. 结构化开发方法中,哪项设计主要包含对数据结构和算法的设计?
  4. 作用范围不在控制范围内时,“将父模块下移”是适当的处理吗?
  5. 哪项不能改进设计质量?
    减少高扇出模块大小适中相似功能的模块合并完善模块功能
  6. A 把成绩交给 B,B 算出平均分、最高分再返回给 A,B 属于什么模块?
真题2016上 第31题
在设计软件的模块结构时,(31)不能改进设计质量。
A. 模块的作用范围应在其控制范围之内
B. 模块的大小适中
C. 避免或减少使用病态连接(从中部进入或访问一个模块)
D. 模块的功能越单纯越好
7

体系结构风格

◇ 3/26 套 · 近年 3/12

五大类 · 管道过滤器 · 仓库 · C/S 与 B/S · MVC

这一组的考法和考频(2 个)
  • ◇ 3/26 套 · 近年 3/12MVC、C/S、仓库等风格
  • · 2/26 套 · 近年 2/12管道-过滤器优缺点

经典五大类

大类包括一句话
数据流风格批处理序列、管道-过滤器数据一站一站往下流
调用/返回风格主程序-子程序、面向对象、层次结构调用别人,拿回结果
独立构件风格进程通信、事件驱动(也叫隐式调用)构件之间不直接调用,靠消息或事件
虚拟机风格解释器、基于规则的系统自己造一个运行环境来执行
仓库风格数据库系统、黑板系统、超文本系统所有构件都围着中央数据读写

易错编译器不属于仓库风格(16上·33);“维护只在服务器端”是 B/S 的优点,不是 C/S 的(17上·31)。

管道-过滤器示意图

管道-过滤器

· 2/26 套 · 近年 2/12
优缺点

优点:构件高内聚、低耦合,支持重用,易维护和扩展,支持并行执行。缺点:容易变成批处理结构,不适合交互式应用,数据转换开销使性能下降。

怎么记管道过滤器像流水线,数据一站一站往下流。“提高性能”“适合交互式应用”都是错的。

仓库风格示意图

仓库风格

以中央数据为中心

其他构件都对中央数据结构读写。包括数据库系统、黑板系统、超文本系统。

易错优点:多方法求解、可更改可维护、可复用的知识源、容错健壮;缺点:测试困难、效率低;编译器不属于仓库风格

怎么记仓库风格测试困难,因为执行顺序不确定、结果难再现。数据库、黑板、超文本都属于它,编译器不属于。

真题 16上·32–33
C/S 与 B/S示意图

C/S 与 B/S

◇ 3/26 套 · 近年 3/12
分布式结构

三层 C/S:表示层、功能层、数据层,各层可灵活选平台和语言,并行开发。B/S:客户端只要浏览器,安装、修改和维护都只在服务器端。

易错“维护只在服务器端”是 B/S 的优点,不是 C/S

怎么记一道真题把 B/S 的优点混进了 C/S 的选项:系统的安装、修改和维护只在服务器端,这是 B/S。

真题 17上·31
MVC示意图

MVC

三个部件

模型:业务逻辑和数据;视图:只负责展示;控制器:接收请求,调用模型,选择视图。

易错优点:代码重用、开发效率和可维护性高;不能提高运行效率

怎么记MVC 把系统分成模型、视图和控制器。它的好处是重用和可维护,运行效率并不会因此提高。

真题 19下·32

自测 · 5 题

先在心里说出答案,再点开核对。

  1. 仓库风格最主要的缺点
  2. 哪个不属于仓库风格?
    数据库系统超文本系统黑板系统编译器
  3. 管道-过滤器风格适合交互式应用吗?
  4. 事件驱动风格又叫什么?
  5. MVC 能提高系统的运行效率吗?
真题2017上 第31题
以下关于 C/S(客户机/服务器)体系结构的优点的叙述中,不正确的是(31)。
A. 允许合理地划分三层的功能,使之在逻辑上保持相对独立性
B. 允许各层灵活地选用平台和软件
C. 各层可以选择不同的开发语言进行并行开发
D. 系统安装、修改和维护均只在服务器端进行
软考中级 · 软件设计师 · 两周冲刺 · D1 死记硬背知识点(内容与像素课同源,已核对教材与真题)