apiviz – java api visualizer

16
APIviz Java API Visualizer 이희승 http://gleamynode.net/ JBoss, a division of Red Hat

Upload: trustinlee

Post on 22-Nov-2014

2.439 views

Category:

Technology


3 download

DESCRIPTION

'APIviz – Java API Visualizer' - presented at ZDNet Korea Advanced Computing Conference 2009 (14 April 2009)

TRANSCRIPT

Page 1: APIviz – Java API Visualizer

APIvizJava API Visualizer

이희승http://gleamynode.net/

JBoss, a division of Red Hat

Page 2: APIviz – Java API Visualizer

목차

● Javadoc 생성 원리● Standard Doclet● Custom Doclet● APIviz 소개● APIviz 확장 태그● 로드 맵

Page 3: APIviz – Java API Visualizer

Javadoc 생성 원리

● Javadoc 명령 실행● 소스 코드의 주석 부분을 해석● com.sun.javadoc 객체 모델 생성

– 본문– 태그 이름 및 값

● 객체 모델을 Doclet 이 처리– Standard Doclet

– Custom Doclet

– Custom Doclet derived from Standard Doclet

Page 4: APIviz – Java API Visualizer

Standard Doclet

● 가장 대중적인 Doclet– JDK API Documentation

● API 용법 설명에 필요한 대부분의 요구 충족– HTML 본문– 상호 참조

● Types● URLs

– Metadata● Author, Version, …

Page 5: APIviz – Java API Visualizer

Custom Doclet

● Javadoc 명령 실행시 '-doclet' 플래그 지정– javadoc -doclet org.jboss.apiviz.APIviz …

● com.sun.javadoc 패키지가 제공하는 객체 모 델을 바탕으로 임의의 행동 수행– XDoclet (pre-annotation era)

● 각종 XML 디스크립터 생성

– Tag enforcer● 특정 태그를 반드시 기입하도록

– @todo finder● @todo 태그를 찾아서 .txt 형태로 출력

Page 6: APIviz – Java API Visualizer

Hybrid Custom Doclet

● Standard Doclet 을 감싸는 또다른 Doclet● Standard Doclet 이 생성한 HTML 을 수정

– 텍스트 Search & Replace– 이미지 삽입– 기본 스타일 개선– 기밀 정보 표시

● Standard Doclet 의 기능을 보완하는 확장태그– 확장 태그 값을 바탕으로 HTML 수정

– @confidential, @draft, @assistant John Doe

Page 7: APIviz – Java API Visualizer

APIviz 소개

● Hybrid Custom Doclet● 클래스 및 패키지별 상관 관계 분석● Graphviz 의 graph visualization 사용● UML 다이어그램 자동 생성 삽입

– 패키지 다이어그램– 클래스 다이어그램

● 확장 태그– API 이해를 돕는 요소 부각

– API 이해를 방해하는 요소 제거

– Realization, Generalization 이외의 관계 추가

Page 8: APIviz – Java API Visualizer

패키지 다이어그램

● JDepend 로 패키지간 의존성 정확히 파악

● Circular dependency● API 를 배우기 좋은

시작점을 Highlight– @apiviz.landmark

Page 9: APIviz – Java API Visualizer

클래스 다이어그램

Page 10: APIviz – Java API Visualizer

개별 클래스 다이어그램

Page 11: APIviz – Java API Visualizer

확장 태그

● @apiviz.*● 기존 Visualizer 와는 달리 의미에 집중● 소스 코드를 읽을때 어떻게 해석되는가 ?

– @apiviz.color

– @apiviz.shape

– @apiviz.landmark

– @apiviz.stereotype

Page 12: APIviz – Java API Visualizer

확장 태그

● 다이어그램 노이즈 제거– @apiviz.exclude <regex>

● ^.*(Impl|Util)$

– @apiviz.excludeSubtypes● 클래스 및 패키지 유형 지정

– @apiviz.landmark

– @apiviz.stereotype

– @apiviz.category

Page 13: APIviz – Java API Visualizer

고급 확장 태그

● 클래스간 관계 지정● Generalization, Realization 만 자동 인식

– Dependency – @apiviz.uses

– Navagability – @apiviz.has

– Aggregation – @apiviz.owns

– Composition – @apiviz.composedOf

– @see

Page 14: APIviz – Java API Visualizer

한계

● 복잡한 모델의 Visualization 자체– 패키지 100 개의 의존성을 예쁘게 표현 ?

● 간결한 자동 관계 추론– 잡음 없는 자동 추론은 가능한가 ?

● Graphviz 에 레이아웃 및 렌더링 의존– 외부 실행 파일 호출 (dot.exe)

– 소프트웨어 다이어그램에 최적화 ?● 클래스 상관 관계 태그 문법의 복잡성

Page 15: APIviz – Java API Visualizer

로드 맵 또는 개선안

● 선택적 자동 관계 추론● 레이아웃 엔진 교체● UML, 비 UML 에 무관히 최적의 표현법 발굴● No More Standard Doclet?

– Sexy Style

– DHTML / AJAX

– Full Text Search

– Collaborative Tagging / Comment System

Page 16: APIviz – Java API Visualizer