马尔库斯·维特鲁威·波利奥是古罗马的作家、建筑师和工程师,他的创作时期在公元前1世纪,他的生平不详,连他的名字马尔库斯和姓波利奥也只是由伐温提努斯提到过,他的生平年代主要是根据他的作品确定的。
统计质量控制 (SQC) 之父,沃特·阿曼德·休哈特在1931年就指出过质量评价的主观性——质量包含了人对客观现实的思考,感受,感知。
"There are two common aspects of quality: One of them has to do with the consideration of the quality of a thing as an objective reality independent of the existence of man.The other has to do with what we think, feel, or sense as a result of the objective reality. In other words, there is a subjective side of quality." —W.A. Shewart, 1931
2016年9月份《美国计算机学会通讯》上刊登了Peter J. Denning博士的文章《Software Quality》,介绍了软件质量评价从代码视角向用户视角的演化,很好的诠释了软件质量的Firmness,Commodity和Delight三个要素。
软件质量的评价已经明显的从上世纪70年代代码视角的评估演化到今天用户视角的评估。——Peter J. Denning博士
1.1 代码视角
根据Peter J. Denning博士的观点,传统的软件质量评价体系都是从代码视角出发的。其基本原则是制定客观的测量指标,监测软件的所有属性,量化软件本身。比如我们经常说的UT覆盖率,TA覆盖率,代码静态检查(Sonar)指标,在软件设计开发过程中制定详细的规范,ISO 9216,ISO-25010:2011等等。这些软件质量评价方法一般都包括correctness,reliability,integrity,usability,efficiency,maintainability,testability,interoperability,flexibility,reusability,portability,clarity,modifiability,documentation,resilience,understandability,validity,functionality,generality,economy等指标,每一个指标都可以展开成一套程序员必须遵循的规则。没人敢说软件质量是一件简单的事情!
1.2 用户视角
从用户的角度看,用户不会问“软件是不是有很好的架构并且通过了ISO9126标准?”,用户关心的是“软件是否能够帮助完成我工作?”,“我可以依靠它吗?”。这说明用户体验的满意度影响到用户对软件质量的评价。Peter J. Denning博士在文章中提出了6个级别来评估用户视角的软件质量。
Level -1: No trust. 用户不信任该软件。软件可能包含很多bug、引起系统崩溃或带有恶意插件。
Level 0: Cynical satisfaction.无忠诚度的满意。用户不信任软件提供商的所有声明。
Level 1: Software fulfills allbasic promises.软件满足所有基本承诺。ISO软件量标准定义就在这个级别。
Level 2: Software fits environment.软件适应用户环境。什么意思呢?软件提高了用户完成重要工作的能力。
Level 3: Software produces nonegative consequences.软件不会有任何负面影响。这包括两方面:第一,软件能够处理用户没能预见的错误场景;第二,软件可以满足用户未来的需求。
Level 4: Software delights.软件愉悦。这个级别的产品远远超出用户的期望,并产生新的,意想不到的,有时令人惊讶的积极作用。用户在该软件上收获了极大的愉悦并愿意推广给其他的用户。用户感觉软件设计者是理解了用户的真实世界并认为软件改善了他们的生活。
文献《Software Quality Models and Philosophies》总结软件质量具备以下两个属性:
The meaning and definition of software quality:
Conformance to specification:Quality that is defined as a matter of products and services whose measurable characteristics satisfy a fixed specification – that is, conformance to an inbeforehand defined specification.
Meeting customer needs: Quality that is identified independent of any measurable characteristics. Thatis,quality is defined as the products or services capability to meet customer expectations – explicit or not.
从上面的定义可以很容易推导出软件开发过程中常用的两个重要质量保证框架:DoD和CoS。正如Peter J. Denning博士所说:最高级别的软件愉悦出现在客户和开发者之间美好的互动关系中。