Conceptual Models
Designing software so that its structure reflects that of the problem.
Analysis is not only listing requirments, but also looking behind the surface requirments to come up with a mental model of what is going in the problem.
Conceptual model is a human artifact.
Developers use conceptual models to represent a model of the real world in order to understanding the read part of problems easily.
There is no right or wrong model, merely one that is more useful for the job at hand.
The example, snooker simulation, if your choose a Einsteinian model would be flexible enought to low speed or high speed situation, but the complexity is totally different you know, so the flexibility and many others aspects need a trade-off.
When building a model in a programming language, maybe Python, you may get lost in this language or building this model using some features belong to Python, so this model is a Python-model, and it is hard to be implemented in other languages such as Java, PHP, etc. To avoid these problems, you need a third-party analysis techniques.
Only domain experts could build right model, because of their domain knowledge.
Conceptual model is closely to software interfaces rather than software implementations. One of the important things about OO is that it separates interface from implementation.