JDepend 一個開放原始碼的可以用來評價Java程式質量的優秀工具,它遍歷Java class的檔案目錄,以Java包(package)為單位,為每一個包/類自動生成 包的依賴程度,穩定性,可靠度等的評價報告,根據這些報告,我們可以得到包或類之間的依賴關係,並分析出包的穩定程度,抽象程度,是否存在循環依賴關係 等。
基本介紹
- 中文名:JDepend
- 外文名:無
- 設計原則:可靠的,穩定的,健壯的包
- 優點:是一個不可多得的優秀工具
簡介,特性,JDepend的主要功能,
簡介
JDepend 一個開放原始碼的可以用來評價Java程式質量的優秀工具,它遍歷Java class的檔案目錄,以Java包(package)為單位,為每一個包/類自動生成 包的依賴程度,穩定性,可靠度等的評價報告,根據這些報告,我們可以得到包或類之間的依賴關係,並分析出包的穩定程度,抽象程度,是否存在循環依賴關係 等。
我們可以根據JDepend給出的報告數據,分析出我們的包是否是可靠的,穩定的,健壯的包,是否符合面向對象的設計原則。
特性
一個具有穩定性,擴展性,可維護性的軟體系統要求系統設計遵循面向對象的設計原則。一般來說,面向對象的設計原則要求滿足高聚合,低耦合,禁止循環依賴等基本原則。
如果存在包與面向對象的設計原則有牴觸,則有必要對這些包加以重新設計或抽象。
JDepend的主要功能
JDepend生成的Java包的質量評價報告主要包括:
Number of Classes and Interfaces:實現類與抽象接口的數目
面向的設計原則之一The Stable Abstractions Principle (SAP):穩定抽象等價原則指出了包的穩定程度與它的抽象程度(接口的數目)成正比,也就是說,一個包內包含的接口所占的比重越大,這個包就越穩定。
Abstractness (A):包的抽象度。指一個包內包含的抽象類或接口占整個包中的類的比重。該值處於0,1之間,若A=0,說明包內不包含任何抽象類或接口;若A=1,說明包內全部是抽象類或接口。包的抽象度與穩定性之間的關係上面已經作了說明。
Afferent Couplings (Ca):向心耦合。依賴該包(包含的類)的外部包(類)的數目(i.e. incoming dependencies),該數值越大,說明該包的擔當的職責越大,也就越穩定。
Efferent Couplings (Ce):離心耦合。被該包依賴的外部包的數目(i.e. outgoing dependencies),該數值越大,說明該包越不獨立(因為依賴了別的包),也越不穩定。
Instability (I):衡量一個包的不穩定程度。I=Ce/(Ce+Ca)。它的值處於[0,1]之間。I=0時說明包是最穩定的,反之I=1則說明包極不穩定。
Distance from the Main Sequence (D): 該指標主要用來評價包的抽象程度與穩定程度的平衡關係,它可以用二維直線圖 A + I = 1 來表示。D=abs((A + I) - 1),也就是說D為 一個包的抽象度 + 包的不穩定程度 - 1 的絕對值。一個理想的包是:完全抽象的(A=1),非常穩定的(I=0),這時D=0;或者是:完全具體類構成的包(A=0),非常不穩定的 (I=1),這時同樣也有D=0。D=0說明包的抽象程度與穩定程度是平衡的,反之D=1說明包的平衡程度被嚴重破壞。
Package Dependency Cycles:包的循環依賴度。
面向對象的設計原則之一:The Acyclic Dependencies Principle (ADP) - OO設計的無環依賴原則要求包之間不能有循環依賴關係。
JDepend為我們提供了上述許多高級功能,為我們設計健壯的包/類提供了重要的參考數據,是一個不可多得的優秀工具。