7.1 质量属性与取舍
软件质量不只是“没有 bug”。质量属性描述系统在现实环境中的表现:可靠性、可维护性、易用性、安全性、性能、可扩展性、可用性、可恢复性等。
真正困难的地方在于:这些属性会互相竞争。工程师的工作不是把所有属性都喊成最高优先级,而是把取舍说清楚。
正在加载交互实验...
正在加载概念检查...
质量属性要具体
“系统要稳定”不是可执行目标。更好的表达是:
- 支付发起接口月度成功率达到 99.95%。
- 95% 的搜索请求在 300ms 内返回前 20 条结果。
- 关键权限变更必须留下可审计日志。
- 单个服务故障时,用户资料只读页面仍可访问。
好的质量目标包含范围、指标、时间窗口和验证方式。否则团队只是在共享愿望,而不是共享工程目标。
正在加载概念检查...
取舍必须可见
质量属性经常互相拉扯:
- 更强安全校验可能增加用户操作成本。
- 更高性能可能增加缓存一致性风险。
- 更高可扩展性可能增加部署和观测复杂度。
- 更强可维护性可能需要短期放慢功能开发。
如果这些取舍没有被记录,未来的人只会看到“为什么这里这么复杂”,却看不到当时保护了什么风险。
场景决定优先级
同样是“登录系统”,银行、游戏活动、学校内部工具的质量重点不会一样。银行登录更重视安全、审计和可靠性;活动小游戏可能更重视体验和峰值性能;内部工具可能更重视可维护性和权限清晰。
成熟团队会把质量属性变成设计输入:
- 哪些属性是必须达标?
- 哪些属性可以阶段性妥协?
- 哪些指标会告诉我们取舍错了?
- 什么时候需要重新审视决策?
质量不是装饰,它是架构、测试、发布和运维共同服务的目标。
正在加载本节练习...