“这是幼羊驼绒,喜欢吗?”“我不喜欢。”
“这布料很好,非常软,来试试!”你刚拒绝了落满灰尘的羊驼绒,它立刻又摆 在了你的面前,没有什么比这个更令人厌恶了。我迅速从自己所站的位置走开,躲开了这令人反感的举动。
“不,我不需要!”
“你想买什么?”
“我想买点老式一点儿的东西……”
智利,特木科。不,没有人要向我推销幼羊驼绒,但我确实在街边市场的小货摊 上寻找纺织品和小饰品。货主是马普切人,马普切是一个因生产做工精细的纺织品而 著名的安第斯民族,他们生产纺织品的历史长达一千年,在技艺上始终追求一丝不苟、细致入微。我操着绊绊磕磕的西班牙语与他们讨价还价,他们则操着不流利的英语向 我展示一件又一件外套(安第斯西班牙语中的披风),有羊绒的、羊毛的、棉的,各种面料都有,整个下午就在讨价还价中度过了。对于马普切人来讲,幼羊驼绒是质量 的代名词,但于我而言,它暗含的意思则是“这件外套价格非常高”。
“老式一点儿的?设计还是外形?”我不以为然地翻了个白眼,用手指拨弄着她 刚刚递给我的那件外套,翻看着它拙劣的针脚,货主 Maria 意识到自己眼前站着的人不是普通的游客,你瞧,我是外套方面的行家……
我徒步旅行了几个月,穿越了中美洲和南美洲,参观了库斯科、拉巴斯、圣地亚哥、瓦尔帕莱索及其他地方的纺织博物馆,大部分时间都是在拍摄和访问工作中的土著技工,观察他们的技巧,学习他们如何评价和区别纺织品的质量。
“幼羊驼绒?!”
我转了个身,对她的喋喋不休感到很无奈,但幸运的是,货主的注意力转移到了刚来的顾客身上,刚来的外国顾客对到手的第一件披风就赞不绝口:“哦,好软啊!”
我哼了一声,笨蛋!
这是一件机器制作的披风,显然不是幼羊驼绒的,洗的时候可能会变形、掉色,这些外国顾客却心满意足地离开了。
Maria 又穷追不舍地走到我身边,手里抱着几件不知从哪淘来的老式外套。漂亮的针脚、自然的颜色、精心的设计和具有历史印记的图形 :我终于找到了马普切人因之闻名于世的高质量纺织品,是它曾吸引着我来到巴塔哥尼亚。
■■■
我对高质量披风的孜孜追求与我对软件质量的追求高度相似,当然,对于披风而言,我只是一个使用者 ;而对于软件而言,我却是一个创造者。从以上情景中,我们能够推断出以下几条常规的质量原则。
质量,像审美一样,都是“情人眼里出西施”,我们所认为的高质量在他人眼里并非也是如此。Maria认为(或至少努力在传达)“幼羊驼绒”指的质量较高,而我看重的却是针脚和古朴的设计。软件质量并不是一个看得见、摸得着的实体,即便抛开利益相关者的意图和看法,也不是能明明白白确定下来的。
质量包括许多不同的特征,任何人都无法面面俱到地对它所有的特征做出评价。 这些特征里包括功能性,如披风最重要的一点是防寒保暖 ;也包括性能,如披风的耐穿性或不褪色。软件质量模型也包括功能性和性能维度,它们规定了软件应达成什么 目标以及如何实现目标。如针脚较差的披风一般,软件有时能满足功能性需求,但时 间久了或用的时间长了,就会开线。
质量(或质量不高)并不总是能觉察到,如果对产品或产品类型没有系统的理解,则不能准确地确定(优先考虑)质量。我曾深入地研究过纺织品,并且有质量评估的 客观参考标准,但我遇见的那些游客并不像我一样做过这些准备。质量模型中有许多描述软件质量的特征,而且对这些维度和各个维度之间相互作用的理解能够提供一种参 考框架和一套词汇,便于参照国际公认的标准对质量进行站得住脚的、标准化的评估。
质量标准应该是可评估的,如果不能参照一个基准线评估和验证软件标准,那么即便质量标准是有帮助的,也是无效的。我不能区分幼羊驼绒和成年羊驼毛纤维,因此,即便知道自己是在为不确定的东西付出高额的费用,也没有什么意义。软件开发同样也会从可评估的要求中受益,它不仅能指导研发过程本身,还便于向客户和其他利益相关者解释软件质量。若没有可评估的标准,SAS从业人员如何能知道自己何时完成软件开发,或者软件是否能满足产品的意图?他们不知道。
质量并不总是我们追求的目标,因为它有内在的权衡取舍。游客购买物品时,我确实会突然插话,试图引导他们去追求“更高质量”的披风——至少是我心目中的高质量,但他们总是委婉礼貌地讲出自己的购买需求,披风是给孩子买的,所以不要求耐穿和高质量——他们只是想要点儿东西罢了。而且,他们需要赶公车,只有一点点购物的时间,因此,对他们而言购物经历比产品质量更重要。软件开发中总有一些权衡取舍,而且选择哪种构想都是经过深思熟虑的,而不是随意就做出决定。功能和性能决定质量,但两者在本质上又存在竞争关系。而且,软件质量与项目预算和项目成本之间也存在竞争关系,因此,许多开发项目可能会有许多质量之外的目标,或者有一些仅涉及功能而不涉及性能的要求。排除质量维度的决定通常需要有强有力的理由支撑,需要谨慎。
质量缺失会带来内在的风险,不管质量是被无意忽略还是有意排除。游客要离开 时,我在他们后面大声地喊:“洗的时候一定要用护丽洗涤剂,这样就不会缩水了!”我是提醒他们洗衣机可能会带来的风险——暴露廉价披风的弱点(缺点)。所有软件 开发项目都存在固有的风险,但若开发项目更重视其他概念,而在质量上侧重较少, 那么开发人员就应该清楚软件的漏洞以及这些漏洞会带来的具体风险。这样,质量包 含的好处和商业价值就能与质量排除的风险进行比较与权衡了。