Clean Architecture
Clean architecture adalah filosofi desain perangkat lunak yang memisahkan elemen-elemen desain ke dalam tingkat cincin. Tujuan penting dari clean architecture adalah memberikan pengembang cara untuk mengorganisir kode sedemikian rupa sehingga dapat mengenkapsulasi logika bisnis namun memisahkannya dari mekanisme pengiriman.
Aturan utama dari clean architecture adalah bahwa dependensi kode hanya dapat bergerak dari tingkat luar ke dalam. Kode pada lapisan dalam tidak boleh mengetahui fungsi pada lapisan luar. Variabel, fungsi, dan kelas (entitas apa pun) yang ada di lapisan luar tidak dapat disebutkan di lapisan yang lebih dalam. Disarankan agar format data juga tetap terpisah antara tingkat-tingkat tersebut.
Clean architecture diciptakan oleh Robert C. Martin dan dipromosikan di blognya, Uncle Bob. Seperti filosofi desain perangkat lunak lainnya, clean architecture berusaha memberikan metodologi yang efektif biaya yang memudahkan pengembangan kode berkualitas yang akan berkinerja lebih baik, lebih mudah untuk diubah, dan memiliki lebih sedikit dependensi.
Secara visual, tingkat-tingkat clean architecture diorganisir ke dalam sejumlah cincin yang tidak ditentukan. Tingkat luar dari cincin-cincin tersebut adalah mekanisme tingkat bawah dan tingkat dalam yang lebih tinggi berisi kebijakan dan Entitas.