2015/08/20 13:50

JDepend 사용. JAVA



객체지향 프로그래밍시 의존성에 관련된 부분은 상당히 난해한 면이 있다. 

응집도는 높이고 결합도는 낮추고.. 

자바 책이나 강의라면 항상 듣는 이야기이지만, 실제로 이렇게 설계해서 구현하기란 쉽지가 않다. 

매번 한번쯤은 찾아보고 직접 해 봐야지 했던, JDepend를 오늘 시간내서 스터디, 실습해 보았다.. 

1. 설치.
이클립스를 사용한다면 플러그인을 통해 간단히 설치 가능하다. 
http://andrei.gmxhome.de/eclipse/ 
위 사이트를 등록해서 설치하던지, 
편하게 eclipse marketplace에서 jdepend 검색하면 바로 install 가능하다. 


2. 실행
해당 소스를 클릭하고 마우스 우클릭을 하면 Run JDepend Analysis를 클릭하면 된다. 


3. 결과 확인
아래와 같은 결과 화면을 얻을 수 있다. 
관련된 내용은 아래와 같다. 

왼쪽 위 : 선택한 패키지의 정보를 표시 
− JDepend 를 실행할 때 여러 개의 패키지를 포함하고 있는 폴더를 선택한 경우에는 이곳에 모든 패키지의 정보가 표시
− 하나의 패키지에 대해서만 의존성 정보를 확인할 수도 있고, 여러 개의 의존성 정보를 종합하여 확인할수도 있음

왼쪽 아래 : Dependencies 에서 수치화된 정보를 그래프로 보여줌
- 가운데 대각선 부분이 Main Sequence(가장 이상적인 패키지)

오른쪽 : 선택한 패키지의 의존성에 대한 정보를 수치화 하여 표현
- Selected object(s)
현재 선택된 패키지를 보여줌
- Packages with cycle
현재 선택된 패키지 중 사이클을 가지고 있는 패키지를 보여줌
- Depends upon – efferent dependencies
현재 선택된 패키지에서 사용하고 있는 패키지를 보여줌
- Used by – afferent dependencies
현재 선택된 패키지가 사용되고 있는 패키지를 보여줌

상세하게 살펴보면.. 
− CC :: Concrete Class 인터페이스나 추상 클래스가 아닌 Concrete Class 의 수를 나타냄
− AC :: Abstract Class 추상 클래스나 인터페이스의 수를 나타내며 확장성의 척도가 됨
− Ca :: Afferent Couplings 현재 패키지의 클래스에 의존하고 있는 패키지의 수를 나타내며 책임의 척도가 됨
− Ce :: Efferent Couplings 현재 패키지의 클래스들이 의존하고 있는 패키지의 수를 나타내며 독립성의 척도가 됨
− A :: Abstractness ( A = AC/CC+AC ) 추상화 정도를 나타내며, 0 은 구체적인 패키지를, 1 은 추상적인 패키지를 나타냄
− I :: Instability ( I = Ce(Ce+Ca) ) 변화에 대한 안정성을 나타내며 0 부터 1 사이의 값을 가짐, 0 은 외부 변화에도 끄떡 없는 패키지이며 1 은 작은 변화에도 쉽게 흔들릴 수 있는 패키지를 나타냄
− D :: Distance to Main Sequence Main Sequence 로부터의 거리를 나타내며, 0 은 Main Sequence와 완전 가깝고 1 은 완전 먼 상태임, Main Sequence란 이상적인 패키지로 완전 추상적이면서 안정적이거나 완전 구체적이면서 불안정한 패키지를 나타냄
− Cycle :: Package dependency cycles 패키지들 상호 간에 의존성을 가지고 있을 때 발생함, 안 좋은 상황이기 때문에 경고 아이콘으로 보여짐


따라서, 이 툴을 통한 궁극적인 목표는 
추상화(Abstraction) 되어 있는 패키지
Ce(Efferent Couplings)는 없고 Ca(Afferent Couplings)가 발생하는 것이 좋음, 안정성이 높은 상태로 유지되는 것이 바람직함
구체화(Concreteness) 되어 있는 패키지
Ca(Afferent Couplings)는 없고 Ce(Efferent Couplings)가 발생하는 것이 좋음, 외부 패키지와의 의존관계를 가질 경우에도 Concrete Class 보다는 인터페이스를 통하여 의존관계를 가지는 것이 좋은 설계임, 구체화되어 있는 패키지는 안정성이 낮은 상태로 유지되는 것이 좋음
Main Sequence
Main Sequence란 이상적인 패키지로 완전 추상적이면서 안정적이거나 완전 구체적이면서 불안정한 패키지를 나타냄 (A+I=1) D(Distance to Main Sequence) 값은 A(Abstractness)와 I(Instability)의 조합이 적절하게 잘 유지되도록 고려할 때 판단할 수 있는 좋은 근거가 될수 있음


-------------------------

내용은 어느정도 이해가 가는데, 
이를 현장에 적용하고 나의 코드에 적용해서 설계하고 개발하기에는 다소 거리감이 있어보인다..

더 자주 보고 연구해보아야 할 듯.. 

이 내용은 2008년 한국소프트웨어진흥원의 JDepend_Manual 을 참고했습니다. 

덧글

댓글 입력 영역