COURSEWORK SPECIFICATION


You are asked to design and implement an 'instant messaging' service. The service should let users send text messages to any other user (all messages should be forwarded from user to user by the service). If a target user is not 'on line' (i.e. there is no CORBA client currently running and logged on on that user's behalf) the service will store the message and keep it until the target user comes 'on line' (note that when a user comes on line there may be multiple messages waiting for him/her). The service, as well as forwarding messages and keeping track on which users are 'on line', should manage the registration of users into its supported user community. This may involve a second physical server.

Beyond a basic centralised architecture (a good centralised solution will put you in the running for perhaps 80% of the marks), you might consider the issue of *scalability* in your design -- i.e., how could your service support thousands of users on a national or international scale? Consideration of this issue will put you in the running for the additional 20% of the marks. If you are really keen, you might even fully implement your scalable solution; even if you don't go this far,
credit will be given for a feasible and well thought out design.

You may implement your solution in any programming language (e.g. Java or C++) and can use any CORBA implementation (e.g. the Java IDL ORB that comes bundled with J2SE -- see http://java.sun.com/j2se/1.3/docs/guide/idl/index.html). If you use Java, you MUST use CORBA as opposed to Java-RMI. A text based user interface is all that is required (but feel free to provide a GUI if you want; this won't attract many additional marks but it can't hurt!).

A basic application like that in exercise 3 will only receive the minimum marks.

Feel free to develop the solution in any way you think fit.

The deadline for the exercise is to be confirmed.You should hand in a full program listing together with documentation that describes the design and specifies and justifies your design choices. A demo may be required.

You should refer to the ADS course which will highlight the important techniques in designing and implementing a distributed application.

More sophisticated solutions (and more credit will be given) might involve: