민첩한 방법론, 도메인 중심 설계 및 객체 지향 분석 및 설계와 같은 소프트웨어 개발에 대한 많은 접근 방식에서 개발에 반복적 인 접근 방식을 사용하는 것이 좋습니다.
따라서 우리는 프로젝트에서 처음 작업을 시작할 때 도메인 모델을 완성하지 않아야합니다. 대신 시간이 지남에 따라 시간이 지남에 따라 문제 영역을 더 깊이 이해하기 때문에 모델을 리팩터링합니다.
그 외에도, 우리가 이미 완벽하다고 확신하는 완벽한 모델을 미리 만들려고해도 요구 사항이 변경 될 수 있습니다. 따라서 소프트웨어 가 프로덕션 환경에 배포 된 후 최종 사용자는 특정 요구 사항을 완전히 이해하지 못했거나 일부 요구 사항이 누락 된 것을 알 수 있습니다.
여기서 요점은 소프트웨어가 배포 된 후 모델을 변경해야 할 수도 있다는 것입니다. 이런 일이 발생하면 문제가 생깁니다. 프로덕션 데이터베이스 에는 중요하고 이미 이전 모델의 형식으로 적합한 사용자 데이터가 있습니다 .
코드가 제대로 설계되지 않았고 시스템이 큰 경우 코드 업데이트가 어려운 작업 일 수 있습니다. 그러나 시간이 지남에 따라 할 수 있습니다. Git과 같은 도구가있어 프로덕션 준비 버전을 손상시키지 않고 그렇게 할 수 있습니다.
반면, 모델이 변경되거나 클래스의 속성이 사라지거나 데이터베이스가 변경되는 경우 데이터베이스도 변경되어야합니다. 그러나 우리는 문제가 있습니다 : 이미 잃어 버릴 수없는 데이터가 있으며 이전 모델에 맞게 이미 형식화되었습니다.
여기의 관계형 데이터베이스는 최종 사용자가 필요할 때 반복 개발을 수행하고 소프트웨어를 업데이트하지 못하게하는 장벽 인 것 같습니다.
내가 이미 사용한 한 가지 접근법은 오래된 데이터베이스 테이블을 새로운 데이터베이스 테이블로 매핑하는 특수 클래스를 코딩하는 것이 었습니다. 따라서이 클래스는 이전 형식의 데이터를 선택하여 새 모델에서 사용하는 형식으로 변환 한 후 새 테이블에 저장합니다.
이 방법은 최선의 방법이 아닌 것 같습니다. 내 질문은 여기에 있습니다 : 관계형 데이터베이스와 반복 개발을 조정하기 위해 잘 알려져 있고 권장되는 접근법이 있습니까?