Dalam banyak pendekatan untuk pengembangan perangkat lunak seperti metodologi gesit, Desain Berbasis Domain dan Analisis dan Desain Berorientasi Objek, kami didorong untuk mengambil satu pendekatan berulang untuk pengembangan.
Jadi kita tidak seharusnya menyelesaikan model domain dengan benar saat pertama kali kita mulai bekerja di proyek. Alih-alih, seiring berjalannya waktu kami memperbaiki model karena kami memperoleh pemahaman yang lebih dalam tentang domain masalah dengan waktu.
Terlepas dari itu, bahkan jika kita mencoba untuk mendapatkan model yang sempurna dimuka, yang saya sudah yakin sangat sulit, persyaratan dapat berubah. Jadi setelah perangkat lunak telah digunakan untuk produksi, pengguna akhir mungkin memperhatikan bahwa persyaratan tertentu tidak sepenuhnya dipahami, atau lebih buruk, beberapa persyaratan hilang.
Intinya di sini adalah bahwa kita mungkin akhirnya perlu mengubah model setelah perangkat lunak telah dikerahkan. Jika ini terjadi, kami memiliki masalah: basis data produksi memiliki data pengguna yang penting dan sudah dipasang dalam format untuk model lama .
Memperbarui kode mungkin merupakan tugas yang sulit jika kode tersebut tidak dirancang dengan baik dan jika sistemnya besar. Tapi itu bisa dilakukan dengan waktu, kami memiliki alat seperti Git yang membantu kami melakukannya tanpa merusak versi siap produksi.
Di sisi lain, jika model berubah, jika properti kelas hilang atau apa pun, database juga harus berubah. Tapi kami punya masalah: sudah ada data di sana yang tidak bisa hilang, yang sudah diformulasikan untuk model lama.
Tampaknya basis data relasional di sini menjadi penghalang yang mencegah kami melakukan pengembangan berulang dan bahkan memperbarui perangkat lunak saat dibutuhkan oleh pengguna akhir.
Satu pendekatan yang sudah saya gunakan adalah untuk kode kelas khusus yang memetakan tabel database lama ke yang baru. Jadi kelas-kelas ini mengambil data dalam format lama, mengonversinya ke format yang digunakan oleh model baru, dan menyimpan ke tabel baru.
Pendekatan ini tampaknya bukan yang terbaik. Pertanyaan saya di sini adalah: apakah ada pendekatan yang terkenal dan direkomendasikan untuk merekonsiliasi pengembangan berulang dengan database relasional?