知识卡片

为用户而设计:功能与质量属性并重

普通读书笔记卡

内容

用户需要的从来不只是功能,还有质量——这两者对架构的要求是相互独立又都不可或缺的两个维度。功能层面,用户所需的功能和系统本身的结构一定是相互影响的:削铅笔这个”功能”如果是小学生用,转笔刀最合适(方便易用一转即可);如果是美术师用来画素描,就需要专用刀片(能削出满足不同绘画要求的形状各异的笔尖)——同一个大类需求,具体功能诉求不同,适配的”结构”也应不同,这正是软件架构师必须为用户而设计的原因:架构必须和所要提供的功能相适应,不能脱离真实使用场景空谈通用性。质量层面,性能、易用性、可伸缩性、持续可用性、鲁棒性等软件质量属性虽然不像功能那样直接帮用户达成目标,但绝非可有可无——一个”交易查询”功能哪怕完全实现了,如果动辄要等几分钟,用户依然不会认为这是一个合格的系统。这条逻辑说明”满足需求”这件事本身是有维度的:只做到”功能上能用”是不够的,必须同时做到”质量上可接受”,architecture师若只盯着功能清单打勾、忽视质量属性,做出来的系统在用户眼里依然是不合格的产品。

参考来源

- 位置:《软件架构设计:程序员向架构师转型必备》第3章《理解架构设计视图》"3.1.1 为用户而设计"节(源文件:_epub-src/OEBPS/text00006.html) - 结论依据:原文用"转笔刀 vs 专用刀片"的类比说明功能诉求不同则适配结构不同,并用"交易查询功能耗时几分钟"的反例说明质量属性差同样会导致用户不接受,直接支撑本卡片对"功能与质量并重"的结论。 - 原始内容:因为功能不尽相同,所以"转笔刀"的结构和"专用刀片"的结构也不一样……你提供了用户要求的"交易查询"功能,但这一功能动辄就需要花上几分钟,用户能接受吗?当然不能接受。