The exact meaning of the word in natural language is also not clear. When you say: “the wheel should be in a row” - what does it mean? This may mean the same as it should, but then there is no point in the design for it. Otherwise, what is the certainty that you should be satisfied? What is the action if the wheel does not fit?
There are some equivalents in the feelings you spoke of, although I don’t know the language that the word should use for them:
Testing / Approval
ASSERT often a language directive, macro, or test library function. In the sense that ASSERT matches must, some languages ​​and test environments define macros for “warning statements” that will spit out a warning message if the test fails, but the test fails or fails, which would match.
Exception Handling
In some terms, you can consider an exception that is selected as an analog - if an exception is caught, the program can handle the case when something is not as it should be. But sometimes an exception describes the rejection of how something should be the way it should be for the program to work, in which case the exception will not be caught, or the handler will make the program fail gracefully. This, however, is not always the case - sometimes code is executed to check what might or may not even be likely, and the exception is caught expecting it to be thrown.
Logic of constraints
One common meaning of must and should in various formal documents in natural language is restriction - it must indicate a restriction that you must always satisfy, and if you cannot, then your condition is incompatible, and should mean that you will always satisfy the restriction if this is possible, given the state and limitations implied by the mandatory, but if this is not possible, it is still relevant. In the informal logic of constraints, this happens when there are “external constraints” in the context, so checking that a “solution” is satisfactory with regard to “constraints” can only be possible if you know the context and given the context that you can also satisfy different subsets of " restrictions, "but not at the same time. For this reason, some specification languages ​​for constraint restrictions (whether they are called their "programming languages" depend on your definition) have the concepts of ordering constraints - the first level of constraints corresponds to the mandatory, the next level corresponds to the obligation and the constraint should be satisfied, if possible, taking into account all external external restrictions (at previous levels), even if it contradicts some restrictions at the next levels, which then will not be satisfied.