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.)
sumber
Jawaban:
Menanggapi artikel EF Vote of No Confidence , Tim Mallalieu menulis:
Artikel Wikipedia untuk Canonical Model merujuk hal-hal seperti Bus Layanan Perusahaan , Arsitektur Berorientasi Layanan , dan CORBA , hal-hal yang sepertinya tidak lagi dibicarakan. Mereka semua diajukan sebagai solusi untuk proliferasi data dan tantangan komunikasi perusahaan, Satu Cincin untuk Memerintah Mereka Semua. TM Apakah mereka berhasil? Atau apakah mereka jatuh karena berat badan mereka sendiri?
Anda meminta pengalaman pribadi, jadi saya akan memberikan satu. Dalam industri dirgantara kita banyak menggunakan telemetri. Salah satu tantangan dengan sistem telemetri adalah menemukan cara untuk rentang tes yang berbeda untuk berkomunikasi data uji satu sama lain dengan cara yang bermakna. Masalah itu tampaknya cukup sederhana, sampai Anda mencoba mendefinisikan kamus data dengan istilah umum.
Apa arti "ketinggian"? Apakah ketinggian di atas tanah, atau ketinggian di atas permukaan laut? Bagaimana jika Anda berbicara tentang kapal selam? Lalu dalamnya, bukan ketinggian. Bagi Angkatan Darat, kata "transmisi" memiliki arti yang berbeda ketika Anda merujuk pada antena parabola dibandingkan dengan kendaraan darat. Permukaan sayap yang menyebabkan pesawat terguling disebut "aileron" pada beberapa pesawat, dan "elevon" pada yang lain.
Itu hanya petunjuk di gunung masalah yang mengikuti. Meskipun ada standar untuk komunikasi data, setiap rentang tes berbeda, dan memiliki kebutuhan, tujuan, dan prioritas yang berbeda. Standar dapat berbeda bahkan di antara berbagai proyek pada rentang yang sama. Untuk alasan ini, rentang pengujian memahami bahwa solusi tidak akan datang dengan mengganti semuanya dengan sistem monolitik tunggal, tetapi dengan menyetujui protokol komunikasi sederhana dan menyediakan cara untuk menerjemahkan dari satu kosakata rentang ke yang lain.
Masalah yang dihadapi perusahaan besar serupa. Microsoft cenderung berpikir secara monolitik, tetapi itu karena perusahaan mereka, pada umumnya, monolitik. Segera setelah Anda perlu berkomunikasi antara perusahaan yang berbeda dengan budaya yang sangat berbeda dan cara berbisnis (atau bahkan antara departemen yang berbeda di perusahaan yang sama), Satu Cincin untuk Memerintah Mereka Semua. TM segera mulai rusak.
sumber