Difference between domain model, conceptual model and business model etc [closed]
Asked Answered
P

1

10

I have a question about some terminology that's been confusing me for ages and I just can't seem to figure it out. Wikipedia tends to explain these things very formally which is very hard for me to understand...

The terms I've been struggling to understand are: problem domain, conceptual model, domain model, business model, business domain, business logic, domain logic etc. Some of them mean the same thing, some of them are used interchangeably, some of them mean different things in different contexts. What I'm asking for is a high level overview so I don't get confused about these terms...

Are these terms all part of domain driven design? Is it OO speak? In what context should I place them?

This is what I understand so far:

  • A domain is the subject matter (i.e. the world that you're modelling), and a model tries to explain a concept/subject concisely.
  • Thus a domain model (=conceptual model) tries to explain the domain concisely.
  • Thus a business model would explain what a business does, and therefore a business would be the same as a domain, except that a domain is broader, it's not just limited to a business.

I have some experience in ER modelling, and I understand from wikipedia that an ER model is one of many techniques that is used to represent the conceptual model (domain model).

I might be totally wrong, but it should show you where my confusion is...

Particolored answered 20/9, 2014 at 9:56 Comment(3)
Are a domain and a problem domain the same thing?Particolored
I'm voting to close this question as off-topic because these terms are not part of a formal theoretic framework and usage varies widely. There is not definitive answer.Shondrashone
That should say, "is no definitive answer." Dang typos.Shondrashone
K
9

I doubt there's one comprehensive, formal definition of these terms, but in my experience the following are generally accepted definitions:

A Domain is an area of concern, or as you say, the subject matter. If the area of concern is a business, this would be a Business Domain. The term Problem Domain is more general.

A Conceptual Model is an abstraction of the concepts and relationships in a Domain: I'd agree that the terms Domain Model and Conceptual Model are largely interchangeable. The only difference is that the term Conceptual Model emphasises the fact that this is a model of the concepts, and doesn't reflect a software design.

The terms Business Logic and Domain Logic tend to refer to the rules that define the correct behaviour of the entities within the Domain. It might be possible to capture some of these rules in the Domain Model, for example though constraints on relationships or by using state charts. Whether you consider the Domain Logic to be a necessary part of the Domain Model probably depends on how formal your modelling needs to be, and the Domain in question.

Kline answered 20/9, 2014 at 18:38 Comment(7)
Thanks alot =) What do you mean by: "The only difference is that the term Conceptual Model emphasises the fact that this is a model of the concepts, and doesn't reflect a software design". You mean a conceptual model isnt always used for software design but a domain model always is?Particolored
Also, where do these terms come from? Domain driven design? Or are they general computer science terms? I've seen them used alot before when I was doing ASP.NET MVC.Particolored
When speaking of the domain, we're also speaking of the problem domain right? Since that's the area of concern.Particolored
Also what's a business model? Is it even related to the other terms or is it used in financing etc? Sorry about the amount of questions, I just really want to grasp this problem.Particolored
In my experience Conceptual Model and Domain Model both tend to be non-software models, but the term Conceptual Model makes this clearer. I'm not sure about the provenance of the various terms; I suspect they come from multiple sources, including OO design methods. Generally the domain in the context of the design will refer to the problem domain. I've not come across the term Business Model in the context of software development, but I guess it could be used to refer to a conceptual model of a business domain.Kline
Exactly what I needed, thanks. It's clear now.Particolored
Great, glad that was useful.Kline

© 2022 - 2024 — McMap. All rights reserved.