质量属性是软件架构的一个重要方面,质量属性还包括时间和情感因素。公元前1世纪,古罗马帝国工程师、建筑师马库斯·维特鲁威·波利奥在他的著作《建筑十书》中首次提出建筑的三要素“坚固、实用、美观”。英文表达是Firmitas、Utilitas、Venustas,通俗地说就是Solid、Useful、Beautiful。软件架构还需要具备以下三个要素,用计算机术语表示:稳固性:达到令人满意的免于破坏性故障的水平。商品:用于完成其声称的任务的实用程序。愉悦:使用中的愉悦。MarcusVitruviusPolio是一位古罗马作家、建筑师和工程师。他的创作时期是在公元前1世纪。Ventinus提到他的生平主要由他的著作决定。这三个要素在今天仍然是成功软件设计的重要组成部分。这三个方面都是关于架构的质量属性。怎么理解呢?无论从架构设计还是工程实现的角度来看,时间都是软件设计的重要因素。架构在时间推进的过程中演进。其实就是在PDCA循环中一个一个迭代,软件也在与用户的磨合中生生死死。统计质量控制(SQC)之父WalterArmandShewhart于1931年指出质量评价的主观性——质量包括人对客观现实的思考、感受和感知。“质量有两个共同的方面:一个与将事物的质量视为独立于人的存在的客观现实有关。另一个与我们所想、所感、所感有关。客观现实的结果。换句话说,质量有主观的一面。”—W.A.Shewart,1931September2016《美国计算机学会通讯》发表了PeterJ.Denning博士的文章《Software Quality》,介绍了软件质量评价从代码视角到用户视角的演进,很好的诠释了软件质量的三要素:Firmness,商品和喜悦。对软件质量的评价显然已经从1970年代的代码角度评价发展到今天用户角度的评价。——博士PeterJ.Denning1.1代码视角PeterJ.Denning博士认为,传统的软件质量评估系统是从代码视角出发的。基本原则是制定客观的指标来监控软件的所有属性并对软件本身进行量化。比如我们常说的UT覆盖率、TA覆盖率、代码静态检查(Sonar)指标、软件设计开发过程中的详细规范、ISO9216、ISO-25010:2011等。这些软件质量评价方法一般包括正确性、可靠性、完整性、可用性、效率、可维护性、可测试性、互操作性、灵活性、可重用性、可移植性、清晰性、可修改性、文档化、弹性、可理解性、有效性、功能性、通用性、经济性、等等。每个指标都可以扩展为程序员必须遵循的一组规则。没有人敢说软件质量是一件简单的事情!1.2站在用户的角度,用户不会问“软件是否结构好,是否通过了ISO9126标准?”能帮我完成我的工作吗?”,“我可以依靠它吗?”。由此可见,用户体验满意度会影响用户对软件质量的评价。PeterJ.Denning博士在文章中提出了6个等级,从用户的角度来评价软件质量。级别-1:不信任。用户不信任该软件。软件可能包含许多错误,导致系统崩溃,或包含恶意插件。0级:愤世嫉俗的满足感。没有忠诚的满足。用户不信任软件提供商的所有声明。级别1:软件履行所有基本承诺。软件履行所有基本承诺。ISO软件卷标准定义就是在这个层次上。级别2:软件适合环境。软件适合用户环境。这意味着什么?软件增强了用户完成重要工作的能力。级别3:软件不会产生负面后果。软件不会产生任何负面后果。这包括两个方面:第一,软件可以处理用户无法预见的错误场景;第二,软件能否满足用户未来的需求。第4级:软件乐趣。软件乐趣。这个级别的产品远远超出了用户的期望,并产生了新的、意想不到的、有时甚至是令人惊讶的积极效果。用户在软件中获得了极大的乐趣,并愿意将其推广给其他用户。用户觉得软件设计者了解用户的真实世界,相信软件改善了他们的生活。文献《Software Quality Models and Philosophies》总结软件质量有以下两个属性:预先定义的规范。满足客户需求:独立于任何可测量特征的质量。也就是说,质量被定义为满足客户期望的产品或服务能力——无论是明确的还是不明确的。从上面的定义可以很容易地推导出软件开发过程中常用的两个重要的质量保证框架:DoD和CoS。正如PeterJ.Denning博士所说:最高层次的软件乐趣发生在客户和开发人员之间的美好互动关系中。【本文为专栏作家施施原创文章。转载请通过作者微信获得授权公众号Butianys(butianys)】点此阅读作者更多好文
