SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
APIviz
Java API Visualizer


           이희승
  http://gleamynode.net/
JBoss, a division of Red Hat
목차
    Javadoc 생성 원리
●



    Standard Doclet
●



    Custom Doclet
●



    APIviz 소개
●



    APIviz 확장 태그
●


    로드 맵
●
생성 원리
               Javadoc

    Javadoc 명령 실행
●


    소스 코드의 주석 부분을 해석
●


    com.sun.javadoc 객체 모델 생성
●


          본문
      –

          태그 이름 및 값
      –

    객체 모델을 Doclet 이 처리
●


          Standard Doclet
      –

          Custom Doclet
      –

          Custom Doclet derived from Standard Doclet
      –
Standard Doclet

    가장 대중적인 Doclet
●


          JDK API Documentation
      –

    API 용법 설명에 필요한 대부분의 요구 충족
●


          HTML 본문
      –

          상호 참조
      –
                 Types
             ●


                 URLs
             ●



          Metadata
      –

                 Author, Version, …
             ●
Custom Doclet

    Javadoc 명령 실행시 '-doclet' 플래그 지정
●


          javadoc -doclet org.jboss.apiviz.APIviz …
      –

    com.sun.javadoc 패키지가 제공하는 객체 모
●

    델을 바탕으로 임의의 행동 수행
          XDoclet (pre-annotation era)
      –

                  각종 XML 디스크립터 생성
              ●



          Tag enforcer
      –

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



          @todo finder
      –

                  @todo 태그를 찾아서 .txt 형태로 출력
              ●
Hybrid Custom Doclet

    Standard Doclet 을 감싸는 또다른 Doclet
●



    Standard Doclet 이 생성한 HTML 을 수정
●


          텍스트 Search & Replace
      –

          이미지 삽입
      –

          기본 스타일 개선
      –

          기밀 정보 표시
      –

    Standard Doclet 의 기능을 보완하는 확장태그
●


          확장 태그 값을 바탕으로 HTML 수정
      –

          @confidential, @draft, @assistant John Doe
      –
소개
                    APIviz

    Hybrid Custom Doclet
●


    클래스 및 패키지별 상관 관계 분석
●


    Graphviz 의 graph visualization 사용
●



    UML 다이어그램 자동 생성 삽입
●


           패키지 다이어그램
       –

           클래스 다이어그램
       –

    확장 태그
●


           API 이해를 돕는 요소 부각
       –

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

           Realization, Generalization 이외의 관계 추가
       –
패키지 다이어그램
    JDepend 로 패키지간
●

    의존성 정확히 파악
    Circular dependency
●



    API 를 배우기 좋은
●


    시작점을 Highlight
           @apiviz.landmark
       –
클래스 다이어그램
개별 클래스 다이어그램
확장 태그
    @apiviz.*
●



    기존 Visualizer 와는 달리 의미에 집중
●



    소스 코드를 읽을때 어떻게 해석되는가 ?
●


           @apiviz.color
       –

           @apiviz.shape
       –

           @apiviz.landmark
       –

           @apiviz.stereotype
       –
확장 태그
    다이어그램 노이즈 제거
●


          @apiviz.exclude <regex>
      –

                  ^.*(Impl|Util)$
              ●



          @apiviz.excludeSubtypes
      –

    클래스 및 패키지 유형 지정
●


          @apiviz.landmark
      –

          @apiviz.stereotype
      –

          @apiviz.category
      –
고급 확장 태그
    클래스간 관계 지정
●


    Generalization, Realization 만 자동 인식
●


           Dependency – @apiviz.uses
       –

           Navagability – @apiviz.has
       –

           Aggregation – @apiviz.owns
       –

           Composition – @apiviz.composedOf
       –

           @see
       –
한계
    복잡한 모델의 Visualization 자체
●


          패키지 100 개의 의존성을 예쁘게 표현 ?
      –

    간결한 자동 관계 추론
●


          잡음 없는 자동 추론은 가능한가 ?
      –

    Graphviz 에 레이아웃 및 렌더링 의존
●


          외부 실행 파일 호출 (dot.exe)
      –

          소프트웨어 다이어그램에 최적화 ?
      –

    클래스 상관 관계 태그 문법의 복잡성
●
로드 맵 또는 개선안
    선택적 자동 관계 추론
●


    레이아웃 엔진 교체
●


    UML, 비 UML 에 무관히 최적의 표현법 발굴
●



    No More Standard Doclet?
●


           Sexy Style
       –

           DHTML / AJAX
       –

           Full Text Search
       –

           Collaborative Tagging / Comment System
       –
APIviz – Java API Visualizer

Contenu connexe

Tendances

Platform Strategy & Cases
Platform Strategy & CasesPlatform Strategy & Cases
Platform Strategy & CasesSungHyuk Park
 
Chapter6 เทคนิคพัฒนาองค์การ
Chapter6 เทคนิคพัฒนาองค์การChapter6 เทคนิคพัฒนาองค์การ
Chapter6 เทคนิคพัฒนาองค์การwanna2728
 
데브옵스 엔지니어를 위한 AWS 신규 서비스 소개 - 송주영 데브옵스 엔지니어, beNX
데브옵스 엔지니어를 위한 AWS 신규 서비스 소개 - 송주영 데브옵스 엔지니어, beNX데브옵스 엔지니어를 위한 AWS 신규 서비스 소개 - 송주영 데브옵스 엔지니어, beNX
데브옵스 엔지니어를 위한 AWS 신규 서비스 소개 - 송주영 데브옵스 엔지니어, beNXAmazon Web Services Korea
 
Cookiesjournal
CookiesjournalCookiesjournal
Cookiesjournalcomputerka
 
Uml Usecase 080701
Uml Usecase 080701Uml Usecase 080701
Uml Usecase 080701weizhen
 
Digital contents -midterm-
Digital contents -midterm-Digital contents -midterm-
Digital contents -midterm-jeong son
 
데이터 분석가를 위한 AWS 신규 서비스 소개 - 변규현 SW 엔지니어, 당근마켓
데이터 분석가를 위한 AWS 신규 서비스 소개 - 변규현 SW 엔지니어, 당근마켓데이터 분석가를 위한 AWS 신규 서비스 소개 - 변규현 SW 엔지니어, 당근마켓
데이터 분석가를 위한 AWS 신규 서비스 소개 - 변규현 SW 엔지니어, 당근마켓Amazon Web Services Korea
 
Daum개발플랫폼 및 방법론
Daum개발플랫폼 및 방법론Daum개발플랫폼 및 방법론
Daum개발플랫폼 및 방법론Guedon Jung
 
경영과 정보기술
경영과 정보기술경영과 정보기술
경영과 정보기술missgold85
 
경영과정보기술
경영과정보기술경영과정보기술
경영과정보기술cindenella
 
Npx 1 h16 presentation 18 feb 2016
Npx 1 h16 presentation 18 feb 2016Npx 1 h16 presentation 18 feb 2016
Npx 1 h16 presentation 18 feb 2016Arzish Baaquie
 
웹기획, 사용자를 배려하는
웹기획, 사용자를 배려하는웹기획, 사용자를 배려하는
웹기획, 사용자를 배려하는sid choi
 
Maps War, Google Maps & Competitors
Maps War, Google Maps & CompetitorsMaps War, Google Maps & Competitors
Maps War, Google Maps & CompetitorsJihoon Roh
 
PSA CBSE X TEST WITH ANSWERS
PSA CBSE X TEST WITH ANSWERS PSA CBSE X TEST WITH ANSWERS
PSA CBSE X TEST WITH ANSWERS Bhavesh Desai
 
목적에 맞는 다양한 관리형 Database 서비스 알아보기 – 강병억, AWS 솔루션즈 아키텍트:: AWS Builders Online S...
목적에 맞는 다양한 관리형 Database 서비스 알아보기 – 강병억, AWS 솔루션즈 아키텍트:: AWS Builders Online S...목적에 맞는 다양한 관리형 Database 서비스 알아보기 – 강병억, AWS 솔루션즈 아키텍트:: AWS Builders Online S...
목적에 맞는 다양한 관리형 Database 서비스 알아보기 – 강병억, AWS 솔루션즈 아키텍트:: AWS Builders Online S...Amazon Web Services Korea
 

Tendances (20)

Platform Strategy & Cases
Platform Strategy & CasesPlatform Strategy & Cases
Platform Strategy & Cases
 
Chapter6 เทคนิคพัฒนาองค์การ
Chapter6 เทคนิคพัฒนาองค์การChapter6 เทคนิคพัฒนาองค์การ
Chapter6 เทคนิคพัฒนาองค์การ
 
데브옵스 엔지니어를 위한 AWS 신규 서비스 소개 - 송주영 데브옵스 엔지니어, beNX
데브옵스 엔지니어를 위한 AWS 신규 서비스 소개 - 송주영 데브옵스 엔지니어, beNX데브옵스 엔지니어를 위한 AWS 신규 서비스 소개 - 송주영 데브옵스 엔지니어, beNX
데브옵스 엔지니어를 위한 AWS 신규 서비스 소개 - 송주영 데브옵스 엔지니어, beNX
 
Cookiesjournal
CookiesjournalCookiesjournal
Cookiesjournal
 
Uml Usecase 080701
Uml Usecase 080701Uml Usecase 080701
Uml Usecase 080701
 
Digital contents -midterm-
Digital contents -midterm-Digital contents -midterm-
Digital contents -midterm-
 
데이터 분석가를 위한 AWS 신규 서비스 소개 - 변규현 SW 엔지니어, 당근마켓
데이터 분석가를 위한 AWS 신규 서비스 소개 - 변규현 SW 엔지니어, 당근마켓데이터 분석가를 위한 AWS 신규 서비스 소개 - 변규현 SW 엔지니어, 당근마켓
데이터 분석가를 위한 AWS 신규 서비스 소개 - 변규현 SW 엔지니어, 당근마켓
 
Daum개발플랫폼 및 방법론
Daum개발플랫폼 및 방법론Daum개발플랫폼 및 방법론
Daum개발플랫폼 및 방법론
 
경영과 정보기술
경영과 정보기술경영과 정보기술
경영과 정보기술
 
경영과정보기술
경영과정보기술경영과정보기술
경영과정보기술
 
MathSciNet20090526
MathSciNet20090526MathSciNet20090526
MathSciNet20090526
 
Master3
Master3Master3
Master3
 
최종Google3
최종Google3최종Google3
최종Google3
 
Npx 1 h16 presentation 18 feb 2016
Npx 1 h16 presentation 18 feb 2016Npx 1 h16 presentation 18 feb 2016
Npx 1 h16 presentation 18 feb 2016
 
Exercicio
ExercicioExercicio
Exercicio
 
웹기획, 사용자를 배려하는
웹기획, 사용자를 배려하는웹기획, 사용자를 배려하는
웹기획, 사용자를 배려하는
 
Cell Phone Vs
Cell Phone VsCell Phone Vs
Cell Phone Vs
 
Maps War, Google Maps & Competitors
Maps War, Google Maps & CompetitorsMaps War, Google Maps & Competitors
Maps War, Google Maps & Competitors
 
PSA CBSE X TEST WITH ANSWERS
PSA CBSE X TEST WITH ANSWERS PSA CBSE X TEST WITH ANSWERS
PSA CBSE X TEST WITH ANSWERS
 
목적에 맞는 다양한 관리형 Database 서비스 알아보기 – 강병억, AWS 솔루션즈 아키텍트:: AWS Builders Online S...
목적에 맞는 다양한 관리형 Database 서비스 알아보기 – 강병억, AWS 솔루션즈 아키텍트:: AWS Builders Online S...목적에 맞는 다양한 관리형 Database 서비스 알아보기 – 강병억, AWS 솔루션즈 아키텍트:: AWS Builders Online S...
목적에 맞는 다양한 관리형 Database 서비스 알아보기 – 강병억, AWS 솔루션즈 아키텍트:: AWS Builders Online S...
 

Plus de trustinlee

WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징trustinlee
 
사용자 경험 극대화를 위한 웹 서버 아키텍처
사용자 경험 극대화를 위한 웹 서버 아키텍처사용자 경험 극대화를 위한 웹 서버 아키텍처
사용자 경험 극대화를 위한 웹 서버 아키텍처trustinlee
 
Rapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINARapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINAtrustinlee
 
Apache MINA를 사용한 네트워크 어플리케이션 개발
Apache MINA를 사용한 네트워크 어플리케이션 개발Apache MINA를 사용한 네트워크 어플리케이션 개발
Apache MINA를 사용한 네트워크 어플리케이션 개발trustinlee
 
자바 네트워킹 기초에서 응용까지
자바 네트워킹 기초에서 응용까지자바 네트워킹 기초에서 응용까지
자바 네트워킹 기초에서 응용까지trustinlee
 
JBoss Middleware 및 Remoting 프로젝트 소개
JBoss Middleware 및 Remoting 프로젝트 소개JBoss Middleware 및 Remoting 프로젝트 소개
JBoss Middleware 및 Remoting 프로젝트 소개trustinlee
 
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리trustinlee
 
오픈 소스 소개
오픈 소스 소개오픈 소스 소개
오픈 소스 소개trustinlee
 

Plus de trustinlee (8)

WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징
 
사용자 경험 극대화를 위한 웹 서버 아키텍처
사용자 경험 극대화를 위한 웹 서버 아키텍처사용자 경험 극대화를 위한 웹 서버 아키텍처
사용자 경험 극대화를 위한 웹 서버 아키텍처
 
Rapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINARapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINA
 
Apache MINA를 사용한 네트워크 어플리케이션 개발
Apache MINA를 사용한 네트워크 어플리케이션 개발Apache MINA를 사용한 네트워크 어플리케이션 개발
Apache MINA를 사용한 네트워크 어플리케이션 개발
 
자바 네트워킹 기초에서 응용까지
자바 네트워킹 기초에서 응용까지자바 네트워킹 기초에서 응용까지
자바 네트워킹 기초에서 응용까지
 
JBoss Middleware 및 Remoting 프로젝트 소개
JBoss Middleware 및 Remoting 프로젝트 소개JBoss Middleware 및 Remoting 프로젝트 소개
JBoss Middleware 및 Remoting 프로젝트 소개
 
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리
오픈 소스 프로젝트 참여를 통한 개발자 커리어 관리
 
오픈 소스 소개
오픈 소스 소개오픈 소스 소개
오픈 소스 소개
 

APIviz – Java API Visualizer

  • 1. APIviz Java API Visualizer 이희승 http://gleamynode.net/ JBoss, a division of Red Hat
  • 2. 목차 Javadoc 생성 원리 ● Standard Doclet ● Custom Doclet ● APIviz 소개 ● APIviz 확장 태그 ● 로드 맵 ●
  • 3. 생성 원리 Javadoc Javadoc 명령 실행 ● 소스 코드의 주석 부분을 해석 ● com.sun.javadoc 객체 모델 생성 ● 본문 – 태그 이름 및 값 – 객체 모델을 Doclet 이 처리 ● Standard Doclet – Custom Doclet – Custom Doclet derived from Standard Doclet –
  • 4. Standard Doclet 가장 대중적인 Doclet ● JDK API Documentation – API 용법 설명에 필요한 대부분의 요구 충족 ● HTML 본문 – 상호 참조 – Types ● URLs ● Metadata – Author, Version, … ●
  • 5. Custom Doclet Javadoc 명령 실행시 '-doclet' 플래그 지정 ● javadoc -doclet org.jboss.apiviz.APIviz … – com.sun.javadoc 패키지가 제공하는 객체 모 ● 델을 바탕으로 임의의 행동 수행 XDoclet (pre-annotation era) – 각종 XML 디스크립터 생성 ● Tag enforcer – 특정 태그를 반드시 기입하도록 ● @todo finder – @todo 태그를 찾아서 .txt 형태로 출력 ●
  • 6. Hybrid Custom Doclet Standard Doclet 을 감싸는 또다른 Doclet ● Standard Doclet 이 생성한 HTML 을 수정 ● 텍스트 Search & Replace – 이미지 삽입 – 기본 스타일 개선 – 기밀 정보 표시 – Standard Doclet 의 기능을 보완하는 확장태그 ● 확장 태그 값을 바탕으로 HTML 수정 – @confidential, @draft, @assistant John Doe –
  • 7. 소개 APIviz Hybrid Custom Doclet ● 클래스 및 패키지별 상관 관계 분석 ● Graphviz 의 graph visualization 사용 ● UML 다이어그램 자동 생성 삽입 ● 패키지 다이어그램 – 클래스 다이어그램 – 확장 태그 ● API 이해를 돕는 요소 부각 – API 이해를 방해하는 요소 제거 – Realization, Generalization 이외의 관계 추가 –
  • 8. 패키지 다이어그램 JDepend 로 패키지간 ● 의존성 정확히 파악 Circular dependency ● API 를 배우기 좋은 ● 시작점을 Highlight @apiviz.landmark –
  • 11. 확장 태그 @apiviz.* ● 기존 Visualizer 와는 달리 의미에 집중 ● 소스 코드를 읽을때 어떻게 해석되는가 ? ● @apiviz.color – @apiviz.shape – @apiviz.landmark – @apiviz.stereotype –
  • 12. 확장 태그 다이어그램 노이즈 제거 ● @apiviz.exclude <regex> – ^.*(Impl|Util)$ ● @apiviz.excludeSubtypes – 클래스 및 패키지 유형 지정 ● @apiviz.landmark – @apiviz.stereotype – @apiviz.category –
  • 13. 고급 확장 태그 클래스간 관계 지정 ● Generalization, Realization 만 자동 인식 ● Dependency – @apiviz.uses – Navagability – @apiviz.has – Aggregation – @apiviz.owns – Composition – @apiviz.composedOf – @see –
  • 14. 한계 복잡한 모델의 Visualization 자체 ● 패키지 100 개의 의존성을 예쁘게 표현 ? – 간결한 자동 관계 추론 ● 잡음 없는 자동 추론은 가능한가 ? – Graphviz 에 레이아웃 및 렌더링 의존 ● 외부 실행 파일 호출 (dot.exe) – 소프트웨어 다이어그램에 최적화 ? – 클래스 상관 관계 태그 문법의 복잡성 ●
  • 15. 로드 맵 또는 개선안 선택적 자동 관계 추론 ● 레이아웃 엔진 교체 ● UML, 비 UML 에 무관히 최적의 표현법 발굴 ● No More Standard Doclet? ● Sexy Style – DHTML / AJAX – Full Text Search – Collaborative Tagging / Comment System –