When I read use cases, the assumptions I see listed are almost always pre-conditions. In Use Case – Preconditions vs Assumptions, Debbie Siah does a good job of providing definitions and tests to determine if something is a precondition or assumption. Yet, even with the definitions, it seems people still get confused. I think a major contributor to this is that assumptions are just plain hard. They force us to go outside our frame of reference and consider alternatives. When we’re stating assumptions, we’re making statements about what is out of scope for the system. As we all know, clear statements about what is out of scope for software are often as valuable as the statements about what is in scope. So, assumptions matter.
Let’s work through a couple of examples to help us see assumptions at work.
Suppose we’re writing a use case for an approval workflow which is part of a system that can only be used by authenticated users. A pre-condition might be “User is authenticated.” This is a system state which can be achieved. But what might an assumption be? Most approval workflows I’ve seen have an assumption that the approver knows and can independently apply the approval criteria. The system isn’t going to do anything to help the approver make the decision; it will just ask the approver for a decision. By writing this down, we tightly define the scope. We also generate discussion if, in fact, our assumption is wrong. Maybe our stakeholders are expecting some sort of analytics to help them make their decision.
Our next example is for a spell check system. When our spell check system detects misspelled words, it provides possible matches. One of the pre-conditions is that we have some sort of dictionary of words set up from which to provide the matches. We might be assuming that the user will be able to independently determine the correct spelling. If that assumption is wrong, we may need to do something like add definitions to the matches to help the user determine the correct spelling.
The point is to try to come up with the assumptions which might represent a legitimate misunderstanding of scope and include them. Taking this to the ridiculous would be, well, ridiculous.