The main purpose of creating a software product is developing of such product, which helps users to carry out their daily tasks. At first, we need to define requirements such system should meet. However, if a user writes his list of demands, then we’ll get a list of functions.
According to this list, it will be hard to imagine what kind of application we need, what features have higher priority, and which user it is intended for.
To overcome this problem and to more accurately understand the process of system working, they started using description of system functionality through use cases (precedents) more often.
Use cases are descriptions of a sequence of actions that the system can perform in response to exposure of users or other software systems.
Use cases represent functional requirements of the system from a user perspective, not from a technical point of view, so they allow us to accurately place priorities of the functions according to importance of results.
Use cases are primarily designed to determine functional requirements to the system and to manage development process. Activities such as analysis, design, testing can be performed on the basis of use cases. During analysis and design, options allow you to understand how results the user wants to receive may affect the system architecture; and how system components should behave in order to implement the functionality desired for the user.
During testing, use cases allow you to evaluate the accuracy of implementation of user requirements and to perform step-by-step verification of these requirements.
Exemplary Use Case Template:
And here is an example too: