We will be asking all intern team members to submit a focal use case by June 15th, focused either on their project or another of their choice. Following is a description of how to write good use cases, drawn from a talk that Joe Andrieu gave to our 2021 interns.
Tech Target defines a use case as "a methodology used in system analysis to identify, clarify and organize system requirements. The use case is made up of a set of possible sequences of interactions between systems and users in a particular environment and related to a particular goal." In other words, they're little stories that define what a system needs to do.
Use cases exist because the hard part of programming is not writing the code, but rather knowing what code to write. They help to identify the right code to write, and what code not to write.
One of the problems that we as engineers tend to have when writing use cases is that we often focus on interesting technologies, whether they be blockchain, cryptography, or whatever's coming next year. This can lead to creating solutions that are in search of problems. To develop the most useful (and most used) systems, we need to focus on user requirements, not technical requirements — on real problems and real needs. That's what good use cases can enable.
But, good use cases can to a lot more than that. They allow us to find the boundaries of our system: what they should do and what they won't do. They allow us to identify risks, threats, and adversaries. Ultimately, they lay a foundation that creates context for discussing a system.