엔티티 관계 모델링 또는 객체 지향 모델링을 먼저 수행해야합니까?


9

처음부터 응용 프로그램을 빌드 할 때 객체 지향 (OO) 모델 또는 엔터티 관계 (ER) 모델로 시작해야합니까?

답변:


13

가능한 한 아키텍처 결정을 지연시키는 원칙을 준수하려고 할 수 있습니다. 미래에 지금보다 문제 영역에 대해 더 많이 알게 될 것이라는 생각이 들기 때문에 오늘날 내리는 모든 결정은 의심의 여지가 있습니다.

이것을 결합하는 또 다른 좋은 원칙은 요구 사항의 가장 위험한 부분을 먼저 시도하는 것입니다. 쉬운 부분을 수행하면 위험한 부분이 다른 방향으로 움직인다는 생각이 있습니다. 쉬운 부품을 다시 사용하십시오. 여기서 위험한 것은 당신이 어떻게해야하는지 잘 모르는 것을 의미합니다.

이 두 가지를 고려할 때 종종 OO 관점에서 사물에 접근하려고 시도하면 먼저 응용 프로그램의 가장 위험한 부분에 대한 OO 모델로 시작하고 가장 만족할만한 코드를 구현할 수 있습니다. 위험한 요구 사항. 그런 다음 필요한 기능을 추가하기 위해 필요에 따라 OO 모델 확장을 시작하십시오. 그 동안 SQL 또는 NoSQL 또는 플랫 파일 또는 클라우드 스토리지를 사용할지 여부에 대한 결정을 완전히 지연시킬 수 있으며 결국 관계를 원하지 않을 수도 있습니다 (ER 모델이 필요 없음).


7

ER 모델은 애플리케이션의 데이터가 유지되는 방식을 나타내며, OO 모델은 동일한 데이터가 메모리에 저장되는 방식 또는 애플리케이션이 실행되는 동안 결정합니다. 따라서 데이터베이스 스키마 디자인 (ER 모델)과 클래스 구조 디자인 (OO 모델)은 관련 디자인 고려 사항이며 일반적으로 동시에 생각할 수도 있습니다. 실제로, ORM (Object-Relational Mapping) 도구를 사용하는 경우 ER 모델과 OO 모델이 하나 일 수 있습니다. 다시 말해, 클래스 (OO 모델)는 자체적으로 ER 모델을 지정하는 방식으로 주석이 달릴 수 있습니다.

그러나 디자인하기 전에 소프트웨어의 실제 요구 사항, 사용 대상, 사용 방법 및 사용 대상에 대해 잘 알고 있어야합니다. 많은 개발자들이 제품이 해결해야 할 필요성을 완전히 이해하기 전에 설계 결정에 대해 생각하기 시작하고 응용 프로그램의 실제 목적에 적합하지 않은 설계로 끝납니다.


두 가지 모델링 유형의 차이점을 식별하기 위해 +1. 나는 당신이 두 모델을 동시에 생각할 수 있다는 것에 완전히 동의하지 않습니다. 또한 일부 OO 팬은 OO와 ER 모델이 항상 동일하지 않아야한다고 생각합니다. 그러나 OO 모델을 데이터베이스 디자인의 기초로 사용할 수 있지만이 변환은 약간 까다 롭습니다.
NoChance

@EmmadKareem 당신이 맞아요, 두 모델을 동시에 생각하는 것이 항상 적절한 것은 아닙니다. ORM을 사용하고 클래스에 주석을 달아서 ER 모델 디자인이 OO 모델에 통합되어 말하기 위해 아이디어를 말하고있었습니다. 어떤 사람들은 본질적으로 OO와 ER을 동시에 구현하는 이런 방식으로 응용 프로그램을 개발하기로 선택합니다.
CFL_Jeff

도메인 모델을 데이터 모델로 착각하지 마십시오. 개체 (단일 인스턴스를 나타냄)와 데이터베이스 테이블 (사물 모음 포함)을 혼동하지 마십시오.
Narender Parmar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.