天天看點

帶你讀《SAS資料分析開發之道 軟體品質的次元》第二章品質2.1品質的定義(一)

“這是幼羊駝絨,喜歡嗎?”“我不喜歡。”

“這布料很好,非常軟,來試試!”你剛拒絕了落滿灰塵的羊駝絨,它立刻又擺   在了你的面前,沒有什麼比這個更令人厭惡了。我迅速從自己所站的位置走開,躲開了這令人反感的舉動。

“不,我不需要!”                      

 “你想買什麼?”                          

 “我想買點老式一點兒的東西……”

智利,特木科。不,沒有人要向我推銷幼羊駝絨,但我确實在街邊市場的小貨攤    上尋找紡織品和小飾品。貨主是馬普切人,馬普切是一個因生産做工精細的紡織品而    著名的安第斯民族,他們生産紡織品的曆史長達一千年,在技藝上始終追求一絲不苟、細緻入微。我操着絆絆磕磕的西班牙語與他們讨價還價,他們則操着不流利的英語向    我展示一件又一件外套(安第斯西班牙語中的披風),有羊絨的、羊毛的、棉的,各種面料都有,整個下午就在讨價還價中度過了。對于馬普切人來講,幼羊駝絨是品質    的代名詞,但于我而言,它暗含的意思則是“這件外套價格非常高”。

“老式一點兒的?設計還是外形?”我不以為然地翻了個白眼,用手指撥弄着她  剛剛遞給我的那件外套,翻看着它拙劣的針腳,貨主 Maria   意識到自己眼前站着的人不是普通的遊客,你瞧,我是外套方面的行家……

我徒步旅行了幾個月,穿越了中美洲和南美洲,參觀了庫斯科、拉巴斯、聖地亞哥、瓦爾帕萊索及其他地方的紡織博物館,大部分時間都是在拍攝和通路工作中的土著技工,觀察他們的技巧,學習他們如何評價和差別紡織品的品質。

“幼羊駝絨?!”

我轉了個身,對她的喋喋不休感到很無奈,但幸運的是,貨主的注意力轉移到了剛來的顧客身上,剛來的外國顧客對到手的第一件披風就贊不絕口:“哦,好軟啊!”

我哼了一聲,笨蛋!

這是一件機器制作的披風,顯然不是幼羊駝絨的,洗的時候可能會變形、掉色,這些外國顧客卻心滿意足地離開了。

Maria    又窮追不舍地走到我身邊,手裡抱着幾件不知從哪淘來的老式外套。漂亮的針腳、自然的顔色、精心的設計和具有曆史印記的圖形    :我終于找到了馬普切人因之聞名于世的高品質紡織品,是它曾吸引着我來到巴塔哥尼亞。

■■■

我對高品質披風的孜孜追求與我對軟體品質的追求高度相似,當然,對于披風而言,我隻是一個使用者    ;而對于軟體而言,我卻是一個創造者。從以上情景中,我們能夠推斷出以下幾條正常的品質原則。

品質,像審美一樣,都是“情人眼裡出西施”,我們所認為的高品質在他人眼裡并非也是如此。Maria認為(或至少努力在傳達)“幼羊駝絨”指的品質較高,而我看重的卻是針腳和古樸的設計。軟體品質并不是一個看得見、摸得着的實體,即便抛開利益相關者的意圖和看法,也不是能明明白白确定下來的。

品質包括許多不同的特征,任何人都無法面面俱到地對它所有的特征做出評價。    這些特征裡包括功能性,如披風最重要的一點是防寒保暖     ;也包括性能,如披風的耐穿性或不褪色。軟體品質模型也包括功能性和性能次元,它們規定了軟體應達成什麼    目标以及如何實作目标。如針腳較差的披風一般,軟體有時能滿足功能性需求,但時    間久了或用的時間長了,就會開線。

品質(或品質不高)并不總是能覺察到,如果對産品或産品類型沒有系統的了解,則不能準确地确定(優先考慮)品質。我曾深入地研究過紡織品,并且有品質評估的    客觀參考标準,但我遇見的那些遊客并不像我一樣做過這些準備。品質模型中有許多描述軟體品質的特征,而且對這些次元和各個次元之間互相作用的了解能夠提供一種參    考架構和一套詞彙,便于參照國際公認的标準對品質進行站得住腳的、标準化的評估。

品質标準應該是可評估的,如果不能參照一個基準線評估和驗證軟體标準,那麼即便品質标準是有幫助的,也是無效的。我不能區分幼羊駝絨和成年羊駝毛纖維,是以,即便知道自己是在為不确定的東西付出高額的費用,也沒有什麼意義。軟體開發同樣也會從可評估的要求中受益,它不僅能指導研發過程本身,還便于向客戶和其他利益相關者解釋軟體品質。若沒有可評估的标準,SAS從業人員如何能知道自己何時完成軟體開發,或者軟體是否能滿足産品的意圖?他們不知道。

品質并不總是我們追求的目标,因為它有内在的權衡取舍。遊客購買物品時,我确實會突然插話,試圖引導他們去追求“更高品質”的披風——至少是我心目中的高品質,但他們總是委婉禮貌地講出自己的購買需求,披風是給孩子買的,是以不要求耐穿和高品質——他們隻是想要點兒東西罷了。而且,他們需要趕公車,隻有一點點購物的時間,是以,對他們而言購物經曆比産品品質更重要。軟體開發中總有一些權衡取舍,而且選擇哪種構想都是經過深思熟慮的,而不是随意就做出決定。功能和性能決定品質,但兩者在本質上又存在競争關系。而且,軟體品質與項目預算和項目成本之間也存在競争關系,是以,許多開發項目可能會有許多品質之外的目标,或者有一些僅涉及功能而不涉及性能的要求。排除品質次元的決定通常需要有強有力的理由支撐,需要謹慎。

品質缺失會帶來内在的風險,不管品質是被無意忽略還是有意排除。遊客要離開    時,我在他們後面大聲地喊:“洗的時候一定要用護麗洗滌劑,這樣就不會縮水了!”我是提醒他們洗衣機可能會帶來的風險——暴露廉價披風的弱點(缺點)。所有軟體      開發項目都存在固有的風險,但若開發項目更重視其他概念,而在品質上側重較少,    那麼開發人員就應該清楚軟體的漏洞以及這些漏洞會帶來的具體風險。這樣,品質包    含的好處和商業價值就能與品質排除的風險進行比較與權衡了。

繼續閱讀