Frames

CamStream Use Cases

Use Cases are the first step in writing software requirements. They describe some typical scenarios in which your software is going to be used (at least, you think so). They help you to get a global picture of what your software is supposed to do. Basicly, you are describing your audience.

Also it helps you in limiting your scope. It's all to easy adding features to your program and end up with a monstrosity that can do anything, including the dishes and filling out your tax return form, but not what you had in mind in the first place.

Use Case #1: Your average webcamming user

John likes to chat regularely on the Internet with IRC, ICQ and other messanging systems. He plays a MUD regularely and interacts with people on a daily basis, but he likes to know who he's talking to and doesn't mind showing his own face, so he sets up an auto-refreshing HTML page on a website and wants to upload a snapshot of himself at regular intervals of about a minute. When he's done talking he stops the uploading.

Use Case #2: Security camera

Paul is a bit paranoid. After having been burgled three times, he's set up an alarm with IR detectors, put 2 extra locks on his door and placed 5 webcams in and around the house. He wants to take a snapshot of all webcams at 10 second intervals and save them to disk. In case there's a change in an image (for example, because someone is walking through the garden), he wants an extra command to be executed such that he can be mailed at work or a picture SMS send to his mobile phone. He also likes the system to remain running 24 hours a day, and recover from temporary failures.

Use Case #3: Landscaping

Irma has a house on a cliff at sea with a fantastic view, especially at sunset. She likes to share this with others around the globe, so she sets up a webcam looking outside, and puts up a simple webpage with shows the latest snapshot. The image is refreshed every 30 minutes, but the page is not autorefreshing since she doesn't think that is important. Also, so wants an archive of all snapshots so that she can browse through them and select the most interesting pictures that she will put on a separate gallery webpage.

Use Case #4: TV watching

Carol is completely mad of the latest soap series and especially in love with one of the main actors. She likes to watch the show and take snapshots any moment she wants. She has hundreds of snapshots and uses them to post them to a fansite she set up.

Use Case #5: Recording shows

George is an amateur filmer; unfortunately, he hasn't got the latest in video equipment, so he still has an analog video camera. Once he has recorded something 'in the field', he wants to put it on harddisk and edit it with a video editing tool. Naturally, sound has to be recorded as well. Also, some indoor shooting is done using a webcam.

Use Case #6: Astronomy

Xavier is a fervent amateur astronomer; he likes to go out at night and point his telescope at the skies. In order to make some pictures of the celestial object he sees he wants to use a webcam to capture images. However, due to the low light conditions, noise and other problems he wants to capture a series of images, which he can then post-process. For him, it's important the images contain as little as compression and/or artefacts as possible.


So there you have it, a few examples of what people can, and will do with webcams. In fact 6 use cases are already a bit too much, but we don't have to write every feature for version 0.01.

From this we can already derive a few global requirements:

Equally important is deciding on what your programs should NOT do. In this case, it includes:

Now, that you've determined all this, it's time to move on to System requirements.