데이터 모델링의 문제점(일반적으로 사용되는)

알렉스 블로그이미지
모든 성숙한 MVC 애플리케이션에는 통제할 수 없을 정도로 성장한 하나의 모델이 있습니다. 테이블에는 20개의 열이 있습니다. 시스템 정보와 함께 사용자 기본 설정이 저장되어 있습니다. 이메일 알림을 보내고 다른 모델을 데이터베이스에 기록합니다. 모델에는 너무 많은 애플리케이션 로직이 포함되어 있으므로 새로운 기능이 이를 거쳐야 할 가능성이 높습니다. 개발자들이 열 때마다 신음소리를 내는 클래스입니다.
우리가 어떻게 여기있는 거지?
웹 애플리케이션은 일반적으로 단일 유형의 데이터를 표시하는 단일 목적으로 시작됩니다. 기사 온라인 저널 또는 의류아이템 패션 소매업체를 위한 것입니다. MVC 실무자가 제품 화이트보드 세션에서 개념을 가져와 이를 데이터베이스 모델로 직접 변환하는 것이 일반적입니다. 따라서 우리는 애플리케이션의 중심 개념을 나타내는 데이터베이스 모델로 시작하고 더 많은 비즈니스 요구 사항이 등장함에 따라 이를 수용하는 가장 저렴한 방법은 기존 모델에 열을 추가하는 것입니다. 시간이 지남에 따라 이것을 수행하면 결국 신 개체.
처음부터 문제는 제품 수준에서 스케치한 캐주얼하고 느슨한 개념을 코드베이스에 넣는 것이었습니다. 소프트웨어 엔지니어는 사람들이 일상 생활과 사고에서 사용하는 개념이 매우 부정확하고 암묵적인 가정으로 가득 차 있다는 것을 잘 알고 있어야 합니다. 암시적 가정을 강조하는 것은 소프트웨어 엔지니어의 주요 기여인 경우가 많으므로 이러한 개념을 제품 수준에서 가져와 코드에 포함시키는 것은 놀라운 일입니다. 기존 클래스에 명확한 논리를 적용해야 하는 숨겨진 엣지 케이스를 요구하는 것뿐입니다.
의 개념 민속심리학 여기에서 빛을 발하고 있습니다. 민속 심리학은 동기를 추론하고 행동을 예측하는 데 사용하는 다른 인간의 작동 방식에 대해 사람들이 가지고 있는 타고난, 느슨하게 지정된 이론을 말합니다. 이러한 "민간" 이론은 일상적인 인간 생활의 맥락에서 충분히 잘 작동하지만 과학적으로 엄격하지 않으며 맹점을 포함합니다. 마찬가지로 사람들은 소프트웨어 비즈니스에서 "민속 객체 모델"을 활용합니다. 이는 사람들이 소프트웨어를 다른 사람과 논의하기 위해 구성하는 비공식적 개념입니다. 즉, 제품 관리자가 소프트웨어 엔지니어와 사용하는 단어이며 상자는 화이트보드에 그려져 있습니다. 그들은 해석에 관대할 수 있지만 코드로 공식화되면 무너질 수 있는 다른 인간과 개념을 논의할 때 충분히 잘 작동합니다. 이러한 개념은 제품 기능을 구성하는 유용한 출발점이지만 OO 관점에서는 클래스로 사용하기에는 너무 광범위합니다. 그들은 문제 영역의 많은 부분을 암묵적으로 포함하기 때문에 논리를 축적하는 경향이 있습니다.
코딩을 배울 때 사람들이 극복해야 하는 첫 번째 장애물은 자신의 생각을 알고리즘의 단계로 명시적으로 공식화하는 것입니다. 숙련된 소프트웨어 엔지니어는 민속 개체 모델을 가져와 클래스로 사용할 수 있는 명시적 구성 요소로 분해해야 합니다. . 제품 도메인에서는 광범위한 "사용자" 개념으로 시작할 수 있지만 더 자세히 살펴보면 청구 기본 설정, 현재 상태 또는 알림 설정과 같이 별도의 클래스로 제공하는 것이 더 나은 다양한 논리 부분을 발견하게 됩니다. 이들 각각에는 제품 요구 사항을 충족하기 위한 자체 논리가 필요하며, 논리를 위한 공간을 만들기 위해 이들을 분리하지 않으면 부풀어오르게 됩니다.
사람들은 종종 데이터 모델링이 비즈니스 개념을 소프트웨어로 인코딩하는 것이라고 생각하지만 실제로는 모델 클래스를 시스템을 구성하는 도구로 사용하는 것입니다. 대규모 모델이 각각 도메인 로직의 특정 부분을 처리하는 구성 요소로 분할될 때 코드베이스가 더 잘 제공되는 경우가 많습니다.

저자

  • 애덤 매켄지

    CTO로서 Adam은 HPC 및 고객 성공 팀을 관리하는 책임을 맡고 있습니다. Adam은 Boeing에서 경력을 시작하여 787년 동안 XNUMX을 작업하면서 구조 및 소프트웨어 엔지니어링 프로젝트를 관리하고 날개를 설계, 분석 및 최적화했습니다. Adam은 오레곤 주립대학교에서 우등으로 기계공학 학사학위를 취득했습니다.

비슷한 게시물