Во многих подходах к разработке программного обеспечения, таких как гибкие методологии, доменно-ориентированное проектирование и объектно-ориентированный анализ и проектирование, нам предлагается использовать один итеративный подход к разработке.
Таким образом, мы не должны делать нашу модель предметной области в первый раз, когда мы начнем работать в проекте. Вместо этого, со временем мы проводим рефакторинг модели, потому что со временем мы глубже понимаем проблемную область.
Кроме того, даже если мы попытаемся получить идеальную модель заранее, что, как я уже убежден, очень сложно, требования могут измениться. Таким образом , после того , как программное обеспечение было развернуто на производство, конечные пользователи могли заметить , что определенное требование не было полностью, или еще хуже, некоторые требования не было.
Дело в том, что нам может понадобиться изменить модель после развертывания программного обеспечения. Если это происходит, у нас возникает проблема: производственная база данных содержит данные пользователя, которые важны и уже соответствуют формату старой модели .
Обновление кода может быть сложной задачей, если код не разработан должным образом и если система большая. Но это можно сделать со временем, у нас есть такие инструменты, как Git, которые помогают нам делать это, не повреждая готовую версию.
С другой стороны, если модель изменяется, если свойства классов исчезают или что-то еще, база данных также должна измениться. Но у нас есть проблема: там уже есть данные, которые нельзя потерять, которые уже отформатированы для старой модели.
Кажется, что реляционная база данных здесь является барьером, мешающим нам выполнять итеративную разработку и даже обновлять программное обеспечение, когда этого требуют конечные пользователи.
Один из подходов, который я уже использовал, заключался в кодировании специального класса, который отображает старые таблицы базы данных в новые. Таким образом, эти классы выбирают данные в старом формате, преобразуют их в формат, используемый новой моделью, и сохраняют в новые таблицы.
Этот подход, кажется, не самый лучший. Мой вопрос здесь: есть ли известные и рекомендуемые подходы для согласования итеративной разработки с реляционными базами данных?