【系统架构设计师-综合题(3)】软件工程答案与解析

【系统架构设计师-综合题(3)】软件工程答案与解析 文章目录一、开发模型与信息系统开发方法1241718192032二、需求工程与结构化分析39三、软件设计耦合与设计活动162122四、面向对象设计原则OOD2627五、设计模式2334六、UML 与面向对象分析10111213242535七、软件测试与调试567833八、系统演进、切换与维护14153031九、逆向工程2829补充常见软件开发反模式速记一、开发模型与信息系统开发方法题号1, 2, 4, 17, 18, 19, 20, 32二、需求工程与结构化分析题号3, 9三、软件设计耦合与设计活动题号16, 21, 22四、面向对象设计原则OOD题号26, 27五、设计模式题号23, 34六、UML 与面向对象分析题号10, 11, 12, 13, 24, 25, 35七、软件测试与调试题号5, 6, 7, 8, 33八、系统演进、切换与维护题号14, 15, 30, 31九、逆向工程题号28, 29一、开发模型与信息系统开发方法1知识点软件工程 开发模型 构件组装模型答案B解析构件组装模型强调“先设计组装方案再准备/获取构件并形成构件库然后进行系统组装最后测试发布”。因此一般开发过程可概括为设计构件组装⑤在需求明确后进行体系结构与组装结构设计明确构件职责与接口关系建立构件库②开发、复用或采购构件并纳入构件库形成可检索与可复用的构件资产构建应用软件③按组装结构把构件集成到应用中完成系统搭建与集成实现测试与发布①对组装后的系统进行集成测试/系统测试通过验收后发布构件的修改与维护④属于系统运行后的维护阶段活动不属于“开发过程的一般顺序”中的主流程步骤因此不应插入到 ⑤②③① 的主流程中。对应选项 B。2知识点软件工程 信息系统开发方法 敏捷开发答案C解析敏捷的核心思想强调“适应变化、迭代增量、以人为本”而不是强调流程的刚性与强可预测性。①“适应型而非可预测型”符合敏捷强调对变化的快速响应②“迭代增量式开发”是敏捷常见交付方式③“以人为本而非以过程为本”符合敏捷价值观个体与互动高于流程与工具④“强调以过程为本”与敏捷价值观相反⑤“强调可预测性”更贴近计划驱动/预测型方法的目标不是敏捷核心诉求因此不属于敏捷核心思想的是 ④ 和 ⑤对应选项 C。4知识点软件工程 其它 净室软件工程答案C解析净室软件工程Cleanroom强调“先保证正确再用统计手段度量可靠性”其核心在于通过形式化/半形式化的方法对软件进行正确性论证与验证尽量在进入测试之前就把缺陷消除到接近零的水平。常见的净室软件工程技术要点包括正确性验证以规约为依据通过证明、推理或严谨的验证活动保证设计/实现满足规约这是净室的核心思想统计控制下的增量式开发用受控的增量迭代来降低风险、便于度量与改进但其作用是过程组织方式不是核心基于函数的规范和设计、盒结构黑盒/状态盒/明盒是实现正确性验证的工程手段与设计方法统计测试和软件认证用于基于使用剖面Usage Profile的可靠性评估与发布认证属于度量与认证阶段因此净室软件工程的核心是正确性验证选 C。17知识点软件工程 信息系统开发方法 统一过程UP / RUP答案A解析统一过程Unified Process把一个项目划分为四个阶段每一轮遍历四阶段可形成一代产品/一代软件标准表述为阶段常见名称要点初始初启Inception明确产品愿景与业务模型界定系统范围细化精化Elaboration确定系统架构制定工作计划与资源要求构造Construction完成剩余构件与功能集成产品并做详细测试移交Transition确保对最终用户可用β 测试形成发布版本选项 B、C 是经典瀑布式活动划分D 中“初始分析”等表述不规范。故选A初始、细化、构造和移交。18知识点软件工程 信息系统开发方法 RUP 核心工作流答案B解析RUP 的6 个核心过程工作流业务建模、需求、分析与设计、实现、测试、部署。3 个核心支持工作流配置与变更管理、项目管理、环境。题干问“不属于核心过程工作流的”项目管理属于支持工作流因此选 B。易错点勿把“商业建模/业务建模”当成支持工作流——它属于 6 个核心过程工作流之一。19知识点软件工程 开发模型 基于构件的软件工程CBSE答案D解析用于 CBSE 的构件通常强调可组装性通过公开接口交互、可部署性二进制交付、在构件平台上独立运行、文档化便于选型与使用、独立性可独立组装部署依赖须显式声明、标准化符合统一构件模型等。构件恰恰应支持在接口契约下的替换与升级“不可替代”与复用、演进的初衷相反因此不是CBSE 构件应具备的特征选 D。20知识点软件工程 开发模型 螺旋模型答案D解析螺旋模型在快速原型基础上扩展将多轮迭代组织为螺旋式推进每一圈每个阶段通常包含四步目标设定本阶段需求分析确定目标、过程与产品约束制定详细管理计划风险分析识别备选方案风险制定规避措施开发和有效性验证按风险结论选用开发模型建造原型/产品并验证评审评估是否进入下一圈若继续制订下一阶段计划每迭代一圈螺旋外扩产出更接近目标的系统版本否则可能提前终止。选项 D 与教材表述一致。32知识点软件工程 信息系统开发方法 面向服务SO答案B解析面向服务的方法通常给出三层抽象自底向上操作Operation最底层表示单一逻辑工作单元的事务类似 OO 中的方法如对持久数据的读/写/改服务Service中间层对若干操作的逻辑分组业务流程Business Process最高层为达成业务目标而编排服务的长期活动集合题干“三个主要抽象级别”“最低层操作 单个逻辑单元”与上述 SO 分层一致选面向服务法B。对照记忆结构化方法强调 SA/SD/SP 与自顶向下模块化面向对象以对象/类为中心原型法强调快速迭代澄清需求。二、需求工程与结构化分析3知识点软件工程 需求工程 需求变更管理答案B解析需求变更管理通常遵循“提出—澄清—评估—决策—实施—验证/发布”的链路。题干强调的是把“变更建议”经过充分分析后形成“明确的需求变更提议”本质上是从“模糊建议/问题”到“可评审、可评估、可执行的变更描述”的转化步骤。A 识别出问题属于变更的来源发现阶段只是提出线索还没有形成明确的变更提议B 问题分析和变更描述对建议进行深入分析澄清问题边界、目标、影响范围与期望结果并把它写成可理解、可验证的变更描述这是把建议转为明确提议的关键步骤C 变更分析和成本计算在变更提议已明确后进一步做影响分析与成本/进度评估为决策提供依据D 变更实现在审批通过后执行落地不负责把建议转化为提议因此选 B。9知识点软件工程 需求工程 结构化分析SA 数据字典答案C解析结构化分析常用三类模型表达系统数据模型常用实体-联系图E-R 图表达实体、关系、属性功能模型常用数据流图DFD表达数据输入、处理、输出的流动过程行为模型常用状态转换图表达状态及状态变化事件这三类模型里贯穿全局、用来统一定义数据项/数据结构/数据流含义的“核心”是数据字典。数据字典把模型中出现的数据对象与控制信息做精确定义保证分析与设计阶段对“数据含义”理解一致因此选 C。三、软件设计耦合与设计活动16知识点软件工程 软件设计 模块耦合度答案D解析模块间耦合按从弱到强从低到高的常见排序如下与多数教材、教辅一致非直接耦合模块之间无直接关系联系完全由主模块的控制与调用实现数据耦合通过参数表传递简单数据项标记耦合通过参数表传递记录/复杂数据结构控制耦合所传信息中含有用于控制接收方内部逻辑的成分本题“第四位”外部耦合多模块访问同一全局简单变量非经参数传递公共耦合多模块访问同一公共数据环境全局数据结构、共享通信区、公共内存区等内容耦合最强如直接访问他模块内部数据、非正常入口转入他模块、程序代码重叠、一模块多入口等因此从低到高第 4 位是控制耦合选 D。速记非数标控外公内非直接→数据→标记→控制→外部→公共→内容。21知识点软件工程 软件设计 设计活动划分答案B解析软件设计常归纳为四类相互关联的活动与结构化/经典教材体系一致活动含义概要数据设计将分析模型转化为数据结构定义利于模块划分、降低过程复杂性体系结构/结构设计定义系统主要部件及其关系接口设计含人机界面软件内部、软件与 OS、软件与用户之间的交互方式过程设计把结构部件落实为可实现过程各部件内算法与内部数据结构及流程图/伪代码等表达题干已给出“软件结构设计、人机界面设计”第一空为数据设计选 B。易错用例设计偏需求/分析侧不应填于此。22知识点软件工程 软件设计 设计活动划分答案D解析四类设计活动为数据设计、结构设计、接口/人机界面设计、过程设计。前三项已在题干预设第四项为过程设计亦称构件级设计等表述选 D。易错接口设计已在题干以“人机界面设计”体现勿再选 A。四、面向对象设计原则OOD26知识点系统设计 / 软件工程 面向对象设计 OOD 原则答案A解析开闭原则对扩展开放、对修改关闭——在不改动既有代码的前提下通过扩展如新增子类、新实现为系统增加新行为契合题干“扩展已有系统并为之提供新的行为”。故第 26 空选开闭。延展常见 OOD 原则速记原则要点开闭扩展开放、修改关闭里氏替换子类可替换父类且不破坏多态语义依赖倒置高层与底层均依赖抽象面向接口编程而非面向实现接口隔离不强迫客户依赖其不用的方法最小知识迪米特法则尽量减少对象间交互降低耦合27知识点系统设计 / 软件工程 面向对象设计 OOD 原则答案B解析依赖倒置原则强调高层模块不应依赖低层模块的具体实现二者应依赖抽象接口/抽象类编程时应针对接口抽象编程而不是针对具体实现编程。题干表述与此完全一致选B。易错接口隔离强调“接口拆分、不强迫依赖无用方法”与“对实现编程”的对比不是同一侧重点。五、设计模式23知识点软件工程 设计模式 GoF 分类答案C解析创建型模式描述怎样创建对象把对象的创建与使用分离抽象“实例化与组合”过程单例、原型、工厂方法、抽象工厂、构建器等结构型模式怎样组合类/对象形成更大结构代理、适配器、桥接、装饰、外观、享元、组合等行为型模式对象怎样协作完成职责模板方法、策略、命令、职责链、状态、观察者等题干强调“对实例化过程的抽象”“创建、组合”的封装属创建型模式选 C。34知识点软件工程 设计模式 GoF 分类答案C解析创建型5单例、原型、工厂方法、抽象工厂、构建器等——关注对象创建与使用解耦结构型7代理、适配器、桥接、装饰、外观、享元、组合等——关注组合成更大结构行为型11模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器等——关注协作与职责分配题干要创建型只有抽象工厂符合选 C。六、UML 与面向对象分析10知识点软件工程 面向对象基础 UML 基本概念答案B解析UML 的建模元素事物通常分为结构事物、行为事物、分组事物、注释事物。其中行为事物是 UML 模型的动态部分用来描述系统在时间与空间上的动作与行为因此选 B。11知识点软件工程 面向对象基础 UML 行为事物答案A解析UML 的主要行为事物通常归纳为两类交互对象之间为达成目标而进行的一系列消息交换与状态机对象在不同状态之间的转换以及触发事件因此选 A。12知识点软件工程 面向对象基础 分析类边界类/控制类/实体类答案D解析面向对象分析中常把分析类分为三类实体类保存业务数据与业务规则通常可持久化例如学员、课程、订单边界类系统与外部交互的“边界”例如页面、窗口、API 接口、适配器控制类协调用例流程把边界类的输入组织起来驱动实体类完成业务题目中的“学员类”“课程类”主要用于表达与保存业务对象信息属于实体类因此选 D。13知识点软件工程 面向对象基础 分析类边界类/控制类/实体类答案B解析“窗口”位于系统与用户交互的交接处用来接收输入、展示输出属于边界类因此选 B。24知识点软件工程 UML 用例图关系答案C解析用例图中的关系需区分主体用例—用例常见include包含、extend扩展有时用例之间还可泛化参与者—用例关联参与者—参与者可存在泛化继承特殊参与者继承一般参与者题干问“参与者之间”选继承/泛化表述对应选项 C包含、扩展多用于用例之间勿与参与者关系混淆。25知识点软件工程 UML 人机界面建模答案A解析在界面设计建模的常见约定中类图描述界面元素如窗体、控件及其静态结构与关系顺序图描述用户与界面、界面之间的交互跳转与时间次序体现界面流转故“界面元素 跳转关系”分别对应类图与顺序图选 A。35知识点软件工程 UML 2 图分类答案B解析部署图描述运行期物理处理节点的配置及驻留其上的构件等给出部署视图制品图描述系统在物理介质上的制品文件、数据库、可执行体等“物理比特”集合及其关系体现物理实现结构并常说明制品实现了哪些类/构件常与部署图配合使用用例图、状态图不描述物理文件级结构部署图题干已作为“一起使用”的另一类图出现不能重复选 D。故选制品图B。附录UML 2 十四种图速览类、对象、构件、组合结构、用例顺序、通信、定时、交互概览状态、活动部署、制品包图等。题目考查物理结构 与部署图联用对应制品图。七、软件测试与调试5知识点软件工程 软件测试 静态测试答案C解析静态测试的本质特征是“不运行程序”通过人工检查或工具静态分析来发现缺陷常见形式包括桌前检查Desk Check、走查Walkthrough、代码审查/评审Review/Inspection等。选项辨析A 边界值分析典型黑盒动态测试方法需要执行程序并用边界输入验证B 错误推测法常用于动态测试中的经验型用例设计方法依赖运行验证结果C 桌前检查人工逐行/逐段检查代码或文档不运行程序属于静态测试D 逻辑覆盖测试白盒动态测试需要执行代码并统计覆盖率因此选 C。6知识点软件工程 软件测试 自动化测试脚本答案B解析“通过录制用户操作直接生成的脚本”对应的是录制回放Record Playback产生的线性脚本脚本把一次测试过程中的点击、输入、校验等操作按时间顺序串起来执行结构简单、维护成本相对较高界面变动就容易失效。其他选项不符合“录制直接生成”的特点结构化脚本通常引入分支、循环、函数/过程等结构化设计思想需要人为抽象与重构共享脚本强调可被多个用例复用或被其他脚本调用通常来自模块化/函数化抽取数据驱动脚本把测试数据与脚本逻辑分离通过多组数据驱动同一套测试流程因此选 B。7知识点软件工程 软件测试 白盒测试覆盖准则答案D解析白盒测试覆盖准则通常从弱到强为语句覆盖 → 判定/分支覆盖 → 条件覆盖/判定-条件覆盖/条件组合覆盖 → 路径覆盖概念上最强。路径覆盖要求“程序中每条可执行路径至少执行一次”覆盖范围包含各判定结果组合因此测试强度最高。实际工程中由于路径数可能爆炸尤其存在循环时常用可行的覆盖准则如分支覆盖/条件覆盖替代“完整路径覆盖”但题目问“最高”应选路径覆盖。8知识点软件工程 软件测试 Web 测试与其它测试答案B解析AWeb 系统测试与其它系统测试在本质上测试内容并非“完全不同”只是测试重点不同Web 常强调链接、兼容性、表单、界面等但测试目标仍是功能、性能、安全等B链接测试的一个重要目标是避免“孤立页面”没有任何入口链接可达的页面保证站点结构完整可达因此正确C回归测试的目的在于变更后验证受影响部分及相关功能未被破坏不限定在集成测试阶段“增量组装”是集成策略之一但不是回归测试的定义或特征DAB 测试用于对比不同版本在用户行为指标上的效果评估金丝雀发布是灰度发布策略二者概念不同因此选 B。33知识点软件工程 软件测试 测试与调试区别答案A解析测试与调试的差别可概括为维度测试调试目的发现错误定位并修正错误修改程序先后一般先测试、后调试先发现再追查修复在测试等环节发现问题后的后续活动条件与过程多在已知前提下按预定用例与流程执行结果可预期、过程与进度可事先规划往往从不确定的现场出发路径与耗时难以事先完全预计选项辨析A调试在测试之后或紧随缺陷发现二者目的、方法与思路不同——正确B把“已知/未知、可预知”说成调试与测试的关系说反了通常测试更可计划、调试更探索性C找出错误主要是测试的目标调试更强调定位原因与修复D测试过程与周期可以规划与描述故选 A。八、系统演进、切换与维护14知识点软件工程 系统运行与维护 遗留系统演化策略答案C解析遗留系统常见演化策略可以概括为四类淘汰完全替换旧系统旧系统价值低或已不适配业务继承新系统完全兼容旧系统模型并行运行一段时间后逐步切换改造保留旧系统价值与基础在原系统上增强功能、改造数据模型或架构集成面向“信息孤岛”通过集成把多个系统打通协同题干强调“技术含量较高、生命力强、业务价值高且基本能满足运作与决策支持”说明旧系统本身仍然值得保留并增强适合采用改造策略因此选 C。15知识点软件工程 系统运行与维护 遗留系统演化策略答案B解析题干的关键特征是新系统需要完全兼容旧系统的功能模型与数据模型为保证连续性新老系统并行运行一段时间再逐步切换这正是继承策略的典型做法因此选 B。30知识点软件工程 系统切换 / 新旧系统转换答案A解析常见转换方式对比方式含义风险成本/复杂度直接转换试运行无误后立即停用旧系统、启用新系统高低并行转换一段时期内新旧并行新系统验证稳定后再切换低高双轨运行分段阶段转换直接转换与并行转换等组合的折中中等中等分块转换多数教材中非标准分类常作干扰项题干要求“风险降到最低”应选并行转换A。31知识点软件工程 可维护性 / 软件维护类型答案A解析软件交付运行后的维护常分为四类题干强调发现与纠正错误/缺陷类型典型含义正确性维护识别、纠正软件中的错误与缺陷测试无法穷尽所有错误上线后仍可能暴露适应性维护因外部环境、数据环境等变化而修改以保持可用完善性维护在运行中按新需求扩充功能、改善性能等预防性维护为应对未来软硬件变化主动增加预防性能力通用化改造等降低将来失效风险“维护”一词泛指运行期各类改动专门针对缺陷纠错的是正确性维护选 A。九、逆向工程28知识点软件工程 逆向工程 抽象级别答案C解析逆向工程常见四个抽象级别由低到高、由实现到业务含义级别含义概要典型信息/产物实现级贴近源码与实现细节抽象语法树、符号表、过程的设计表示等结构级分量间依赖与组织调用图、结构图、程序与数据结构等功能级程序段功能及段间关系数据流/控制流模型等领域级程序实体与业务/应用领域概念的对应如 ER 模型等题干强调“程序分量或实体与应用领域概念的对应”属领域级选 C。29知识点软件工程 逆向工程 恢复方法答案D解析不同恢复方法大致对应的抽象层次与多数教辅一致用户指导下的搜索与变换多用于导出实现级、结构级变换式方法多用于实现级、结构级、功能级铅板恢复法教材亦作样板/套路恢复多用于实现级、结构级基于领域知识的方法借助领域语义与知识用于导出功能级与领域级信息题干问“导出功能级和领域级”选基于领域知识的方法对应 D。补充常见软件开发反模式速记过早优化没数据就先上复杂方案先可观测再定位瓶颈再优化单车车库小事争论太久小事默认规则大事时间盒决策分析瘫痪只讨论不落地用最小实验/灰度拿真实反馈上帝类一个类什么都管按职责/变化原因拆分并提升可测试性新增类恐惧症不敢拆导致大类堆分支用高内聚低耦合衡量而非类数量内部平台效应重造基础设施轮子优先复用成熟组件必要自研要有退出机制魔法数/字符串字面量散落用常量/枚举/配置表达语义并按领域归类数字管理指标绑架决策用指标辅助决策主指标配约束指标防止“刷指标”幽灵类空壳转发增加层级只保留真正增加价值的抽象约束/屏蔽变化/转换/边界