--- 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>.