JOISIE (Journal Of Information Systems And Informatics Engineerin. p- ISSN: 2503-5304 Vol. No. Desember 2024. Hlm 369-380 e- ISSN: 2527-3116 Received: 26 November 2024. Revised: 23 Desember 2024. Accepted: 31 Desember2024 IMPLEMENTASI CLEAN ARCHITECTURE PADA APLIKASI MOBILE AL-QURAN BERBASIS FLUTTER Zihad Azziqra. Ilyas Nuryasin. Prodi Informatika. Universitas Muhammadiyah Malang. Jl. Raya Tlogomas No. Babatan. Tegalgondo. Kota Malang. email: 1azziqrazihad@webmail. id, 2ilyas@umm. Abstract Flutter-based mobile application development is gaining popularity due to its cross-platform development efficiency. However, maintainability is a major challenge to overcome in application Software maintenance costs are estimated to account for up to 79%-90% of the total application development costs, so maintainability becomes an important factor in ensuring software Based on these issues, this research focuses on the implementation of Clean Architecture in Flutter-based mobile applications, using the Al-Quran application as a case study, and evaluates its maintainability level using McCall's Software Quality Model. Clean Architecture was chosen for its approach of separating business logic, data access, and user interface into structured layers. The implementation results show a maintainability level of 79%, which is rated as "good". Clean Architecture successfully supports application modularity and flexibility through the application of SOLID principles, specifically the Single Responsibility Principle and the Dependency Inversion Principle. This research provides insight into the effectiveness of implementing Clean Architecture in the development of Flutter-based mobile applications. Keywords: Android. Clean Architecture. Flutter. Maintainability. McCall Software Quality Model. Abstrak Pengembangan aplikasi mobile berbasis Flutter semakin populer karena efisiensi pengembangan multi-platform yang ditawarkannya. Namun, maintainability menjadi tantangan utama yang harus diatasi dalam pengembangan aplikasi. Biaya pemeliharaan perangkat lunak diperkirakan menyumbang hingga 79%-90% dari total biaya pengembangan aplikasi, sehingga maintainability menjadi faktor penting dalam memastikan kualitas perangkat lunak. Berdasarkan permasalahan tersebut, penelitian ini berfokus pada implementasi Clean Architecture pada aplikasi mobile berbasis Flutter, dengan aplikasi Al-Quran sebagai studi kasus, serta mengevaluasi tingkat maintainability-nya menggunakan McCall's Software Quality Model. Clean Architecture dipilih karena pendekatannya yang memisahkan logika bisnis, akses data, dan antarmuka pengguna ke dalam lapisan-lapisan yang Hasil implementasi menunjukkan tingkat maintainability sebesar 79%, yang dikategorikan "baik". Clean Architecture berhasil mendukung modularitas dan fleksibilitas aplikasi melalui penerapan prinsip SOLID, khususnya Single Responsibility Principle dan Dependency Inversion Principle. Penelitian ini memberikan wawasan tentang efektivitas penerapan Clean Architecture dalam pengembangan aplikasi mobile berbasis Flutter. Kata kunci: Android. Clean Architecture. Flutter. Maintainability. McCall Software Quality Model. PENDAHULUAN Perkembangan teknologi yang pesat telah membawa perubahan signifikan dalam pengembangan perangkat lunak, termasuk aplikasi mobile yang kini menjadi salah satu alat utama dalam berbagai sektor kehidupan. Aplikasi mobile, yang dirancang untuk perangkat seperti smartphone dan tablet, kini menjadi solusi untuk meningkatkan efisiensi dan produktivitas pengguna (Ikhwan dkk. , 2. Di Indonesia, penggunaan aplikasi berbasis Android mencapai 92,03% pada Februari 2021, dengan lebih dari 2,9 juta aplikasi terdaftar di Google Play Store (Badrudduja & Putra, 2. , yang https://doi. org/10. 35145/joisie. JOISIE licensed under a Creative Commons Attribution-ShareAlike 4. 0 International License (CC BY-SA 4. 370 | Jurnal JOISIE. Volume 8. Nomor 2. Desember 2024 menunjukkan adanya persaingan sengit antar pengembang untuk menciptakan aplikasi yang lebih baik dan lebih efisien. Salah satu platform pengembangan aplikasi yang sedang populer adalah Flutter, yang memungkinkan pengembang untuk membuat aplikasi multi-platform (Android, iOS, dan We. dengan satu kode sumber (Bhagat, 2022. Muslim dkk. , 2. Flutter menawarkan kemudahan dalam pengembangan aplikasi, mengurangi kebutuhan pengkodean ganda untuk berbagai platform, dan memungkinkan proses pengembangan yang lebih cepat dan efisien (Widiarta dkk. , 2. Namun, meskipun pengembangan aplikasi semakin cepat, tantangan utama yang dihadapi adalah Biaya pemeliharaan perangkat lunak diperkirakan menyumbang hingga 79%-90% dari total biaya pengembangan (Sondha dkk. , 2. , yang menunjukkan pentingnya merancang aplikasi dengan arsitektur yang memungkinkan pemeliharaan yang mudah. Semakin tinggi maintainability dari suatu aplikasi, maka semakin mudah pula proses pemeliharaannya sehingga biaya, usaha dan waktu yang dibutuhkan akan semakin berkurang (Deta Aditya dkk. , 2022. Laksono , 2. Clean Architecture adalah salah satu pendekatan yang dapat meningkatkan maintainability, karena menyediakan struktur yang jelas untuk aplikasi, memungkinkan perubahan dan pembaruan yang lebih mudah tanpa memengaruhi bagian lain dari sistem (Subagio & Muttaqin. Dalam konteks ini, penerapan Clean Architecture pada aplikasi berbasis Flutter dapat memberikan solusi yang efektif untuk masalah pemeliharaan aplikasi. Clean Architecture pertama kali diperkenalkan oleh Robert C. Martin (Anhar dkk. , 2. Berfokus pada pemisahan kode aplikasi menjadi beberapa lapisan, yang masing-masing memiliki tanggung jawab yang jelas (Wijayanto dkk. Pendekatan ini bertujuan untuk membuat aplikasi lebih mudah dikelola, diuji, dan diperbarui tanpa mempengaruhi bagian lain dari aplikasi (Yadati, 2. Struktur ini memisahkan logika bisnis, antarmuka pengguna, dan lapisan data, sehingga mempermudah pengelolaan kode dan meminimalkan ketergantungan antar bagian aplikasi. Selain itu, untuk mencapai tingkat maintainability yang tinggi. Clean Architecture mengadopsi prinsip SOLID, yaitu lima prinsip desain perangkat lunak yang bertujuan untuk menciptakan sistem yang mudah dipahami, adaptif terhadap perubahan, dan dapat digunakan kembali (Cabral dkk. , 2. Kelima prinsip dalam SOLID adalah Single Responsibility Principle (SRP). Open/Closed Principle (OCP). Liskov Substitution Principle (LSP). Interface Segregation Principle (ISP), dan Dependency Inversion Principle (DIP) (Sanchez dkk. , 2. Penerapan prinsip SOLID dapat meningkatkan modularitas, fleksibilitas, dan keterbacaan kode, yang semuanya berkontribusi pada kemudahan pemeliharaan aplikasi (Yanakiev dkk. , 2. Penelitian yang dilakukan oleh Sinatria dkk. , dengan tujuan untuk memberikan gambaran dan panduan kepada pengembang tentang bagaimana mengorganisir aplikasi berbasis Flutter dengan pendekatan Clean Architecture. Fokus utama dari penelitian ini adalah pada pembuatan modul-modul modular dalam arsitektur aplikasi yang dapat digunakan kembali, serta implementasi prinsip SOLID untuk meningkatkan fleksibilitas dan kemudahan pengembangan aplikasi. Penelitian yang dilakukan oleh Abdillah dkk. , mengimplementasikan Clean Architecture pada aplikasi smart parking dengan fokus pada meningkatkan skalabilitas dan kemudahan Penelitian ini menekankan pada struktur arsitektur yang modular dan terorganisir untuk menghadapi perubahan kebutuhan sistem. Berdasarkan beberapa penelitian terdahulu yang telah dilakukan, belum ada penelitian yang secara spesifik mengevaluasi tingkat maintainability dari aplikasi berbasis Flutter yang menerapkan Clean Architecture menggunakan metrik kualitas perangkat lunak yang terukur. Oleh karena itu, penelitian ini bertujuan untuk mengimplementasikan Clean Architecture pada aplikasi mobile berbasis Flutter sekaligus mengevaluasi tingkat maintainability-nya menggunakan McCallAos Software Quality Model. Penelitian ini akan menggunakan aplikasi Al-Quran sebagai objek implementasi. Aplikasi ini memiliki fitur-fitur utama seperti pembacaan ayat-ayat Al-Quran, terjemahan, tafsir, dan bookmark untuk menandai ayat-ayat yang telah dibaca. Implementasi Clean Architecture pada aplikasi ini https://doi. org/10. 35145/joisie. JOISIE licensed under a Creative Commons Attribution-ShareAlike 4. 0 International License (CC BY-SA 4. Azziqra. Implementasi Clean Architecture Pada Aplikasi Mobile Al-Quran Berbasis Flutter, 344-. 371 diharapkan dapat memberikan wawasan yang lebih terukur mengenai penerapan dan efektivitas pendekatan ini dalam konteks aplikasi mobile berbasis Flutter. METODE PENELITIAN 1 KERANGKA PENELITIAN Terdapat beberapa tahapan yang telah diurutkan secara sistematis agar sesuai dengan pokok pembahasan untuk mendapatkan hasil yang optimal dalam penelitian. Tahapan penelitian dapat dilihat pada gambar 1. Gambar 1. Kerangka Penelitian Studi Literatur Studi literatur dilakukan untuk mengumpulkan dan menganalisis literatur yang relevan terkait Clean Architecture, prinsip SOLID, dan praktik terbaik dalam pengembangan aplikasi mobile. Tahap ini dapat membantu penulis memperoleh pemahaman teoritis mengenai penelitian serta membantu memahami konsep-konsep yang akan diterapkan (Rusydi & Nuryasin, 2. Perancangan Sistem Pada tahap ini, dilakukan perancangan sistem dengan pendekatan Clean Architecture. Proses ini melibatkan pembuatan struktur arsitektur berdasarkan prinsip SOLID. Perancangan ini bertujuan untuk memberikan landasan yang jelas sebelum implementasi dilakukan. Implementasi Clean Architecture Tahap ini merupakan proses inti dari penelitian, di mana Clean Architecture diterapkan pada pengembangan aplikasi mobile berbasis Flutter. Pengujian Pada tahap ini dilakukan pengujian untuk mengukur seberapa tingkat maintainability dari Pengujian maintainability dilakukan dengan menggunakan metode McCallAos Software Quality Model. 2 CLEAN ARCHITECTURE Tujuan dari pola desain Clean Architecture adalah menyediakan standar yang memungkinkan pemisahan logika bisnis dari lapisan antarmuka pengguna. Pemisahan ini bertujuan untuk memastikan bahwa perubahan pada satu lapisan tidak berdampak langsung pada lapisan lain, sehingga meningkatkan fleksibilitas dan efisiensi pemeliharaan (Yadati, 2. Gambaran dari Clean Architecture dapat dilihat pada gambar 2. Gambar 2. Diagram Clean Architecture https://doi. org/10. 35145/joisie. JOISIE licensed under a Creative Commons Attribution-ShareAlike 4. 0 International License (CC BY-SA 4. 372 | Jurnal JOISIE. Volume 8. Nomor 2. Desember 2024 Clean Architecture, yang terdiri dari domain layer, data layer, dan presentation layer. Model arsitektur berlapis seperti ini memungkinkan aplikasi mobile yang dikembangkan bersifat frameworkagnostic, yaitu logika bisnisnya tidak terikat pada framework eksternal tertentu, sehingga mempermudah proses pemeliharaan dan pengembangan di masa depan (Wijayanto dkk. , 2. Penerapan Clean Architecture juga mengikuti prinsip-prinsip SOLID. SOLID meliputi lima prinsip utama, yaitu: Single Responsibility Principle (SRP) memastikan setiap kelas atau modul memiliki satu tanggung jawab utama sehingga setiap komponen akan memiliki peran yang jelas dan spesifik (Sinatria dkk. , 2. Open Closed Principle (OCP) yaitu kelas atau modul sebaiknya terbuka untuk ekstensi namun tertutup untuk modifikasi, sehingga kelas bisa diperluas tanpa harus memodifikasi kode yang ada (Cabral dkk. , 2. Liskov Substitution Principle (LSP) menyatakan bahwa objek dari kelas turunan harus dapat menggantikan objek dari kelas induknya tanpa menyebabkan ketidaksesuaian atau perubahan pada keabsahan program (Ramachandrappa, 2. Interface Segregation Principle (ISP) menekankan bahwa jika sebuah fungsionalitas akan dimanfaatkan oleh berbagai kelas, maka perlu dibuat interface yang spesifik untuk setiap kelas. Tujuan dari prinsip ini adalah mencegah terjadinya kompilasi ulang yang tidak diperlukan dan mengurangi ketergantungan antar komponen (Sanchez dkk. , 2. Dependency Inversion Principle (DIP) mengurangi ketergantungan pada kelas konkret dengan berfokus pada abstraksi (Sinatria dkk. , 2. Penerapkan prinsip-prinsip tersebut dapat meningkatkan keterbacaan, mengurangi kompleksitas kode, mudah untuk di uji, kode dapat digunakan kembali, dan mengurangi ketergantungan yang tinggi antar kode serta memungkinkan pengembangan dan pemeliharaan aplikasi yang lebih efektif dan efisien (Oktafiani & Saputra, 2. 3 MCCALLAoS SOFTWARE QUALITY MODEL McCallAos Software Quality Model menyediakan pendekatan yang terstruktur untuk mengevaluasi dan meningkatkan kualitas perangkat lunak. Model ini memiliki tiga aspek utama: Product Operation, yang mencakup sifat-sifat operasional perangkat lunak. Product Revision, yang menyoroti kemampuan perangkat lunak untuk menghadapi perubahan. dan Product Transition, yang menggambarkan kemampuan perangkat lunak untuk beradaptasi dengan lingkungan baru (Salamudin , 2. Aspek maintainability sendiri termasuk kedalam Product Revision (Mulatsari dkk. , 2. Quality metric pada McCallAos Software Quality Model dapat dihitung menggunakan rumus . ya= ya1 . ycA1 ya2 . ycA2 U yaycu . ycAycu ya1 ya2 U yaycu = 1 0 OycA O. 0 Oya O1 Quality Metric (F) dihitung dengan menjumlahkan hasil perkalian setiap quality factor (M) dengan bobotnya (C). Total bobot pada quality metric berkisar antara 0 hingga 1, dengan jumlah keseluruhan bobot adalah 1. Setiap quality metric memiliki quality factor tertentu yang memengaruhi Nilai masing-masing quality factor diperoleh dengan membandingkan jumlah positive case terhadap test case yang relevan. Dalam McCallAos Software Quality Model, kualitas maintainability ditentukan oleh beberapa faktor, yaitu simplicity, conciseness, consistency, instrumentation, modularity, dan self-documentation. (Muthmainnah & Putro, 2. Sondha dkk. menjelaskan bahwa conciseness mengukur rasio antara jumlah total kelas dan Logical Lines of Code (LLOC) dalam sebuah aplikasi. Modularity adalah quality factor yang menilai tingkat ketergantungan antar komponen untuk menentukan apakah suatu kelas memiliki tingkat coupling yang tinggi atau rendah. Self-documentation mengacu pada sejauh mana kode sumber menyediakan dokumentasi yang jelas, sedangkan simplicity merujuk pada kemudahan dalam memahami program. Kedua faktor ini, self-documentation dan simplicity, diukur berdasarkan nilai https://doi. org/10. 35145/joisie. JOISIE licensed under a Creative Commons Attribution-ShareAlike 4. 0 International License (CC BY-SA 4. Azziqra. Implementasi Clean Architecture Pada Aplikasi Mobile Al-Quran Berbasis Flutter, 344-. 373 clean code, yang mencakup aspek seperti konvensi penamaan, aturan kapitalisasi, dan komentar. Dalam penelitian ini, setiap quality factor untuk menghitung maintainability diberi bobot yang sama, yaitu 0,167. Total quality metric digunakan untuk mengevaluasi kelayakan aspek yang dianalisis, dengan kategori yang dibagi menjadi lima berdasarkan rentang persentase. Pembagian kategori kelayakan sesuai rentang persentase dapat dilihat pada tabel 1. Tabel 1. Kategori kelayakan (Hanes dkk. , 2. No. Kategori Sangat Baik Baik Cukup Baik Tidak Baik Sangat Tidak Baik Presentase 81% - 100% 61% - 80% 41% - 80% 21% - 40% < 21% HASIL DAN PEMBAHASAN 1 PERANCANGAN SISTEM Tahapan perancangan sistem ini bertujuan untuk memisahkan logika bisnis dari tampilan aplikasi dengan menerapkan Clean Architecture. Desain sistem mencakup tiga layer utama yaitu domain layer, data layer, dan presentation layer. Struktur perancangan divisualisasikan pada gambar 3. Gambar 3. Diagram rancangan arsitektur sistem berdasarkan Clean Architecture dan prinsip SOLID Diagram rancangan sistem pada gambar 3 menunjukkan penerapan Clean Architecture. Tujuan utama dari desain tersebut adalah untuk mencapai pemisahan tanggung jawab yang jelas (Wijayanto , 2. Domain layer mencakup logika inti aplikasi yang meliputi entities, use cases, dan interface Entities merepresentasikan objek utama dalam domain, sedangkan use cases bertanggung jawab untuk mengatur alur bisnis aplikasi. Pada lapisan ini, prinsip Single Responsibility Principle (SRP) diterapkan untuk memastikan bahwa setiap kelas hanya memiliki satu tanggung jawab utama. Penerapan Open/Close Principle (OCP) memungkinkan penambahan fungsionalitas baru tanpa harus mengubah kode yang telah ada. Sementara itu, penerapan Dependency Inversion Principle (DIP) memastikan bahwa lapisan ini bergantung pada abstraksi, bukan implementasi. GetIt digunakan https://doi. org/10. 35145/joisie. JOISIE licensed under a Creative Commons Attribution-ShareAlike 4. 0 International License (CC BY-SA 4. 374 | Jurnal JOISIE. Volume 8. Nomor 2. Desember 2024 sebagai dependency injection untuk menyuntikkan dependensi antar lapisan, memungkinkan objek seperti use cases atau repository diakses tanpa perlu mengetahui detail implementasinya. Data layer berfungsi untuk mengelola akses data dari sumber lokal maupun eksternal. Lapisan ini terdiri dari repositories, models, dan sources. Repositories berperan sebagai penghubung antara domain layer dan data source, sementara models bertugas memetakan data ke dalam format yang sesuai dengan kebutuhan domain. Penerapan Interface Segregation Principle (ISP) memastikan bahwa interface dipecah menjadi bagian yang lebih spesifik untuk menghindari ketergantungan yang tidak perlu. Selain itu. Liskov Substitution Principle (LSP) diterapkan untuk memastikan bahwa setiap subclass dapat menggantikan superclass tanpa memengaruhi fungsi aplikasi. Presentation layer menangani penyajian data kepada pengguna dengan menggunakan bloc sebagai state management utama. Bloc berfungsi sebagai mediator antara logika bisnis dan antarmuka pengguna, memastikan bahwa perubahan data ditampilkan secara reaktif. Core layer menyediakan fungsi pendukung seperti utils, services, dan error handling yang digunakan bersama oleh berbagai 2 IMPLEMENTASI Pada tahap implementasi, penelitian ini menerapkan Clean Architecture dalam pengembangan aplikasi Al-Quran berbasis Flutter. Struktur Clean Architecture yang diterapkan terdiri dari dua komponen, yaitu core dan features, seperti yang ditampilkan pada gambar 4. Gambar 4. Struktur folder Clean Architecture Lapisan core bertindak sebagai penghubung antara inti aplikasi, yang berisi logika bisnis dan entitas, dengan lingkungan eksternal. Tujuan utama dari lapisan core adalah untuk memastikan modularitas dan fleksibilitas sistem, sehingga pembaruan atau penggantian dependensi eksternal dapat dilakukan tanpa memengaruhi inti aplikasi. Sementara itu, lapisan features bertanggung jawab mengelola dan memisahkan fitur-fitur aplikasi menjadi beberapa bagian yang lebih kecil sesuai fungsi masing-masing. Pemisahan ini bertujuan untuk membagi basis kode menjadi komponen-komponen yang terorganisir, modular, dan sesuai dengan kebutuhan setiap fitur aplikasi. Setiap fitur dalam lapisan ini terdiri dari tiga lapisan utama, yaitu domain layer, data layer, dan presentation layer, yang dirancang berdasarkan prinsip Clean Architecture. Domain Layer Untuk memastikan aplikasi yang dapat dipelihara dan dikembangkan secara skalabel, keberadaan domain layer menjadi sangat penting. Dengan memusatkan logika bisnis utama pada lapisan ini, pengembang memiliki fleksibilitas untuk menyesuaikan dan meningkatkan fungsi aplikasi tanpa mempengaruhi komponen sistem lainnya. https://doi. org/10. 35145/joisie. JOISIE licensed under a Creative Commons Attribution-ShareAlike 4. 0 International License (CC BY-SA 4. Azziqra. Implementasi Clean Architecture Pada Aplikasi Mobile Al-Quran Berbasis Flutter, 344-. 375 Gambar 5. Struktur domain layer Berdasarkan gambar 5, domain layer terdiri dari usecases, repositories dan entities. Entities merepresentasikan objek bisnis inti seperti Auquran_surah. dartAy, yang bertugas memodelkan dan mengelola data utama yang terkait dengan aplikasi. Sementara itu, repositories seperti Ausurah_repository. dartAy bertindak sebagai penghubung antara domain layer dan data layer, menyediakan metode-metode untuk mengakses dan memanipulasi data yang diperlukan. Komponen usecases merepresentasikan operasi atau tindakan bisnis spesifik, seperti Auget_all_surah. dartAy. Auget_last_read. dartAy,Auget_surah_by_id. dartAydan Auinsert_last_readAy, yang dirancang untuk menjalankan alur kerja bisnis tertentu secara efisien. Pada layer ini dapat diterapkan dua prinsip SOLID yaitu single responsibility principle (SRP) dan dependency inversion principle (DIP). Contoh implementasi dari prinsip-prinsip tersebut dapat dilihat pada gambar 6. Gambar 6. Class SurahRepository Pada gambar 6, terdapat kelas AuSurahRepositoryAy yang merupakan sebuah kelas abstrak yang mendefinisikan berbagai metode untuk interaksi dengan data. Kelas ini berfungsi sebagai antarmuka yang mendefinisikan kontrak umum yang terkait pada fitur Surah tanpa memberikan detail Kemudian, kelas tersebut akan diimplementasikan oleh kelas yang ada pada Gambar 7. Class GetAllSurah Salah satunya adalah kelas AuGetAllSurahAy yang bergantung pada abstraksi AuSurahRepositoryAy untuk menampilkan data surah, bukan pada implementasi konkret dari AuSurahRepositoryAy. Ini merupakan contoh penerapan Dependency Inversion Principle (DIP). Untuk mendukung penerapannya digunakan library GetIt untuk dependency injection. Dalam hal ini. AuSurahRepositoryImplAy didaftarkan pada GetIt sebagai implementasi dari AuSurahRepositoryAy, sehingga AuGetAllSurahAy dapat memperoleh abstraksinya secara otomatis. Contoh kode pendaftaran dapat dilihat pada gambar 8. https://doi. org/10. 35145/joisie. JOISIE licensed under a Creative Commons Attribution-ShareAlike 4. 0 International License (CC BY-SA 4. 376 | Jurnal JOISIE. Volume 8. Nomor 2. Desember 2024 Gambar 8. Pendaftaran dependency menggunakan GetIt Selain itu, terdapat implementasi dari single responsibility principle (SRP) yang terdapat pada usecases, dapat dilihat pada pada gambar 5. Masing-masing usecase memiliki tanggung jawab tunggal untuk menyelesaikan satu alur kerja bisnis yang spesifik. 2 Data Layer Data layer memiliki peran utama dalam pengelolaan sumber data, repository, dan model dalam arsitektur aplikasi. Lapisan ini berperan sebagai penghubung antara domain aplikasi dengan berbagai sumber data eksternal, serta memfasilitasi akses dan manipulasi data. Gambar 9. Struktur data layer Berdasarkan Gambar 9, struktur data layer terdiri atas tiga bagian utama: datasources, models, dan repositories. Datasources, seperti file Ausurah_local_data_source. dartAy, bertugas mengambil dan menyimpan data dari sumber lokal dalam format aslinya. Models, seperti file Auquran_surah_model. dartAy, merepresentasikan data dari datasource dan mengonversinya ke format yang siap digunakan di domain layer. Repositories, seperti file Ausurah_repository_impl. dartAy, menghubungkan data layer dan domain layer dengan mengambil data dari datasource, mengubahnya ke model yang sesuai, dan menyediakannya untuk usecase. Pada data layer, tiga prinsip SOLID dapat diterapkan, yaitu Single Responsibility Principle (SRP). Open/Closed Principle (OCP), dan Liskov Substitution Principle (LSP). Contoh penerapannya dalam sebuah aplikasi dapat dilihat pada gambar 10, 11, dan 12. Gambar 10. Implementasi OCP pada data layer Pada gambar 10, terdapat kelas AuSurahLocalDataSourceAy yang merupakan sebuah kelas abstrak yang mendefinisikan metode untuk mendapatkan data Surah dari sumber lokal. Kelas ini mengikuti open/closed principle (OCP). Dengan menggunakan kelas abstrak ini, fungsionalitas kelas dapat diperluas dengan membuat kelas turunan yang mengimplementasikan metode yang didefinisikan tanpa harus mengubah kelas AuSurahLocalDataSourceAy itu sendiri. https://doi. org/10. 35145/joisie. JOISIE licensed under a Creative Commons Attribution-ShareAlike 4. 0 International License (CC BY-SA 4. Azziqra. Implementasi Clean Architecture Pada Aplikasi Mobile Al-Quran Berbasis Flutter, 344-. 377 Gambar 11. Implementasi SRP pada data layer Pada gambar 11. AuSurahLocalDataSourceImplAy mengimplementasi AuSurahLocalDataSourceAy. Kelas ini bertanggung jawab untuk membaca data Surah dari sumber lokal. Kelas ini menerapkan Single Responsibility Principle (SRP) karena hanya memiliki satu tanggung jawab utama yaitu pengelolaan data Surah dari sumber lokal. Dengan memisahkan tanggung jawab ini ke dalam kelas tersendiri, kelas tersebut fokus pada satu tugas spesifik. Pemisahan tanggung jawab ini meminimalkan kompleksitas dan membuat kode lebih terstruktur. Gambar 12. Implementasi LSP pada data layer Pada gambar 12, terdapat kelas AuSurahModelAy yang merupakan turunan dari kelas Surah. Kelas ini menerapkan Liskov Substitution Principle (LSP). Kelas SurahModel memperluas kelas Surah dengan menambahkan metode tambahan seperti AufromJsonAy dan AutoJsonAy untuk konversi data. Dengan demikian, objek AuSurahModelAy dapat digunakan di mana saja objek Surah digunakan, tanpa memerlukan perubahan pada kode yang menggunakan objek Surah. 3 Presentation Layer Presentation layer adalah lapisan dalam arsitektur aplikasi yang berfungsi sebagai antarmuka utama antara pengguna dan sistem menggunakan Bloc pattern. Gambar 13. Struktur presentation layer Berdasarkan gambar 13, presentation layer terdiri dari bloc, pages, dan widgets. Bloc bertanggung jawab atas pengelolaan state aplikasi dan logika bisnis yang terkait dengan tampilan (Munawar dkk. , 2. Arsitektur dari Bloc pattern dapat dilihat pada gambar 14. https://doi. org/10. 35145/joisie. JOISIE licensed under a Creative Commons Attribution-ShareAlike 4. 0 International License (CC BY-SA 4. 378 | Jurnal JOISIE. Volume 8. Nomor 2. Desember 2024 Gambar 14. Bloc pattern (Zulistiyan dkk. , 2. Pada bagian bloc terdiri dari tiga komponen utama, yaitu Ausurah_bloc. dartAy yang menjadi inti implementasi dari Bloc untuk fitur surah. Ausurah_event. dartAy yang mendefinisikan berbagai event yang dapat memicu perubahan state, dan Ausurah_state. dartAy yang berisi berbagai state yang dapat terjadi selama pengelolaan fitur surah. Pages merepresentasikan halaman-halaman dalam aplikasi. Sedangkan widgets adalah elemenelemen UI dasar yang digunakan untuk membangun tampilan. Setiap widget memiliki tanggung jawab tunggal untuk menampilkan satu elemen visual atau interaksi tertentu. 3 PENGUJIAN MAINTAINABILITY Pengujian dilakukan dengan menghitung nilai dari quality factor, yaitu simplicity, conciseness, consistency, instrumentation, modularity dan self-documentation. Hasil dari pengujian ini memberikan gambaran tentang tingkat maintainability pada aplikasi. Hasil pengujian dapat dilihat pada tabel 2. Tabel 2. Hasil Pengujian Tingkat Maintainability Quality Factor Conciseness Consistency Instrumentation Modularity SelfDocumentation Simplicity Positive Case dan Test Case Banyaknya Class LLOC Fitur sesuai desain Fitur yang di desain Fitur punya instrumentasi Fitur yang seharusnya punya Class yang loose coupling Banyaknya Class Class yang clean code Banyaknya Class Fungsi yang clean code Banyaknya fungsi Total Nilai 0,11 0,167 0,02 0,167 0,17 0,167 0,17 0,167 0,15 0,167 0,14 0,167 0,14 0,79 Hasil pengujian pada tabel 2 menunjukkan bahwa tingkat maintainability aplikasi mencapai 0,79 atau 79%, yang berada dalam kategori "baik" menurut skala penilaian pada tabel 1. Faktor modularity memperoleh nilai tertinggi sebesar 0,15 dari total 0,167, menunjukkan bahwa arsitektur aplikasi berhasil meminimalkan ketergantungan antar komponen. Modularitas yang baik mencerminkan keberhasilan penerapan prinsip desain seperti Single Responsibility Principle (SRP) dan Dependency Inversion Principle (DIP), yang memisahkan tanggung jawab setiap komponen dengan jelas. Sebaliknya, quality factor conciseness memiliki nilai terendah, yaitu 0,02, akibat tingginya jumlah Logical Lines of Code (LLOC) pada beberapa kelas, terutama di presentation layer. Hal ini disebabkan oleh sifat presentation layer yang cenderung menampung banyak elemen visual dan logika interaksi pengguna. Kondisi ini dapat diatasi dengan melakukan refaktorisasi kode melaui teknik seperti extract widget atau extract method, sehingga elemen-elemen UI yang berulang atau kompleks dipisahkan menjadi widget atau metode tersendiri. SIMPULAN Berdasarkan hasil pengujian maintainability, implementasi Clean Architecture pada aplikasi AlQuran berbasis Flutter dapat dinyatakan berhasil dengan tingkat maintainability mencapai 79%, yang berada dalam kategori "baik". Aplikasi yang dikembangkan berjalan dengan baik, memenuhi semua fungsionalitas utama, seperti pembacaan ayat-ayat Al-Quran, terjemahan, tafsir, dan bookmark untuk menandai ayat yang telah dibaca. Faktor modularity memberikan kontribusi tertinggi terhadap https://doi. org/10. 35145/joisie. JOISIE licensed under a Creative Commons Attribution-ShareAlike 4. 0 International License (CC BY-SA 4. Azziqra. Implementasi Clean Architecture Pada Aplikasi Mobile Al-Quran Berbasis Flutter, 344-. 379 maintainability, menegaskan bahwa prinsip Single Responsibility dan Dependency Inversion telah diterapkan dengan baik untuk memisahkan tanggung jawab setiap komponen. Namun, faktor conciseness menunjukkan nilai yang lebih rendah akibat tingginya jumlah Logical Lines of Code (LLOC) pada beberapa komponen, terutama di presentation layer. Hal ini menunjukkan bahwa meskipun aplikasi berjalan dengan baik, diperlukan upaya refaktorisasi kode untuk mengurangi kompleksitas, meningkatkan keterbacaan, dan menjaga efisiensi pengembangan di masa mendatang. Dengan hasil yang diperoleh, implementasi ini memberikan dasar yang kokoh untuk pengembangan aplikasi yang lebih baik di masa depan, meskipun perbaikan lanjutan pada aspek pengelolaan kode dan pengujian tambahan tetap diperlukan untuk menjaga kualitas perangkat lunak. DAFTAR PUSTAKA