Gagasan "kanonik" meresap dalam perangkat lunak; pola-pola seperti Canonical Model , Canonical Schema , Canonical Data Model dan sebagainya, tampaknya muncul lagi dan lagi dalam pengembangan.
Seperti banyak pengembang, saya sering mengikuti, tanpa kritik, kearifan konvensional bahwa Anda memerlukan model kanonik, jika tidak, Anda akan menghadapi ledakan kombinasi pembuat peta dan penerjemah. Atau setidaknya, saya biasa melakukannya sampai beberapa tahun yang lalu ketika saya pertama kali membaca EF Vote of No Confidence :
Hipotesis yang pernah mendukung pengejaran model data kanonik tidak dan tidak dapat memasukkan faktor-faktor yang akan ditemukan setelah ide tersebut dipraktikkan. Kami telah menemukan, selama bertahun-tahun coba-coba, bahwa menggunakan model terpisah untuk setiap konteks individu di mana model data kanonik dapat digunakan adalah pendekatan yang paling kompleks, merupakan pendekatan yang paling murah, dan yang mengarah pada kemampuan pemeliharaan dan ekstensibilitas yang lebih besar. aplikasi dan titik akhir menggunakan model kontekstual, dan ini merupakan pendekatan yang tidak mendorong entropi perangkat lunak yang dilakukan oleh model kanonik.
Esai tidak menyajikan bukti apa pun untuk mendukung klaimnya, tetapi membuat saya mempertanyakan pendekatan CDM cukup lama untuk mencoba alternatifnya, dan perangkat lunak yang dihasilkan tidak meledak, secara harfiah atau kiasan. Tapi itu tidak berarti banyak terisolasi; Aku bisa saja beruntung.
Jadi saya bertanya-tanya, apakah ada penelitian serius yang dilakukan mengenai efek praktis jangka panjang dari memiliki model kanonik vs model kontekstual dalam sistem perangkat lunak atau arsitektur?
Atau, jika terlalu dini untuk menanyakan hal itu, apakah ada pengembang / arsitek menulis tentang pengalaman pribadi beralih dari CDM ke model kontekstual independen, atau sebaliknya, dan apa efek praktis pada hal-hal seperti produktivitas, kompleksitas, atau keandalan?
Bagaimana dengan perbedaan pada tingkat yang berbeda, yaitu menggunakan model yang sama di satu aplikasi vs. menggunakannya di seluruh sistem aplikasi atau seluruh perusahaan?
(Tolong hanya fakta; cerita perang disambut tetapi tidak ada spekulasi.)