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]。然而,
造成此結果的原因,很有可能是因為該受測軟體,原本就有很高的設計 品質,因此並不容易產生變動的衝擊,進而造成此二項內聚力量測方式 無法應用於量測該受測軟體的變動衝擊。
由上述相關研究的結果可知,目前對於運用相關物件導向量測方式 在變動衝擊分析上的相關研究,大多是運用在程式碼的變動衝擊分析,
且運用的量測方式,僅可以單純的判斷類別間的關係,並無法真正的指 示出造成變動衝擊瓶頸的類別為何,因此本研究將會根據物件導向軟體 變動衝擊的相關因素,結合目前所提出之物件導向量測方式,提出一套 整合性的變動衝擊量測模式,並針對物件導向設計作出量測,以瞭解受 量測的物件導向設計對於後續維護作業可能產生的變動衝擊。