大多数软件质量从业者认为,软件质量衡量的直观标准就是软件存在 bug 的多少,是否具有高性能,以及是否具有高安全性。但实际上并不全面,更准确地说,软件质量的高低是由软件产品对用户产生的价值的高低衡量的。一方面,要体现对用户的需求的满足;另一方面,要体现软件本身的优势和特性。
对于第一方面,体现对用户的需求的满足:
从市场的角度说,用户需要的软件是要带给他们更多的利益。利益由两方面组成,开源和节流。开源就是要创造更多的利润,获得更大的市场;而节流是指,用更少的人力物力财力成本,去解决一个指定的问题。
对于另一方面,体现软件本身的优势和特性:
在满足第一方面的基础上,更少的软件产品缺陷,更好的产品易用性,扩展性,稳定性,安全性等,将从软件本身角度描绘了一个具有强大优势和特性的高质量软件产品。当然,针对不同领域的软件,衡量的标准也会有不同的视角。
以上两方面缺一不可,相辅相成。Agile 采用迭代反馈的方式不断寻求高质量的软件,同时满足了两方面的要求。
如图 1 所示,橙色部分表示的需求风险,紫色部分表示产品自身质量风险。Agile 方法更注重客户的需求,在迭代中不断修正需求,尽量减少最终产品不满足用户需求的风险。
原文转自:http://www.ibm.com/developerworks/cn/devops/1609_liuy_quality/