文章目录
-
- 题目背景
- [题目 2.1.1(需求与质量属性约束)](#题目 2.1.1(需求与质量属性约束))
- [【问题1】: 质量属性场景6要素](#【问题1】: 质量属性场景6要素)
- 【问题2】:质量属性要素具体实例
- 【问题3】:质量属性
- 【问题4】
题目背景
某新能源充电管理系统由"充电管理平台"与"微服务架构"构成,面向用户提供供电充电服务,并对接第三方支付、导航与电力调度等能力。系统需在海量设备接入、复杂充电场景(高峰/恶劣天气/弱网与断网)以及多终端适配下保持稳定可用与可演进。
在需求分析与架构设计阶段,需要将给定约束落到"质量属性场景/质量属性"上,并完成安全与加密相关的实现说明。
题目 2.1.1(需求与质量属性约束)
在需求分析与架构设计阶段,给出系统需求与质量属性描述如下:
(a) 用户发起充电请求后,系统需在3秒内响应并分配可用充电口;
(b) 当充电站点周边200米范围内已超过80%的充电口被占用时,系统需自动限制新增设备接入,并确保CPU使用率不超过40%(从而不影响系统处理当前任务);
( c ) 集成第三方支付平台的新API需在3个工作日内完成;
( i ) 支持运维人员在2小时内快速替换故障模块,无需新人员介入;
(m) 集成电力调度平台的新API需在5个工作日内完成联调与测试;
(d) 单点故障发生时间不超过5分钟;
(n) 手机无网络时,系统进入安全模式,自动保存充电记录并在网络恢复后同步至云端,同时显示上次充电状态。
(e) 系统需模拟雷电、下雨、冰雹等恶劣天气下的充电场景,测试 设备防水、防雷及稳定性;
(f) 支持诸预调用测试接口;
(g) 用户敏感信息采用AES-256加密存储与传输;
(l) 站点网络中断时能保存用户操作记录;
(h) 系统需支持多语言与多模式,方便残疾人使用;
(j) 用户首次使用系统时,需在30秒内完成核心功能引导;
(k) 系统需适配不同分辨率设备(如手机、平板、车载屏幕);
【问题1】: 质量属性场景6要素
质量属性场景6要素有哪些,作用是什么。(6分)
答案:
- 刺激源:某个实体触发系统发生变化(或触发测试/观测)。
- 刺激:在特定刺激源条件下,系统需要应对的触发事件(例如"新增API接入""故障发生")。
- 环境:触发发生时系统所处的运行或外部条件(例如高负载、弱网、恶劣天气等)。
- 制品:参与该质量属性的系统构件/模块/组件。
- 响应:系统在收到刺激后表现出来的行为(例如性能下降、可用性恢复、数据保持等)。
- 响应度量:对响应的量化指标(例如"3秒内完成""CPU不超过40%""恢复时间不超过5分钟"等)。
作用:
质量属性场景的"6要素"用于精确描述软件系统质量属性,这六个要素将一个模糊的质量需求转变为一个具体的场景。便于架构师、开发人员、测试人员和利益相关者进行沟通和架构设计决策。
具体实例参考:
| 需求项 | 刺激源 | 刺激 | 环境 | 制品(涉及构件) | 响应 | 响应度量(量化/指标) |
|---|---|---|---|---|---|---|
| (a) 用户发起充电请求 | 用户 | 充电请求发起 | 运行常规场景(未描述) | 充电请求处理/端口分配模块 | 在请求后分配可用充电口并响应 | 3秒内响应并分配 |
| (b) 200米内占用>80% | 充电口占用状态(由站点设备/计量产生) | 占用率达到阈值导致"限制接入条件成立" | 站点周边高占用、高负载趋势 | 设备接入/调度/接入策略模块、资源治理模块 | 自动限制新增设备接入,避免影响当前任务 | CPU使用率不超过40% |
| © 支付新API 3个工作日完成 | 业务方/架构目标(集成需求提出) | "集成第三方支付新API"事件 | 实施期(未描述外部条件) | 支付集成服务/接口适配与联调模块 | 完成新API集成并交付 | 3个工作日内完成 |
| (d) 单点故障≤5分钟恢复 | 系统自身故障源 | 单点故障发生 | 异常运行条件 | 故障检测/故障恢复/降级切换模块 | 快速恢复可用(恢复/切换) | 单点故障发生时间不超过5分钟 |
| (e) 模拟雷电/雨/冰雹并测试防水防雷稳定性 | 外部天气环境(或测试环境) | 恶劣天气触发(用于测试/验证) | 恶劣天气场景 | 设备保护能力/测试验证流程相关模块 | 进行防水/防雷/稳定性验证(或系统需在此环境下表现稳定) | 未给出通过标准/指标(题干只说"测试并验证") |
| (f) 支持预调用测试接口 | 测试方/测试工具 | 调用测试接口 | 测试环境(未描述具体条件) | 测试接口/运维/测试网关模块 | 对外提供测试接口能力 | 未给出时延、成功率等指标 |
| (g) 敏感信息 AES-256 加密存储与传输 | 需要处理敏感数据的业务 | 敏感数据产生/被访问 | 正常运行/通信环境(未描述具体威胁模型) | 加密/密钥管理/安全存储与传输链路 | 对敏感信息进行加密存储与传输 | AES-256(算法强度可视为"安全强度指标",但题干未给性能/合规指标) |
| (h) 多语言与多模式,方便残疾人使用 | 需要无障碍的用户群 | 无障碍使用诉求触发 | 使用情境(未描述具体设备/网络) | 前端UI/交互与内容多语言/多模式模块 | 提供多语言与无障碍交互模式 | 未给出可量化可用性/覆盖率等指标 |
| (i) 运维人员2小时内替换故障模块 | 运维人员(操作主体) | 故障模块需要替换 | 运维处置场景(未描述现场条件) | 运维更换流程、模块接口、可替换设计 | 无需新人员完成替换与恢复 | 2小时内完成替换(这是明确指标) |
| (j) 首次使用30秒完成核心功能引导 | 新用户 | 首次使用/引导触发 | 正常使用场景(未描述网络) | 引导/启动引擎/核心功能入口模块 | 完成核心功能引导 | 30秒内完成 |
| (k) 适配不同分辨率设备 | 终端用户 | 终端设备类型变化 | 设备分辨率差异 | 前端适配/渲染与适配组件 | UI适配不同分辨率设备 | 未给出"适配效果"量化标准(如兼容比例、指标) |
| (l) 网络中断时保存用户操作记录 | 网络故障源(外部网络) | 网络中断事件 | 站点网络中断 | 本地存储/离线缓存/同步组件 | 保存用户操作记录(待恢复后处理) | 未给出保存成功率/丢失率/耗时等指标 |
| (m) 电力调度新API 5个工作日联调测试 | 业务方/实施团队 | 集成并联调测试新API | 实施期(未描述外部条件) | 电力调度集成服务、联调测试模块 | 完成联调与测试交付 | 5个工作日内完成 |
| (n) 无网进入安全模式:保存并同步、显示上次状态 | 手机用户 | 无网络触发 + 网络恢复触发(两段式) | 手机无网络;网络恢复后的弱/良好状态(题干未量化) | 安全模式模块、本地记录、离线同步、状态展示模块 | 无网保存记录;恢复后同步云端;展示上次充电状态 | 未给出"同步多久完成/丢失多少"等时间或质量指标 |
【问题2】:质量属性要素具体实例
结合上题说明"集成第三方支付平台的新API"与"单点故障恢复时间不超过5分钟"分别是质量属性场景6要素的什么。(6分)
答案:
- "集成第三方支付平台的新API":对应"刺激";
- "单点故障恢复时间不超过5分钟":对应"响应度量"。
【问题3】:质量属性
给出题干描述的(a)~(n)中对应的质量属性。(7分)
答案:
- 性能: (a)、(b)
- 可修改性: ©、(i)、(m)
- 可用性: (d)、(n)
- 易用性: (h)、(j)、(k)
- 安全性: (g)、(l)
- 可测试性: (e)、(f)
解释:
性能(Performance):衡量的是:在繁忙场景下,系统能否维持吞吐/处理能力,以及资源占用(CPU)是否受控。 具体看两点:
- (b)触发条件是"周边200米范围内已超过80%的充电口被占用",这会导致系统接入/调度压力增大(负载上升)。
- 约束的"响应度量"是"CPU使用率不超过40%",并且"限制新增设备接入以不影响系统处理当前任务"。
因为 (l) 的关键点不是"系统能不能继续提供服务"(那更偏可用性/容错),而是:
- 在网络中断这种异常条件下,仍要把"用户操作结果/记录"可靠地保存下来这样保存的记录可以作为数据完整性(Integrity)与审计/追溯依据(Audit/Non-repudiation 的支撑)
- 换句话说,它强调的是:用户操作不能因为网络故障而丢失或变得不可核查 。这和安全性的保证数据在异常/攻击诱导条件下仍保持可信、可追责是同一类目标。
- 被归到安全性,通常就是把它理解为操作记录的完整性与可审计性(必要时也会配合加密/防篡改存储)。
【问题4】
AES-256算法固定16字节,用户敏感数据可能超过16字节,应如何处理。(6分)
答案(实现思路):
- AES的分组加密块大小为16字节(128位),因此当明文长度超过16字节时,需要将用户敏感数据按16字节分块处理;
- 对最后一块不足16字节的情况,采用标准填充(例如 PKCS#7)补齐到16字节;
- 按选定的工作模式(如 CBC/CTR/GCM)逐块加密,并为需要的模式准备相应参数(例如 IV/nonce);
- 若需要同时满足机密性与完整性(更符合安全要求),建议使用 AEAD 模式(如 AES-GCM)以避免"加密但不可检测篡改"的风险。
关键点:
把"超过16字节"的问题归结为"分组密码的分块与填充/工作模式"问题,而不是改变AES的分组长度。
通俗解释:
- AES一次"只能处理16字节一口"的数据:明文如果更长,就把它切成多段,每段都用 AES 加密;
- 切到最后一段如果不满16字节,就用 PKCS#7 这类"补齐规则"补到16字节;解密时再按规则把补的内容去掉,原文就还原了;
- CBC/CTR/GCM 这些"工作模式"决定了这些16字节块怎么串起来加密;不同模式需要不同的参数(比如 IV 或 nonce);
- 只做"加密"可能出现"密文被人偷偷改了,但系统不一定立刻发现";AEAD(比如 AES-GCM)会在加密时附带校验信息,解密时校验不过就直接拒绝,从而既保证不被看懂(机密性),也能防篡改(完整性)。