Memperluas jawaban Kilian Foth, arah layering ini sesuai dengan arah di mana manusia mengeksplorasi suatu sistem.
Bayangkan Anda adalah pengembang baru yang ditugasi memperbaiki bug di sistem berlapis.
Bug biasanya ketidakcocokan antara apa yang dibutuhkan pelanggan dan apa yang ia dapatkan. Ketika pelanggan berkomunikasi dengan sistem melalui UI, dan mendapatkan hasil melalui UI (UI secara harfiah berarti 'antarmuka pengguna'), bug dilaporkan dalam hal UI juga. Jadi, sebagai pengembang, Anda tidak punya banyak pilihan selain mulai melihat UI juga, untuk mencari tahu apa yang terjadi.
Itulah mengapa diperlukan koneksi lapisan atas-bawah. Sekarang, mengapa kita tidak memiliki koneksi yang berjalan dua arah?
Nah, Anda punya tiga skenario bagaimana bug itu bisa terjadi.
Itu bisa terjadi dalam kode UI itu sendiri, dan dilokalkan di sana. Ini mudah, Anda hanya perlu menemukan tempat dan memperbaikinya.
Itu bisa terjadi di bagian lain dari sistem sebagai hasil dari panggilan yang dilakukan dari UI. Yang cukup sulit, Anda melacak pohon panggilan, menemukan tempat di mana kesalahan terjadi, dan memperbaikinya.
Dan itu bisa terjadi sebagai akibat dari panggilan KE kode UI Anda. Yang sulit, Anda harus menangkap panggilan, menemukan sumbernya, lalu mencari tahu di mana kesalahan terjadi. Mengingat titik yang Anda mulai terletak jauh di dalam cabang tunggal dari pohon panggilan, DAN Anda harus menemukan pohon panggilan yang benar terlebih dahulu, mungkin ada beberapa panggilan ke dalam kode UI, Anda memiliki debugging yang cocok untuk Anda.
Untuk menghilangkan kasus tersulit sebanyak mungkin, dependensi melingkar sangat tidak disarankan, lapisan terhubung sebagian besar dengan cara top-down. Bahkan ketika koneksi dengan cara lain diperlukan, biasanya terbatas dan didefinisikan dengan jelas. Misalnya, bahkan dengan panggilan balik, yang merupakan semacam koneksi balik, kode yang dipanggil dalam panggilan balik biasanya memberikan panggilan balik ini di tempat pertama, menerapkan semacam "keikutsertaan" untuk koneksi balik, dan membatasi dampaknya pada pemahaman suatu sistem.
Layering adalah alat, dan terutama ditujukan untuk pengembang yang mendukung sistem yang ada. Koneksi antar lapisan juga mencerminkan hal itu.