Rekonstruksi Diagram Kelas UML Moodle Menggunakan Analisis Kode Statis
DOI:
https://doi.org/10.55382/jurnalpustakadata.v6i3.1914Keywords:
Reverse Engineering, Analisis Kode Statis, Abstract Syntax Tree, Diagram Kelas UML, MoodleAbstract
Dokumentasi desain arsitektur pada perangkat lunak berskala raksasa seperti Moodle sering kali tidak konsisten dengan implementasi aktualnya. Hal ini memicu penumpukan utang teknis (technical debt). Hal ini diperburuk dengan fakta bahwa upaya ekstraksi dokumentasi secara otomatis kerap gagal. Kegagalan ini terjadi karena menghasilkan "Spaghetti Diagram" akibat polusi visual dari detail implementasi tingkat rendah. Penelitian ini secara khusus bertujuan untuk menyelesaikan masalah polusi visual tersebut. Pendekatan yang digunakan adalah Analisis Kode Statis (Static Code Analysis / SCA) berbasis Abstract Syntax Tree (AST). Pendekatan ini digunakan untuk merekonstruksi diagram kelas secara otomatis pada 220 file kode sumber Moodle di modul Assign, Course, dan User. Evaluasi diukur berdasarkan kuantitas elemen arsitektur (kelas, atribut, metode, relasi) yang berhasil diekstraksi serta keterbacaan desain visualnya. Hasil penelusuran menunjukkan algoritma berhasil memproses seluruh kode tanpa galat. Modul Course mencatat tingkat kompleksitas tertinggi yang didominasi oleh relasi pewarisan (inheritance) dan agregasi (aggregation). Implementasi mekanisme filtering dan blacklisting untuk membuang kelas utilitas terbukti krusial. Selain itu, mengabaikan relasi dependensi (dependency) tingkat lokal juga terbukti efektif dalam mengeliminasi architectural noise. Kesimpulannya, visualisasi diagram kelas UML yang direkonstruksi terbukti representatif dan akurat. Diagram ini dapat digunakan sebagai blueprint arsitektur yang aktual guna memfasilitasi pemeliharaan sistem lanjutan.
Downloads
References
Acharya, R. (2013). "Object Oriented Design Pattern Extraction From Java Source Code," Master's Thesis, Uppsala Universitet, Swedia.
Budhkar, S., and Gopal, A. (2012). "Component-Based Architecture Recovery from Object Oriented Systems using Existing Dependencies among Classes," International Journal of Computational Intelligence Techniques, vol. 3, no. 1.
Chikofsky, E. J., and Cross, J. H. (1990). "Reverse Engineering and Design Recovery: A Taxonomy," IEEE Software, vol. 7, no. 1, pp. 13–17.
Favre, L. (2010). *Model Driven Architecture for Reverse Engineering Technologies: Strategic Directions and System Evolution*. Hershey, PA, USA: Engineering Science Reference (IGI Global).
Jindal, V., Jain, A., and Tayal, D. K. (2008). "On reverse engineering an object-oriented code into UML class diagrams incorporating extensible mechanisms," *ACM SIGSOFT Software Engineering Notes*, vol. 33, no. 5.
Kaliappan, V., and Ali, N. M. (2018). "Improving Consistency of UML Diagrams and Its Implementation Using Reverse Engineering Approach," *Bulletin of Electrical Engineering and Informatics (BEEI)*, vol. 7, no. 4.
Khalid, S., and Ibrahim, R. (2016). "Generating UML class diagram from source codes using multi-threading technique," *ARPN Journal of Engineering and Applied Sciences*, vol. 11, no. 12.
Mohamed, K. A., and Kamel, A. (2018). "Reverse Engineering State and Strategy Design Patterns using Static Code Analysis," *The Science and Information (SAI) Organization*, vol. 9, no. 1.
Rajput, A. (2014). "Reverse Engineering: Java code to uml diagram showing dependencies," Bachelor of Technology Project, Jaypee University of Information Technology, India.
Rasool, G., and Asif, N. (2007). "Software Architecture Recovery," *World Academy of Science, Engineering and Technology*, vol. 34.
Richner, T., and Ducasse, S. (1999). "Recovering High-Level Views of Object-Oriented Applications from Static and Dynamic Information," *Proceedings of the International Conference on Software Maintenance (ICSM'99)*, IEEE.
Schneider, S., Bakhtin, A., Li, X., Soldani, J., Brogi, A., Cerny, T., Scandariato, R., and Taibi, D. (2024). "Comparison of Static Analysis Architecture Recovery Tools for Microservice Applications," *Proceedings of Mining Software Repositories (MSR'24)*, ACM.
Sharma, N., and Chandel, G. S. (2012). "Generates UML Diagrams From Java Code Through Reverse Engineering," *International Journal of Engineering and Computer Science (IJECCE)*, vol. 3, no. 3.
Sutton, A., and Maletic, J. I. (2005). "Mappings for Accurately Reverse Engineering UML Class Models from C++," *Proceedings of the 12th Working Conference on Reverse Engineering (WCRE'05)*, IEEE.
Talerico, D. (2003). "Grouping in Object-Oriented Reverse Engineering," Master's Thesis, Universität Bern, Swiss.
Tonella, P., and Potrich, A. (2002). "Static and Dynamic C++ Code Analysis for the Recovery of the Object Diagram," *Proceedings of the International Conference on Software Maintenance*, IEEE.
Zhang, H. (2016). "An Approach for Extracting UML Diagram from Object-Oriented Program Based on J2X," *International Forum on Mechanical, Control and Automation (IFMCA)*, Atlantis Press.
A. D. Permatasari, N. Rahmatina, and M. A. Yaqin, "Evaluasi Teknik Elisitasi pada Software Requirement dalam Menentukan Efektivitas Kebutuhan Perangkat Lunak," *Jurnal Pustaka Data (Pusat Akses Kajian Database, Analisa Teknologi, dan Arsitektur Komputer)*, 2025.
Downloads
Published
How to Cite
Issue
Section
License
Copyright (c) 2026 Muktibaskara Kusbianto, Muhammad Aditya Dermawan, Muhammad Ainul Yaqin

This work is licensed under a Creative Commons Attribution 4.0 International License.






