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:
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...
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.