Trong nhiều cách tiếp cận để phát triển phần mềm như các phương pháp nhanh, Thiết kế và phân tích hướng đối tượng và thiết kế hướng đối tượng, chúng tôi được khuyến khích thực hiện một cách tiếp cận lặp lại để phát triển.
Vì vậy, chúng tôi không được phép thực hiện mô hình miền của mình ngay lần đầu tiên chúng tôi bắt đầu làm việc trong dự án. Thay vào đó, khi thời gian trôi qua, chúng ta tái cấu trúc mô hình bởi vì chúng ta hiểu sâu hơn về miền vấn đề theo thời gian.
Ngoài ra, ngay cả khi chúng tôi cố gắng để có được một mô hình hoàn hảo, điều mà tôi đã bị thuyết phục là rất khó, các yêu cầu có thể thay đổi. Vì vậy, sau khi phần mềm đã được triển khai để sản xuất, người dùng cuối có thể nhận thấy rằng một yêu cầu nhất định không được hiểu hoàn toàn, hoặc tệ hơn, một số yêu cầu bị thiếu.
Vấn đề ở đây là chúng ta có thể cần phải thay đổi mô hình sau khi phần mềm đã được triển khai. Nếu điều này xảy ra, chúng tôi có một vấn đề: cơ sở dữ liệu sản xuất có dữ liệu của người dùng rất quan trọng và đã được trang bị định dạng cho mẫu cũ .
Cập nhật mã có thể là một nhiệm vụ khó khăn nếu mã không được thiết kế tốt và nếu hệ thống lớn. Nhưng nó có thể được thực hiện với thời gian, chúng tôi có các công cụ như Git giúp chúng tôi làm điều đó mà không làm hỏng phiên bản sẵn sàng sản xuất.
Mặt khác, nếu mô hình thay đổi, nếu các thuộc tính của các lớp biến mất hoặc bất cứ điều gì, cơ sở dữ liệu cũng sẽ thay đổi. Nhưng chúng tôi có một vấn đề: đã có dữ liệu ở đó không thể bị mất, dữ liệu đã được hình thành cho mô hình cũ.
Dường như một cơ sở dữ liệu quan hệ ở đây đang là rào cản ngăn chúng tôi thực hiện phát triển lặp và thậm chí cập nhật phần mềm khi người dùng cuối yêu cầu.
Một cách tiếp cận tôi đã sử dụng là mã hóa một lớp đặc biệt ánh xạ các bảng cơ sở dữ liệu cũ sang các bảng mới. Vì vậy, các lớp này chọn dữ liệu ở định dạng cũ, chuyển đổi nó sang định dạng được sử dụng bởi mô hình mới và lưu vào các bảng mới.
Cách tiếp cận này dường như không phải là cách tốt nhất. Câu hỏi của tôi ở đây là: có bất kỳ cách tiếp cận nổi tiếng và được đề xuất nào để điều hòa sự phát triển lặp lại với cơ sở dữ liệu quan hệ không?