1.Introduction and requirements analysis. Starting from the requirements above, add the details of what will be necessary to make the system workable [15%] and secure [15%}.

Some questions you might like to think about:


How will you enable a client to find out if your service is running and to find out how to connect to it if it is?


How will you enable a client to know that the service is actually your service, and not another program pretending to be it in order to steal secure data?


How will programs that share data be able to identify the data that is shared with them?


If programs allow other programs to write data, how will they know if another program has changed the data since they wrote it?


How will you store the shared data?

How will your program, with the help of the OS, prevent unauthorized processes reading it from the storage? How will you manage the limited capacity of storage?

 If you decide to use both memory and disk, how will you decide which?

When will you remove shared data?

 If left forever, RAM and disk space will eventually run out. If a process crashes, how will you know when its data should be removed? 

What should happen to shared data when the computer is rebooted or switched off?