【2025下半年系统架构设计师案例分析】电动车充电管理系统(质量属性与AES)

文章目录

题目背景

某新能源充电管理系统由"充电管理平台"与"微服务架构"构成,面向用户提供供电充电服务,并对接第三方支付、导航与电力调度等能力。系统需在海量设备接入、复杂充电场景(高峰/恶劣天气/弱网与断网)以及多终端适配下保持稳定可用与可演进。

在需求分析与架构设计阶段,需要将给定约束落到"质量属性场景/质量属性"上,并完成安全与加密相关的实现说明。


题目 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) 的关键点不是"系统能不能继续提供服务"(那更偏可用性/容错),而是:

  1. 在网络中断这种异常条件下,仍要把"用户操作结果/记录"可靠地保存下来这样保存的记录可以作为数据完整性(Integrity)与审计/追溯依据(Audit/Non-repudiation 的支撑)
  2. 换句话说,它强调的是:用户操作不能因为网络故障而丢失或变得不可核查 。这和安全性的保证数据在异常/攻击诱导条件下仍保持可信、可追责是同一类目标。
  3. 被归到安全性,通常就是把它理解为操作记录的完整性与可审计性(必要时也会配合加密/防篡改存储)。

【问题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)会在加密时附带校验信息,解密时校验不过就直接拒绝,从而既保证不被看懂(机密性),也能防篡改(完整性)。
相关推荐
剑飞的编程思维2 小时前
电商系统三类迭代方案评审重点
学习·系统架构·自动化·运维开发·学习方法
慧一居士4 小时前
Google的libphonenumber 号码检查归属地如何使用(java 实现)
系统架构
云蝠呼叫大模型联络中心7 小时前
金融行业大模型呼叫系统架构与API集成案例
人工智能·金融·系统架构·多智能体协同·voiceagent·云蝠智能·ai agent技术
郑州光合科技余经理9 小时前
海外O2O系统源码剖析:多语言、多货币架构设计与二次开发实践
java·开发语言·前端·小程序·系统架构·uni-app·php
arvin_xiaoting14 小时前
OpenClaw学习总结_I_核心架构_8:SessionPruning详解
前端·chrome·学习·系统架构·ai agent·openclaw·sessionpruning
云蝠呼叫大模型联络中心1 天前
医疗智能客服系统架构设计与云蝠VoiceAgent API集成实践
人工智能·系统架构·api·医疗·voiceagent·ai 客服选型·智能客服 2026
:mnong2 天前
企业资源管理ERP设计分析
系统架构
大迪deblog2 天前
系统架构设计-质量属性
系统架构·软件构建
arvin_xiaoting2 天前
OpenClaw学习总结_I_核心架构_9:Multi-Agent详解
网络·学习·架构·系统架构·ai agent·multi-agent·openclaw