The user(s) of the system we are building is of paramount importance. They are the ones that will determine if the system is a success or if it's a failure. It is good to break the system down into parts, small enough so that you can think about each story the user will experience.
For example, if we are writing user stories for the ride-sharing app Uber, we break the system into parts and identify the user types:
Identify User Types
For Uber these user types would be:
Driver (responsible for driving the car)
Rider (looking to get from point a to point b)
Driver-Rider Safety Admin (responsible for keeping driver and rider safe)
Break into Parts
Attempting to enumerate all the user stories in one sitting for a system will be impossible. Instead, break the system up into parts.
Rider enter payment information
Rider enter destination
Rider waiting for pickup
Driver enter bank information to get paid
Driver specify availability
Driver-Rider Safety Admin
Admin approve new rider
Admin approve new driver
Now that we have the app broken down into parts we can begin enumerating the user stories. Let's take the waiting for pickup.
Rider will be shown a waiting screen after they have hailed a ride
Rider can see the progress of the car on a map
Rider can see the estimated time of arrival
Rider can cancel the ride
Rider can see the license plate number of the incoming Driver
Rider can see where they are on the map
Rider can see the expected route of the incoming Driver
Rider can see their upcoming destination
Rider can click to call Driver
Rider can click to message Driver
Within each of these bullets, you can further enumerate the actions that a Rider can take, painting a full picture of how the user will interact with the system.
Once you have these stories enumerated, you will have a better idea of what you are looking to build. Additionally, you will be able to test your system against these stories to make sure the system does what you intend.