Devoir is a very common French verb with irregular conjugations and an unusual relationship to some of its English equivalents.* Devoir has several meanings related to obligation, supposition, and expectation.
Devoir = must, to have to (obligation)
Tu dois finir ce projet.
You must finish this project.
Je dois partir à 14h.
I have to leave at 2pm.
Devoir = must, to be probable (supposition)
Sylvain doit travailler tard.
Sylvain must be working late.
Tu dois être fatigué.
You’re probably tired.
Devoir = to be expected, supposed to (expectation)
Je dois arriver vers midi.
I expect to, I should arrive around noon.
Anne doit téléphoner demain.
Anne is supposed to call tomorrow.
Devoir = to be bound to (fatalism)
Tu dois découvrir la vérité.
You’re bound to discover the truth.
Il devait le gâcher un jour.
He was bound to screw it up one day.
Should vs Must
Many of the above examples could fit into more than one category, so how do you know which meaning is the right one? As always, it depends on context. When you want to make sure that the meaning you want is the one others get, you need to do a bit more work.
To specify that something "must" happen, strengthen devoir with something like absolument, à tout prix, impérativement, or vraiment.
Tu dois vraiment finir ce projet.
You really must finish this project.
Je dois partir à 14h à tout prix.
I have to leave at 2pm no matter what.
To say that something "should" happen, soften devoir by using it in the conditional.
Tu devrais finir ce projet.
You should finish this project.
Je devrais partir à 14h.
I should leave at 2pm.
* Whereas devoir is a fully conjugable verb, two of its common English equivalents – must, should – are modal verbs, which have just a single form.