天天看點

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

品質的定義

從正常、非技術層面來講,品質可定義為“事物、産品或工作的優劣程度”。遊    客因為不了解哥倫布時代以前的紡織品,是以會說:“這是一件品質上乘的披風!”然而,從技術層面來講,品質通常與需求互聯。美國電氣與電子工程師學會(IEEE)   對品質的定義是“系統、元件或過程滿足具體要求的程度”。國際标準化組織(ISO)對軟體品質的定義是“在特定的使用條件下,軟體産品滿足明确或隐含需求的程度”。這種技術性與非技術性的區分對了解本書所涉及的品質至關重要,因為如果不了解軟    件的功能性和性能意圖,我們就無法對軟體品質進行評估,不能憑空判斷品質的優劣。

軟體品質的一個重要方面是它涉及功能性和性能需求。功能性需求規定了軟體預期的行為和目标,或它要做什麼   ;而性能需求(以前稱為非功能性需求)規定了軟體操作的特征或屬性,如預期行為完成到什麼程度。例如,如果 SAS分析軟體的目标是生成一份   HTML   報表,那麼功能性需求中會詳細指出該報表的内容、準确性、完整性及格式,以及資料清理操作、資料轉換或其他過程。而軟體有效使用大資料(可擴充性)的能力和在Windows及 UNIX環境中運作的能力(可移植性)則屬于性能方面的要求。

為了有效地開發軟體,SAS 從業人員需要了解軟體所需的品質次元,品質次元通常可從隐含的需求中推斷出來,也可由正式的需求文檔指定。品質從軟體規劃和設計過程開始,這兩個階段會确定軟體的需求和技術性要求。沒有了要求,開發人員便無法知道自己開發的産品是可靠耐用、經得起反複使用,還是隻是一個轉瞬即逝的解決方案,隻能由一個使用者在某個無關重要的系統中運作一次。而且,若缺少一個公認的軟體品質模型來界定品質次元和各個次元之間的互相關系,便很難确定軟體的開發何時完成,以及軟體是否實作了最終目标。

避開品質陷阱

品質在日常交流中出現的頻率較高,是以,我們需要區分品質的具體定義和它在   軟體開發中的含義。通常來講,當單獨提到品質時,如“這是一件品質上乘的毛呢大衣”,我們所表達的是産品或服務的優劣。而且同樣的,當我們發現一家“高檔的”泰國菜館時,由于那裡的泰式炒寬粉非常好吃,是以我們經常光顧那裡!從這個角度    來看,品質表示的是對食物的獨立評價,或者說它代表的是這家高檔泰國菜館與其他    一些食材一般的泰式餐廳之間的對比。是以,在評估或描述品質時,本質上就有對比,但對比并不是直接表達出來的,而是暗含的。

作為軟體的使用者,我發現對比品質是比較普遍的。例如,我之是以使用   Gmail,是因為它的功能性和性能要優于其他的電子郵件應用程式。談到功能性,我比較喜歡線程化郵件、整體一貫的布局及充分進行環境自定義的功能    ;談到性能,高可用性的服務是非常可靠的,我相信Gmail伺服器和基礎架構的安全性。但在說到 Gmail品質較高時,我内心将這個電子郵件應用程式與之前用過的一些應用程式做了比較,之前的那些程式的功能性和性能都差一點。是以,軟體使用者通常會根據自己的需求和要求确定軟體的品質,同時也可能會比較某個軟體程式與其他程式對自己需求的滿足程度,在互相比較的基礎上确定軟體品質的高低。

但作為軟體開發人員,我認為軟體的品質是由ISO和 IEEE等組織決定的,這些組織規定,品質的評估必須參照需求或要求,而不是孤立地進行評價,或同其他軟體    進行比較。這些定義與産品和項目管理文獻中提到的一緻     :品質表示“一組固有特性滿足要求的程度”。如果不了解軟體建立的目的,雖可以描述軟體的功能性和性能,   但無法确定軟體的品質——這就是我們經常遭遇的品質陷阱,而這主要是由品質的通用定義和行業具體定義之間的分歧導緻的。

那麼,品質這麼複雜,我們該如何評估或讨論軟體品質呢?如何告知某個同僚,    他的軟體一塌糊塗呢?軟體品質模型被看作是一個行業标準,因為它是一個系統的、    标準化術語,能全面地描述軟體性能。本書的主要目的是解釋 ISO軟體産品品質模型、它的優點和缺點及在    SAS   資料分析開發中的有效應用,以及它在介紹軟體和軟體需求詞彙中的使用。