Graphviz
Graphviz는 구조화된 수학적 그래프 및 네트워크 체계를 다이어그램으로 시각화하기 위해 AT&T Labs Research에서 초기 개발을 주도한 오픈소스 그래픽 렌더링 소프트웨어 도구이다. 복잡한 추상 데이터 구조를 시각적 객체로 자동 변환하는 목적으로 널리 사용된다.
주요 특징은 다음과 같다.
- DOT 명세 언어 (DOT Language): 텍스트 기반의 고유한 그래프 명세 언어인 DOT 구문을 채택하였다. 사용자는 물리적인 좌표나 위치를 지정할 필요 없이 노드(Node), 간선(Edge), 그리고 시각적 속성(Attributes)만 논리적으로 정의하여 스크립트에 서술하면 된다.
- 다중 자동 레이아웃 엔진: 데이터의 구조적 특성에 맞춰 최적의 배치를 계산하는 다양한 내부 알고리즘 단위를 제공한다. 방향성 그래프를 위한
dot, 무방향 스프링(Spring) 모델 기반의neato, 그래프 노드 수가 많은 대규모 네트워크를 위한 다단(Multiscale) 레이아웃 엔진인sfdp등이 포함된다. - 광범위한 연결성 및 포맷 출력: 독립적인 명령줄 인터페이스(CLI) 도구로서 기능할 뿐만 아니라, Python, C, Go, Java 등 다수의 프로그래밍 언어에서 호출하여 사용할 수 있는 라이브러리를 포함한다. 산출물은 SVG, PNG, PDF, PostScript 등으로 컴파일 가능하다.
- 수학적 및 소프트웨어 공학 도구로의 통합: Doxygen, Sphinx, 앞서 설명한 pipdeptree와 같은 수많은 서구권 기반 오픈소스 정보 추출 시스템 및 문서 자동화 프레임워크의 내부 시각화 백엔드로 광범위하게 채택되어 사용된다.
다이어그램 및 논리적 구조를 코드로 작성하여 시각화하는 다른 주요 도구들과의 비교 데이터는 다음과 같다.
| 특징 | Graphviz | Mermaid | PlantUML |
|---|---|---|---|
| 개발 초기 주체 | AT&T Labs Research (미국) | 오픈소스 커뮤니티 (Knut Sveidqvist 등) | 오픈소스 커뮤니티 (Arnaud Roques 등) |
| 사용 문법/언어 | 자체 DOT 언어 | 마크다운(Markdown) 기반 자체 구문 | 자체 도메인 특화 언어 (DSL) |
| 주요 렌더링 초점 | 수학적 연산 기반의 일반 네트워크 및 구조 그래프 | 웹 브라우저 호환 목적의 다이어그램 | 소프트웨어 모델링 (UML 다이어그램) 및 차트 |
| 코어 실행 환경 | C 언어 기반 네이티브 데스크톱 (CLI) | 브라우저 기반 (JavaScript 라이브러리) | Java 런타임 환경 (JVM 기반) |
| 의존성 관계 | 자체 연산 처리 엔진 구성으로 독립적 수행 가능 | 브라우저 및 DOM 환경에 렌더링 종속됨 | 레이아웃 연산 처리를 위해 내부적으로 Graphviz 도구에 의존함 |
출처 데이터:
- Graphviz Official Documentation. “About Graphviz.” (https://graphviz.org/about/)
- Gansner, E. R., & North, S. C. (2000). “An open graph visualization system and its applications to software engineering.” Software: Practice and Experience, 30(11), 1203-1233. John Wiley & Sons, Ltd. (https://dl.acm.org/doi/10.5555/369255.369259)
- PlantUML Official Documentation. “Graphviz Installation.” (https://plantuml.com/graphviz-dot)