天天看點

帶你讀《SAS資料分析開發之道 軟體品質的次元》第一章概覽1.1引言(六)

風險

從軟體開發角度來講,基本的風險包括軟體功能性故障和性能故障。例如,一個   無惡意的“威脅”(如大資料)會利用軟體的“漏洞”(如一個潛在的錯誤,當遇到大資料時,該錯誤能限制有效範圍),給商業價值帶來“風險”(無效性能或功能性故障),這些術語的定義在下面的“威脅、漏洞及風險”文本框中。盡管“項目管理知識體系”(PMBOK)及其他資料将“正面的風險”看作機會,但本書隻讨論負面的風險。

威脅、漏洞及風險

威脅 “可能會為一個或多個項目目标帶來負面影響的風險。”“系統或系統環境的一種狀态,該狀态會從一個或多個已知的風險次元造成不利影響。”漏洞“資訊系統、密碼系統或部件(如系統安全程式、硬體設計、内部控制)存在的缺點,這些缺點可能會被其他程式利用。”風險 “一種未知的事件或情況,一旦發生,就會對一個或多個項目目标造成正面或負面的影響。”“系統元件、運算符、使用者及環境中,非常态事件或故障發生的可能性與該事件或故障産生後果的組合。”故障

故障

軟體故障通常是由利用漏洞的威脅引起的,但并不是所有的威脅和漏洞都會導緻軟體故障。錯誤(人為錯誤)可能會隐藏在代碼中,開發人員可能會也可能不會發現這些漏洞。隐含的漏洞包括編碼錯誤(缺陷),這些錯誤還不會導緻故障,而已知的漏洞所包含的編碼錯誤(潛在缺陷)則已經被識别,但尚待解決。第 4章将深入探究并區分這些術語。

例如,下面的 SAS代碼在文獻中通常看作是一種決定資料集中觀測資料量的方法 :

procsqlnoprint;selectcount(*)into:obstotfromtemp;

quit;

該代碼對觀測資料少于 1億的資料集有效,但由于這個門檻值是交叉的,是以&OBSTOT會在數字記數法和科學記數法之間變化。例如,含有 1000萬個觀測資料的資料集會被表示為10000000,而含有 1億個觀測資料的資料集則被表示為 1E8

(1×108)。對于運作此代碼的SAS從業人員來講,若要檢視日志中觀測資料的數量,這一差異不會有什麼問題。然而,若後續的程式試圖評價或比較    &OBSTOT,且被評價的資料是在科學記數法模式下,則會出現運作錯誤,錯誤代碼如下 :

%letobstot=1E8;

%if&obstot<5000000%then%putLESSTHAN5MILLION;

%else%putGREATERTHAN5MILLION;

LESSTHAN5MILLION

很顯然,1億并不小于 500萬,但由于有兩個潛在的錯誤,是以代碼會存在漏洞,而改正其中一個錯誤就可消除漏洞,改變 &OBSTOT的指派,添加一個能容納更大資料的格式就可消除第一個錯誤,如使用 FORMAT指令進行示範。通過在

%SYSEVALF宏函數中添加數值比較就可消除第二個錯誤,這樣會将 1E8解釋為數字,而不是文本。我們對兩種解決方案都進行了示範,而且改正任何一處錯誤都會消除漏    洞,防止故障的發生。

procsqlnoprint;

selectcount(*)format=15.0into:obstot

fromtemp;

%if%sysevalf(&obstot<5000000)%then%putLESSTHAN5MILLION;

GREATERTHAN5MILLION

因為故障隻發生在觀測資料增加時,是以可以稱作可擴充性錯誤。SAS從業人員沒有預料到(并測試)遇到大型資料集時會出現什麼狀況。但如果 1 億個觀測資料阈

值不交叉,即便存在錯誤,代碼也會繼續運作,而不會出現故障。我們将在第 9章“可擴充性”的“SAS 應用門檻值”部分深入讨論這種錯誤類型。

開發人員經常會有意地在軟體中添加漏洞,例如,一個熟悉前述軟體漏洞(被大    資料漏動利用)的開發人員在設計能夠處理含有小于1 萬個觀測資料的資料集軟體時,可能會選擇忽略軟體中的這一錯誤。因為風險可忽略不計,是以,可以接受并如期發    布含有漏洞的軟體。在其他情況下,威脅可能會帶來較大的風險,但這些風險也會被    接受,因為消除或降低風險所花費的成本要遠高于從中獲得的好處。

未被利用的漏洞不會降低軟體的可靠性,因為不會發生任何故障。例如,上述的潛在漏洞永遠不會被利用,因為不會遇到大資料。然而,漏洞确實會增加軟體發生故障的風險,是以,開發人員應知道軟體的具體風險是什麼。在這個例子中,風險是由SQL   程式内大資料的意外處理引起的,如果漏洞被利用,造成了“運作時錯誤”或其他故障,那麼軟體的可靠性就會降低。我們在下一部分要講到的風險登記表能幫助SAS   從業人員記錄已知漏洞、預期風險及初步解決方案,以更好地評估和管理軟體産品的風險級别。

繼續閱讀