I'm a beginner when it comes to writing use cases, but I searched a lot and most of the materials I found mentioned that I should concentrate on the business value to the customer when writing a use case.
example: Use case for a search page
1- User opens search page 2- User provides the search word 3- The system presents the search results
Of course it was easy to write the use case as the system had some kind of UI that that user interacted with.
However, what if I'm writing a use case for a cron job?
I was developing a module that basically connects to a number of ftp servers to download some files then the downloaded files are parsed to generate some reports and finally these reports are uploaded to my company's ftp server.
The problem is the only business value for the whole module is the generation of the reports (i.e. The team who requested that module only cares about the reports not anything else).
This is the use case I came up with:
1- The system downloads the files from the ftp servers. 2- The system generates the reports from the files. 3- The system uploads the reports to the company's ftp server.
However as I was reading Applying UML and Patterns, 3rd released edition the author introduced a monopoly game use case as follows:
A whole game in just 3 steps!!! I thought since the whole purpose of the game is just the simulation then maybe that's why he didn't mention any details, and maybe I should do the same too.
So now I have exactly 3 mixed questions:
1- Should use cases focus entirely on the business value for the customer and ignore internal operations?
2- In case a cron job is invoked how to determine the business value if the customer has no interaction what so ever with the system?
3- A colleague of mine actually contradicted with my approach entirely and he insisted that I should write as much details as possible in a use case (as instead of
The system downloads the files from the ftp servers it should be decomposed to the smaller functions that make this feature such as
get list of servers from DB,
connect to ftp server,
check if there are any files,
delete file from ftp server,
close connection). Is this correct or better?