關鍵字:點度量 POPs
POPs度量方法的形成
下一步工作就是收集數據。開始我們有超過20個項目的數據集。數據是從不同的軟件開發領域如軍用、金融和商業貿易的軟件工具賣主那里收集來的, 數據是規范化的,包含普通的應用類別和操作說明。雖然不是所有的數據都是我們想要的,但我們能對超過775個類和5900個方法進行詳細研究。大部分軟件是C++ 或者Smalltalk編寫的。
有了收集到的一些數據和能覆蓋所有三維的正確的度量主意,下一步任務就是確定一個能聯合這些度量方法形成一個與工作量有意義的數量。在這個過程的第一步是對方法如何加權。挑戰是如何提供一個方法分類的框架,這個框架能在分析軟件方案時工作,且能提供足夠好的非類粒度。
Booch 建議將方法分成5類[1] :
構造器(Constructors) – 實例化一個對象的方法。
· 解析器(Destructors )– 消滅一個對象的方法。
· 修正器(Modifiers) – 改變對象狀態的方法。修正器內包含自己和其他類的一個或多個屬性。
· 讀取器(Selectors )– 訪問對象狀態但不改變狀態。這種方法提供給公眾讀取加載在對象身上數據。
· 疊加器(Iterators) – 以定義好的順序訪問對象的所有部分。他們可以用來遍歷一個對象集合中的每個成員,對每個成員執行同樣的操作。
為了驗證這種分類是否真實反映方法在復雜性上的不同和確定基于這些不同的加權系數,我們研究了數百個C++ 和 Smalltalk方法。
對每種方法我們收集了有關類別和屬性數的方面的信息。我們按類別組織了這些方法,給每個方法按花在它上面的工作量總和分配了一個系數。 由于工作量是在類的層面跟蹤的而不是在方法層次跟蹤,我們根據提供者給的信息確定一個百分比,確定一個類的工作量能分配多少到一個特定的方法。如果缺少提供者給的可靠信息,我們用代碼行來確定分配給方法的工作量。利用代碼行并沒有違反最初的設想,因為我們用代碼行只是為了確定特定方法類別的加權系數。 我們計算了每種類別方法的平均數,且將他們用作最初的加權系數。 在分析過程中,我們確定構造器和解析器在復雜性方面沒有明顯的區別,所以我們將這兩種方法類別合起來了。 以這點為基礎,我們確定了每種方法類別的平均加權系數。這些加權系數主要是基于功能。
方法類別
方法的復雜性
權重
構造器/
解析器
低
1
平均
4
高
7
修正器
低
1
文章來源于領測軟件測試網 http://www.kjueaiud.com/