• 沒有找到結果。

類別內的變動主要為資料成員以及成員函數的變動,以下分別說明 :

1、資料成員變動情形

(1)資料成員新增/刪除

在一個類別之中,針對某些資料成員進行新增或刪除的動作。

(2)範圍變動

資料成員範圍的變動,為資料成員的宣告在 Public、Protected 以及 Private 之間互相的變更。

(3)型態變動

指資料成員宣告型態的變動,例如整數宣告轉變為雙精確度浮點數 宣告,字元宣告轉變為字串宣告等…。

2、成員函數變動情形

(1)成員函數新增/刪除

在一個類別之中,針對某些成員函數進行新增或刪除的動作。

(2)範圍變動

成員函數範圍的變動,為成員函數的宣告在 Public、Protected 以及

Private 之間互相的變更。

(3)傳回型態變動

成員函數傳回值型態的轉變,例如傳回值的型態由整數轉變為浮點 數等…。

(4)邏輯變動

運作邏輯的變動代表成員函數中演算邏輯的變動。

三、物件導向軟體變動衝擊相關量測方式

為了要瞭解設計文件中,可能產生的變動衝擊,必須要規劃相關的 量測方式,透過相關量測的方法,就可以針對設計文件可能產生變動衝 擊的情況加以量化,再依據量化值分析在設計文件中,那些部分受到變 動衝擊的影響,同時量測方法可以用來評估所提出之降低變動衝擊的方 法是否有效。但是根據物件導向軟體的特性,傳統結構化量測方式已不 適用於量測物件導向的軟體[17][6],因此根據物件導向軟體的特性,有許 多學者提出對於物件導向軟體特性的量測方法,以下分別探討 :

(一)、物件導向軟體相關量測方式

1、Chidamber 和 Kemeter 對於物件導向設計階段的量測提出一套完整的 量測方法,稱為 C&K 量測方法[17]。其中包含四個類別間量測(inter-class metric),分別為 DIT(Depth of inheritance tree)、NOC(number of children)、

CBO(coupling between objects)以及 RFC(response for a class),以及兩個類 別內量測(intra-class metric),包含 LCOM(lack of cohesion of methods)以及 WMC(weighted method per class)。

2、Abreu 等學者針對物件導向設計的特性,提出了 MOOD(Metrics for Object Oriented Design)量測方式[7],其中依據物件導向中資訊隱藏的特 性提出了 MHF(Method Hiding Factor)與 AHF(Attribute Hiding Factor)量測 方式,依據類別間繼承的特性提出包含 MIF(Method Inheritance Factor)與 AIF(Attribute Inheritance Factor) 量 測 方 式 , 依 據 多 形 的 特 性 提 出 PF(Polymorphism Factor)量測方式,依據訊息傳遞的特性提出 CF(Coupling Factor)量測方式。

3、Briand 等學者根據類別間的耦合度(coupling)提出量測方法[12],他們 認為類別間的互動可以分為類別與屬性間的互動 CA(Class-Attribute interactions)、類別與方法間的互動 CM(Class-Method interactions)以及方 法與方法間的互動 MM(Method-Method interactions)等三種主要的類型。

4、Bieman 和 Kang 根據類別內部定義的方法與變數之關係,提出了 TCC(Tight Class Cohesion)與 LCC(Loose Class Cohesion)兩個類別內聚力 的量測方式[10]。

以上為常用的物件導向軟體量測方式,有些學者採用上述部分的物 件導向量測方式[15,21],對物件導向軟體的變動衝擊進行量測,以瞭解 引用的量測方式是否可以用來量測物件導向軟體的變動衝擊,以下分別 進行描述 :

(二)、運用物件導向量測方式於變動衝擊分析之相關研究

1、Chaumun 等學者運用 WMC 量測法針對一個商用電信系統進行量測,

並探討 WMC 是否適合用來量測物件導向軟體的變動衝擊,結果發現

WMC 量測方式可以用來量測物件導向軟體的變動衝擊,亦即當 WMC 的 值越高時,物件導向軟體的變動衝擊情形就會越大[15]。但是只依據類別 成員函數的總數來判定變動的衝擊,則顯的過於單純,且不易於了解造 成變動衝擊的關鍵為何。

2、Briand 等學者運用 18 項的耦合力量測方式包括 CBO、MPC(Message Passing Coupling)[25]、ICP(Information-flow-based coupling)[24]等,針對 一個 C++語言所撰寫的商用系統進行量測,以瞭解軟體因為變動而產生 的漣漪效應,結果證明各項耦合力的量測方式,皆與軟體因為變動而產 生的漣漪效應呈現正向的關係[11]。

3、Kabaili 等學者以類別內聚力的角度探討軟體的變動衝擊情形,其中運 用 LCC 與 LCOM 量測方式以量測軟體的變動衝擊情形,但結果顯示 LCC 與 LCOM 量測方式並不適合用來量測軟體的變動衝擊情形[21]。然而,

造成此結果的原因,很有可能是因為該受測軟體,原本就有很高的設計 品質,因此並不容易產生變動的衝擊,進而造成此二項內聚力量測方式 無法應用於量測該受測軟體的變動衝擊。

由上述相關研究的結果可知,目前對於運用相關物件導向量測方式 在變動衝擊分析上的相關研究,大多是運用在程式碼的變動衝擊分析,

且運用的量測方式,僅可以單純的判斷類別間的關係,並無法真正的指 示出造成變動衝擊瓶頸的類別為何,因此本研究將會根據物件導向軟體 變動衝擊的相關因素,結合目前所提出之物件導向量測方式,提出一套 整合性的變動衝擊量測模式,並針對物件導向設計作出量測,以瞭解受 量測的物件導向設計對於後續維護作業可能產生的變動衝擊。