一、场景
某公司拟开发一个电动车充电智能规划系统,其核心功能是根据用户当前电池电量状态,结合实时电价数据、充电站分布及用户行程需求,智能规划最经济高效的充电时间和地点。具体需求如下:
(a) 系统在收到用户充电查询请求后,必须在3秒内返回最优充电方案,即使在高峰期有10000名用户同时在线的情况下。
(b) 系统架构必须支持新增API,集成新API的开发工作量不超过5人天,且无需修改现有代码结构。
(c) 新用户应能在不查看帮助文档的情况下,在3分钟内完成个人信息设置并获取首次充电推荐方案,首次使用成功率应达到95%。
(d) 当移动应用在网速低于1Mbps的弱网络环境下运行时,系统应切换到安全模式,能够展示用户已保存的路线和上次同步的充电站基本信息。
(e) 系统应具备访问控制能力,确保用户只能访问自己的账户数据,管理员权限变更需要经过多因素认证和审核日志记录。
(f) 系统应对所有用户个人数据和位置信息进行加密存储和传输,其加密方法为AES-256。
(g) 充电费用计算模块应支持灵活配置,使运维人员能够在2小时内更新电价模型,而无需开发人员介入或系统重新部署。
(h) 系统地图路径计算和充电站筛选算法处理50公里范围内包含200个充电站的数据时,CPU使用率不应超过40%。
(i) 系统应提供测试接口,允许测试团队注入不同电池电量、充电站状态和电价数据,以验证充电方案推荐算法在各种场景下的正确性。
(j) 除计划维护时间外,系统应保持99.5%的时间可正常工作,且任何计划维护必须提前72小时通知用户。
(k) 系统应能够实时同步电动车电池状态数据,从车辆API获取数据到系统显示的延迟不超过5秒,确保充电规划基于最新电池电量状态计算。
(l) 系统应实现地理区域冗余,确保即使某一区域数据中心完全故障,全局服务中断时间不超过5分钟。
(m) 系统应提供多种状态的模拟环境,能够重现包含高峰期、恶劣天气、设备故障等真实充电场景。
(n) 系统应为视力、听力或行动不便的用户提供无障碍模式,符合相关无障碍标准。
二、问题
2.1、问题1
识别系统的质量属性需求是架构设计的重要步骤,请选择题干描述的需求(a)~(n)填入表1的(1)~(6)空白处,协助项目组识别电动车充电智能规划系统的质量属性。

2.2、问题2
质量属性场景是一种描述质量属性的方法。
(1)请用100字以内的文字简要回答质量属性场景包括的六个部分的名称。
(2)指出需求(b)中的"集成新API"和需求(l)中的"全局服务中断时间不超过5分钟"分别描述的是质量属性场景中的哪一个部分?
2.3、问题3
根据需求(f)的描述,该系统应使用AES-256加密方法保障高敏感数据。AES-256方法是以16字节的固定块大小处理数据的,但电动车充电智能规划系统中的用户个人信息、位置信息等敏感数据可能超过16字节的固定块大小,请用300字以内的文字简要说明,应如何处理超过该固定块大小的字节的数据?
三、解析
3.1、问题1
① 可用性 (Availability) ------ "不论发生什么,我都在"
口诀:不怕坏、能恢复、在线率
关键词:故障、恢复、冗余、99.9%、中断时间
匹配:(d) 弱网下切换安全模式(坏了能降级,属于容错)。(j) 99.5%的时间正常工作(这就是在线率)。(l) 故障后中断不超过5分钟(这是恢复能力)。
② 性能 (Performance) ------ "天下武功,唯快不破"
口诀:多少秒、多少人、吞吐量、资源占用
关键词:响应时间、并发、延迟、CPU使用率
匹配:(a) 3秒内返回、10000名用户(典型的速度和并发)。(h) CPU使用率不超过40%(资源效率)。(k) 延迟不超过5秒(速度)。
③ 可修改性 (Modifiability) ------ "拥抱变化"
口诀:改的快、不求人、不重启
关键词:新增、变更、配置、无需代码、解耦
匹配:(b) 支持新增API,无需修改现有代码(改动成本低)。(g) 灵活配置电价,无需开发介入(改配置不改代码)。
④ 安全性 (Security) ------ "闲人免进"
口诀:谁能进、防偷窥、留证据
关键词:认证、加密、授权、审计、日志
匹配:(e) 访问控制、多因素认证(门锁)。(f) AES-256加密(防偷窥)。
⑤ 可测试性 (Testability) ------ "方便找虫子"
口诀:能模拟、能注入、能观测
关键词:测试接口、注入数据、复现场景
匹配:(i) 提供测试接口、注入数据(方便QA干活)。(m) 模拟环境重现故障(方便复现Bug)。
⑥ 易用性 (Usability) ------ "傻瓜式操作"
口诀:一学就会、防呆设计、关怀特殊群体
关键词:帮助文档、完成时间、无障碍、界面
匹配:(c) 不看文档3分钟完成(上手快)。(n) 视力听力障碍支持(无障碍设计)。
3.2、问题2
核心思路:一个质量属性不是一个冷冰冰的词,它是一个完整的 刺激-反应过程。
通俗比喻,打游戏:
① 刺激源 (Source): 谁放了大招?(如:用户、黑客、管理员)
② 刺激 (Stimulus): 放了什么大招?(如:点击按钮、发起攻击、修改配置)
③ 制品 (Artifact): 谁被打中了?(如:系统核心、数据库、界面)
④ 环境 (Environment): 当时是什么情况?(如:正常运行中、高负载时、断网时)
⑤ 响应 (Response): 系统怎么应对的?(如:弹窗提示、拦截攻击、切换备用机)
⑥ 响应度量 (Response Measure): 应对得漂不漂亮?(如:3秒内搞定、0数据丢失)
需求(b)中的"集成新API"体现的是系统做了什么,是响应。
需求(l)中的"全局服务中断时间不超过5分钟"体现了系统应付的时效,是响应度量。
3.3、问题3
想象AES是一个只有16厘米长的模具。要用这个定长的模具对长实体来处理。
① 分块:既然数据很长,我们首先就是要把长数据切成一段一段的,每一段都是16厘米。
② 填充:切到最后一段如果不满16厘米,模具又必须是满16厘米的。就要往模具空处填一些填充物(实际有补0或者补特殊数字)。
③ 工作模式:分块和填充之后,我们就可以对每一块数据处理了。但是如果每一块都单独的处理,(ECB模式)。那么相同块处理出来的数据就会是一样的,容易暴露信息。所以需要将前一块的处理结果能影响下一块的处理结果。CBC模式就是把第一块的加密结果混进第二块的处理内容中,保证相同内容的块数据出来不同的加密结果。也可以使用CTR/GCM模式,产生一串随机的"密钥流",和明文异或处理,形成流加密,速度快还能并行处理。
四、答案
【问题1】
(1) (d) (j) (l)
(2) (a) (h) (k)
(3) (b) (g)
(4) (e) (f)
(5) (i) (m)
(6) (c) (n)
【问题2】
(1) 质量属性场景包括的六个部分名称是:刺激源、刺激、环境、制品、响应、响应度量。
(2) 需求 (b) 中的"集成新API":描述的是 响应 (Response) 部分。需求 (l) 中的"全局服务中断时间不超过5分钟":描述的是 响应度量 (Measurement) 部分。
【问题3】 为处理超过AES-256固定块大小(16字节)的数据,系统必须采用安全的工作模式(如CBC、CTR或GCM)而非直接分块加密,具体操作如下:选择如CBC模式时需结合随机初始化向量(IV)并应用PKCS#7等填充标准,使数据长度成为16字节的整数倍后再进行链式加密(前一块密文参与下一块运算);或选用CTR模式将计数器加密生成密钥流与明文异或,无需填充且支持并行处理;最优方案是采用GCM模式(基于CTR),在加密同时通过GMAC提供数据完整性验证,也无需填充。无论何种模式,必须使用强随机且不可预测的IV/Nonce(随密文传输),并配合严格的密钥管理,确保相同密钥下不重复使用IV,从而安全地加密任意长度的敏感数据,同时绝对避免使用不安全的ECB模式。