I\'m a beginner when it comes to writing use cases, but I searched a lot and mos
ID: 650965 • Letter: I
Question
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: use case
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, download file,delete file from ftp server,close connection). Is this correct or better?
Explanation / Answer
UML has rules but UML is not a methodology. You either adopt a methodology or use your best judgment. The answers below are based on my own judgment.
1- Should use cases focus entirely on the business value for the customer and ignore internal operations?
Use cases may be used during requirements gathering. Such use cases focus on what the customer wants and understands mostly. Use cases can also be used for design and testing. In this type of use case, you should not ignore internal operation scenarios that affect the output. Such cases are sometimes sub-cases of the ones used in requirements gathering. However, in practice, when the use case is too detailed, it becomes a process. You need to decide which tool to use for which level of detail and which audience.
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?
Cron jobs are invoked as a result of an event that is meaningful to the business in some context, for example end-of-accounting-period. The business gains value by receiving the report and analyzing its contents on the event the business specified in the requirements. The real value is not in the cron job firing, the real value is in making the specific report available to the customer (or at least generated) at that specific event (time).
3 - Your third question (not listed so that the answer is concise)
What you are describing is the question text for question 3 is a detailed process not a use case. You better use a UML activity diagram for that type of detail and leave the high level covered in the business use case.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.