Çevik metodolojiler, Etki Alanına Dayalı Tasarım ve Nesneye Dayalı Analiz ve Tasarım gibi yazılım geliştirmeye yönelik birçok yaklaşımda, geliştirmeye tek bir yinelemeli yaklaşım benimsememiz teşvik edilir.
Bu yüzden, projede ilk çalışmaya başladığımızda alan modelimizi doğru bir şekilde yapmamız gerekmiyor. Bunun yerine, zaman geçtikçe modeli yeniden düzenliyoruz çünkü sorunlu alanı zamanla daha iyi anlıyoruz.
Bunun dışında, zaten çok ikna olduğum mükemmel bir model almaya çalışsak bile, gereksinimler değişebilir. Yazılım Yani sonra gelmiştir üretime dağıtıldıktan, son kullanıcılar belli bir gereklilik tamamen anlaşılmamış olduğunu fark edebilirsiniz, ya da daha kötüsü, bazı gereklilik eksikti.
Buradaki nokta, yazılım dağıtıldıktan sonra modeli değiştirmemiz gerekebileceğidir. Bu durumda bir sorunumuz vardır: üretim veritabanında , önemli olan ve eski modelin biçimine zaten yerleştirilmiş olan kullanıcı verileri bulunur .
Kod iyi tasarlanmamışsa ve sistem büyükse kodu güncellemek zor olabilir. Ancak zamanla yapılabilir, Git gibi üretime hazır sürüme zarar vermeden bunu yapmamıza yardımcı olan araçlarımız var.
Öte yandan, model değişirse, sınıfların özellikleri kaybolursa ya da her neyse, veritabanı da değişmelidir. Ama bir sorunumuz var: orada eski model için zaten oluşturulmuş, kaybolamayacak veriler var.
Buradaki ilişkisel bir veritabanı, son kullanıcılar tarafından istendiğinde yinelemeli geliştirme yapmamızı ve hatta yazılımı güncellememizi engelleyen bir engel gibi görünüyor.
Daha önce kullandığım bir yaklaşım, eski veritabanı tablolarını yenileriyle eşleştiren özel bir sınıfı kodlamaktı. Bu sınıflar verileri eski biçimde seçer, yeni model tarafından kullanılan formata dönüştürür ve yeni tablolara kaydeder.
Bu yaklaşım en iyisi gibi görünmüyor. Buradaki sorum şudur: İlişkisel veritabanlarıyla yinelemeli gelişimi uzlaştırmak için iyi bilinen ve önerilen yaklaşımlar var mı?