---
title: "Analisis Algoritma Classical Search untuk Mengonversi Abstract Syntax Tree Source Code Java menjadi Sequence Diagram"
author: Jahns Michael (1806141252)
date: \today
geometry: margin=1in
fontsize: 11pt
papersize: a4
toc: True
toc-title: \newpage Daftar Isi
bibliography: ["IEEE Xplore Citation BibTeX Download 2021.4.8.22.16.57.bib"]
csl: apa.csl
---
# Analisis Algoritma Classical Search untuk Mengonversi Abstract Syntax Tree Source Code Java menjadi Sequence Diagram
# Pendahuluan
*Sequence diagram* adalah salah satu jenis diagram UML yang memperlihatkan interaksi antar objek. Visualisasi dalam bentuk *sequence diagram* sangat berguna dalam berbagai hal, antara lain merancang suatu fungsionalitas yang akan diimplementasikan dalam suatu program, mempelajari *source code* yang sudah ada melakukan *reverse engineering* dari suatu *source code*, dan juga untuk melakukan pemeliharaan perangkat lunak. REVUML adalah hasil penelitian untuk melakukan *reverse engineering* suatu source code menjadi *sequence diagram* dengan bantuan *Abstract Syntax Tree (AST)* [^1]. Paper ini akan membahas lebih mendalam tentang hasil penelitian tersebut dari sudut pandang analisis algoritma.
[^1]: Paper tentang REVUML merupakan referensi utama dari paper ini.
# Latar Belakang Masalah
Dalam paper *"Reverse engineering of source code to sequence diagram using abstract syntax tree"*, penulis menjelaskan beberapa instrumen yang dipakai untuk mengimplementasikan REVUML, di antaranya :
1. JavaParser untuk menghasilkan AST dari *source code*
2. PlantUML, yaitu bahasa yang digunakan untuk menghasilkan Sequence Diagram.
3. Algoritma *Depth First Search (DFS) Post Order* untuk melakukan *AST traversal*, mengunjungi setiap node untuk menghasilkan element PlantUML dari node tersebut.
Penulis tidak menjelaskan alasan mengapa memakai algoritma *Depth First Search (DFS) post-order traversal* dibanding algoritma *Classical Search* lainnya yang juga cukup umum, dan juga mengapa harus memakai *post-order traversal* dibanding *pre-order traversal* atau *in-order traversal*. Apakah pemilihan algoritma pencarian dan *traversal* didasarkan pada pertimbangan kompleksitas atau kebenaran algoritmanya? Oleh karena itu, fokus dari paper ini adalah mencoba membandingkan *DFS* dengan algoritma *Classical Search* lainnya, dan *post-order traversal* dengan jenis *traversal* lainnya, dari segi kompleksitas *running-time* dan juga kebenaran algoritmanya.
# Konsep Dasar [^2]
[^2]: Yang didapat dari paper pendukung
Walau fokus dari paper ini adalah algoritmanya, bukan AST, *sequence diagram* mekanisme *JavaParser*, dan format *PlantUML*, hal-hal tersebut perlu dipahami untuk keperluan analisis kebenaran algoritma nantinya, karena hasil dari JavaParser dipakai sebagai input, sedangkan PlantUML adalah output dari algoritma yang akan dibahas lebih lanjut.
## AST
## Java Parser
## Sequence Diagram
## PlantUML
# Daftar Pustaka
Fauzi, E., B. Hendradjaya, and W. D. Sunindyo. 2016. “Reverse Engineering of Source Code to Sequence Diagram Using Abstract Syntax Tree.” In *2016 International Conference on Data and Software Engineering (ICoDSE)*, 1–6. <https://doi.org/10.1109/ICODSE.2016.7936137>.