軟體度量基本概念理解
roger s. pres**an 的《軟體工程-實踐者之路 》第四章:
4.1測度、度量和指標
雖然術語「measure」(測量)、「measurement」(測度)和「metrics」(度量)經常被互換地使用,但注意到它們之間的細微差別是很重要的。因為「measure」(測量)和「measurement」(測度)即可以作為名詞也可以作為動詞,所以它們的定義可能會混淆。在軟體工程領域中,「measure」(測量)對乙個產品過程的某個屬性的範圍、數量、維度、容量或大小提供了乙個定量的指示。「measurement」(測度)則是確定乙個測量的行為。ieee的軟體工程術語標準辭典(ieee standard glossary of software engineering
terms)[iee93]中定義「metric」(度量)為「對乙個系統、構件或過程具有的某個給定屬性的度的乙個定量測量」。
當獲取到單個的資料點(如在乙個模組的複審中發現的錯誤數)時,就建立了乙個測量(measure)。測度(measurement)的發生是收集乙個或多個資料點的結果(如調研若干個模組的複審,以收集每一次複審所發現的錯誤數的測量)。軟體度量(metrics)在某種程度上與單個的測量相關(如每一次複審所發現的錯誤的平均數,或複審中每人/小時所發現的錯誤的平均數)。
軟體工程師收集測量結果並產生度量,這樣就可以獲得指標「indicator」。指標是乙個度量或度量的組合,它對軟體過程、軟體專案或產品本身提供了更深入的了解[rag95]。指標所提供的更深入的理解,使得專案管理者或軟體工程師能夠調整開發過程、專案或產品,這樣使事情進行得更順利,能被更好地完成。
例如,四個軟體小組共同完成乙個大型軟體專案。每乙個小組必須進行技術複審,但允許其自行選擇所採用的複審型別。檢查度量結果——每人/小時所發現的錯誤數,專案管理者注意到採用更加正式的複審方法的兩個小組,每人/小時所發現的錯誤數比起另外兩個小組高40%。假設所有其他引數都相同,這就給專案管理者提供了乙個指標:正式的複審方法比起其他複審方法在時間投資上能得到更大的回報。他可能會決定建議所有小組都採用更加正式的方法。度量給管理者提供了更深入的理解,而更深入的理解會產生更嚴謹、更正確的決策。
舉兩個簡單的
個例子:
看乙個人的肥胖程度,
measure: 身高,體重 (是兩個單獨的measure)
measurement: 拿著尺子去量身高,用秤去稱體重的行為
metrics: 肥胖指數(不知是不是叫這個名字) =體重
(kg) /
(身高-105)
indicator: 肥胖程度 (肥胖指數越大於1越胖)
這是乙個indicator與單個metrics對應的例子。還有乙個乙個indicator與多個metrics對應的,比如:
看ftr
的正常性:
measure: 文件頁數,
發現錯誤數,
每個人的準備時間
measurement: ....
metrics: 1. preparation rate =
總的準備時間 / 文件頁數
2. fault density =
錯誤數 / 文件頁數
indicator: 1.
準備程度:
ftr是否準備充分 - 僅與prepation rate這乙個metrics對應。 2.
查錯有效性:
ftr發現錯誤的效果 - 僅與fault density這乙個metrics對應。
3.
正常程度:
ftr是否正常: 這是乙個與兩個metrics都對應的indicator
,也就是乙個
ftr是否
正常(基於組織的歷史資料,在統計意義上),是要在
prep rate
和fault density
兩個metrics
組成的二維空間裡去判斷的。
如下圖,乙個點對應一次
ftr。
正常的ftr
的fault density
應介於上下限之間
(藍線與灰線之間),
prep rate
應大於下限(在綠線的右邊)。也就是正常的
ftr的點都在區域4,
別的區域的應該是有一定問題的,或者說是
pm應該去關注一下的。 區域
1,準備一點也不充分,錯誤倒發現了一大堆。呵呵,質量能放心嗎?! 區域
3,準備很充分,錯誤也挺多,但是太多了一點,是否還有很多漏網之魚?! 區域
2,或者準備不夠,或者錯誤太少,如果二者俱備,用四川話講,這個
ftr顯然是走過場噻
. 就象此圖中一樣,左下角的密密麻麻的點點,都是在走過場,
還是在review
比較關鍵
的requirement。pm
該下課!
^_^
基本概念理解 回送
回送 指客戶端的頁面傳送回伺服器端。注意 該頁面包含所有窗體資訊,此前已經在伺服器端載入過並已傳送到客戶端顯示。舉例說明 頁面上有兩個控制項 label1和button1,label1的文字屬性text為 abc 事件處理程式button1 click的操作是在label1.text文字屬性上新增 ...
Angular基本概念理解
nztable 模組變數 輸入 繫結值 輸出 繫結事件 補充說明 是控制項監控外部變化 是監聽事件,交給外部變化內部值的權利 二者都是 監聽 非一次性 name a a發生變化,name一直跟著改變,但是name發生變化,a不改變 總之寫在哪個元件,哪個元件就被動接受值 寫在哪個元件,就是監聽哪個元...
基本概念理解(三)
1 命名空間的using宣告可以省去在每次使用某命名空間中的名字時輸入字首,但是在標頭檔案中,必須總是使用完全限定的標準庫名字。2 現代c 程式應盡量使用vector和迭代器,而避免使用低階的陣列和指標。設計良好的程式只有在強調速度時才在類實現的內部使用陣列和指標。陣列的顯著缺陷在於 陣列的長度是固...