The criticality of correct, complete, testable requirements is a fundamental tenet in software engineering. Developing a good set of requirements to specify a system can be hard.

The difficulty is being able to determine all the possible types of interaction with the system. Use cases are used to explore and elicit requirements and can help determine certain types of interaction to expect between the actors (external stimuli to the system) and the system. But use cases may not always combine to describe complete and consistent behavior. Once use cases are used to explore the problem and for front end domain analysis, other techniques can then be used to fully specify the solution strategy.

In this paper, I explain a strategy that has worked well in our embedded system project, called sequence enumeration.