怎么评价软件的质量?
保留所有版权,请引用而不是转载本文(原文地址 https://yeecode.top/blog/134/ )。
我们平时用软件,总会不自觉地在心里给它打分:“这个界面真漂亮"“这个用着真顺手"“这个怎么老崩溃"“这个功能真强”……其实啊,这些随口说的话,都是在从不同角度评价一个软件的质量。
那有没有一套正经的标准,能把这些"感觉"说清楚呢?还真有。ISO/IEC 25010:2011,这是软件工程里专门用来评价产品质量的国际标准。它把软件质量拆成了八个特性维度,如图 1所示。

这八个特性维度分别是:
- 功能性(Functional suitability):软件在指定条件下,能不能提供满足明确和隐含需求的功能。这里只要求"功能有没有”,至于功能规不规矩、漂不漂亮,倒不在它的考察范围内。
- 效率(Performance efficiency):在指定条件下,软件对资源的占用情况。资源包括别的软件、系统的软硬件配置等等。
- 兼容性(Compatibility):产品、系统或组件能不能跟别的产品、系统、组件交换信息、协同完成功能,同时还共享同一套软硬件环境。
- 易用性(Usability):指定的用户能不能在指定的环境下,有效、高效、满意地达成目标。
- 可靠性(Reliability):系统、产品或组件在指定条件下、指定时间内,能不能稳定地执行指定功能。这里说的"指定功能"其实涵盖了可用性、安全性、可维护性等等。软件不会像硬件那样用着用着就磨损,所以它不可靠,要么是需求、设计、实现里埋了错,要么是运行环境变了。
- 安全性(Security):产品或系统保护信息和数据的程度,确保人员或其他产品、系统只能按自己的权限级别去访问数据。
- 可维护性(Maintainability):预期的维护者能不能方便、高效地去修改它。
- 可移植性(Portability):系统、产品或组件,从一种硬件、软件或其他运行环境,迁移到另一种环境时,能不能又快又好地搞定。
把这八个维度合起来,就是软件质量的完整画像。前面那些大白话,对号入座一下就明白了:说"好用"“界面漂亮”,是在评价易用性;说"老崩溃”,是在评价可靠性;说"功能强大”,是在评价功能性。
做架构设计的时候,我们当然希望软件在这八个维度上都能拿高分。但现实里常常要做取舍——比如为了界面更漂亮(把易用性拉满),可能就让加载变慢了(效率下降)。这种权衡,几乎天天都在发生。
在AI编程迅猛发展的今天,编码能力则逐步弱化,而架构能力则成了每个开发者更为核心的能力。聊完"怎么评价软件的质量",如果你觉得架构、质量这些话题有意思,强烈推荐一本书《高性能架构之道(第二版)》。
这是一本理论联系实际的架构书,系统讲了怎么从顶层把软件架构好:覆盖分布式、并发编程、数据库调优、缓存、IO、高可用、前端性能优化等众多知识,最后还拿一个真实项目完整走了一遍架构全过程,把书里的方法真正落了地。
这本书还在台湾地区出了繁体版,叫《巨型服务架构》——繁体版嘛,贵得有点离谱。
就先聊到这儿。
我是软件架构师易哥。可以关注我,我会偶尔冒个泡,分享点编程干货!
可以访问个人知乎阅读更多文章:易哥(https://www.zhihu.com/people/yeecode),欢迎关注。
