知识卡片

运行期质量属性与开发期质量属性的区分

普通读书笔记卡

内容

架构不仅要为”上游”的需求服务,还要为”下游”的开发人员服务——这条原则背后的机制是:质量属性可以按”谁最关心它”分成两类。性能是软件运行期质量属性,最关心它的是客户和用户(他们在使用系统时直接感受到快慢);而可扩展性是软件开发期质量属性,最关心它的其实是项目开发人员和后续负责升级维护的开发人员——用户使用系统时几乎感知不到”这段代码好不好扩展”,但开发人员在新增功能或修复问题时,代码是否易扩展直接决定了工作是顺畅还是痛苦。推及开去,并不是所有需求都来自用户:可扩展性、可重用性、可移植性、易理解性、易测试性这类非功能需求,更多考虑的是对开发人员的影响,这类”软件开发期质量属性”深刻影响着开发人员的日常工作体验。这个区分的实用价值在于:架构师在权衡质量属性优先级时,不能只用”用户会不会感知到”作为唯一标准去筛选和取舍——一个只优化运行期质量属性、完全不管开发期质量属性的架构,短期内可能让用户满意,但会持续消耗开发团队的效率,长期看同样会拖累产品的迭代速度和质量,最终仍然反噬到用户体验。

参考来源

- 位置:《软件架构设计:程序员向架构师转型必备》第3章《理解架构设计视图》"3.1.3 为开发人员而设计"节(源文件:_epub-src/OEBPS/text00006.html) - 结论依据:原文对比"性能是软件运行期质量属性,最关心性能的人其实是客户;但可扩展性是软件开发期质量属性,项目开发人员和负责升级维护的开发人员最关心",并指出"软件的可扩展性、可重用性、可移植性、易理解性和易测试性等非功能需求更多地考虑对开发人员的影响",直接支撑本卡片结论。 - 原始内容:性能是软件运行期质量属性,最关心性能的人其实是客户;但可扩展性是软件开发期质量属性,项目开发人员和负责升级维护的开发人员最关心。