知识卡片
目标-场景-决策表应用案例:网上书店高性能设计
内容
如何设计才能让网上书店系统达到高性能这个笼统目标?场景思维是关键——先明确网上书店系统会遇到哪些真实具体的场景,对”高性能”这个大目标最有实际意义,再针对每个具体场景设计对应的架构决策。书中示范了这个流程:先用场景卡收集对性能有意义的具体”情况”,让设计有明确的努力方向;再运用目标-场景-决策表,针对6个具体性能场景,逐一设计出对应的架构决策。这个流程能带来两类实实在在的产出:一是引入全新的设计决策,比如”HTML静态化”这条决策——如果不是先明确了某个”高并发访问下页面渲染开销大”这类具体场景,”要不要做HTML静态化”这个技术选项根本不会被主动提上议程;二是改进已有的设计成果,比如把”书目信息”和”图书详细信息”分开保存——这条决策直接反过来升级了[[鲁棒图的增量建模技巧]]案例里搜索功能鲁棒图的设计(”图书信息”实体对象被拆分成两个粒度不同的实体,前者结构专为快速检索而设计)。这个案例说明目标-场景-决策表不是一个只服务于”事后论证架构合理性”的工具,而是能实实在在反过来指导、修正之前已经做出的功能设计——功能设计(鲁棒图)和质量设计(目标-场景-决策表)不是两条彼此独立的流水线,而是会相互反馈、相互驱动对方演进的一对搭档,这正呼应了”左手功能、右手质量,两手都要硬”这条概念架构设计的核心原则。
参考来源
- 位置:《软件架构设计:程序员向架构师转型必备》第9章《概念架构设计》"9.4.4 目标—场景—决策表应用举例"节(源文件:_epub-src/OEBPS/text00012.html)
- 结论依据:原文说明"通过'目标—场景—决策表'既可以帮助我们引入新的设计(例如表中决策'HTML静态化'),也可以帮助我们改进了老设计(例如'书目信息和图书详细信息分开保存',这样前述鲁棒图就可升级为图9-24了)",直接支撑本卡片结论。
- 原始内容:由此可见,通过"目标—场景—决策表"既可以帮助我们引入新的设计(例如表中决策"HTML静态化"),也可以帮助我们改进了老设计(例如"书目信息和图书详细信息分开保存",这样前述鲁棒图就可升级为图9-24了)。