Un-fortunately, few move towards the most valuable region: Abstract-Precision. That’s the most valuable because it offers the least noise (Concrete details) and the most information (Precision).

Here’s an example. Squares are types, circles are interactions.

Notice that “Money” isn’t concretely defined here. It could be a BigDecimal, double, or Smalltalk Number. Also, that Post Condition is much more precise than a lot requirements documents usually specify.

Ah, I feel better.

Here’s my rule of thumb for achieving more precision:

Add elements to your model only in order to exactly say what your audience thinks is really important.

In the example above the balance, amount, and cash properties are only present because a Withdraw requires them to precisely describe what needs to be done.