A Social Network Software System

Social networking is a trend in today's computer systems. Our goal is to develop a simplified version of Facebook, which should steal the following features from it:

The behavioural aspects of the system should follow Facebook as closely as possible, but there are obviously several aspects where you will have to make guesses or decisions even though the information you can obtain through usage is not enough. Motivate all such decisions clearly and record it in your documentation.

The design should think about interaction between users as interactions between their avatars on Facebook. For example, a friend request from Alice to Bob is an interacion between two avatar objects for Alice and Bob. Obviously, however, there should be some server object (or equivalent) acting as the core component in the system, initiating friend requests etc. Use the Model-View-Controller pattern and model GUI aspects of the system (such as the home screen) separately from the components rendered on it.

Our servers can run JSP applications only, so keep this in mind.