Problem Statement

Mooch will be an instant messenger that will integrate features that aid collaboration and computer-based interaction. The most important feature included will be the screen sharing. In a screen sharing session, one of the parties would select an area of the screen to be shared and initiate the session. Once the session is established, the screen observer will be able to see real-time updates in the selected area of the screen and, if approved, will also be able to interact with the shared screen through mouse and keyboard input.

Of course, the usefulness of the screen sharing feature will be limited if the participating parties have no easy way to simultaneously communicate while interacting with the same program. For this reason, Mooch will also include voice-over-IP (VoIP) which will allow users to carry a conversation while performing screen sharing tasks. In addition, in order to guarantee functionality on systems without a microphone or speakers, Mooch will include text-based messaging.

Mooch's unique functionality will be invaluable in education, computer collaboration, and user support. As information technology is integrated into new pedagogical developments, Mooch will permit instructors to assist many pupils simultaneously without physically attending each one. Moreover, as development teams grow in size and geographical distribution, especially with the advent of outsourcing, Mooch will allow for easier cooperation and cohesion in these teams.


  1. Implement a screen-sharing messenger that will allow anyone to easily receive remote assistance, for educational or support purposes.
  2. Provide efficient and robust voice-over-IP functionality which can be used with screen-sharing or as a standalone telephony service.
  3. Include text-based messaging features on par with today's most popular instant messenger. These will include contact and availability lists, status messages, and text formatting.

Functional Requirements

(in order of priority)

  1. Screen sharing, implemented through a peer-to-peer connection.
  2. Voice-over-IP, implemented through a peer-to-peer connection; Mooch will not initially support conference calls.
  3. Text-based messaging which allows any two users connected to the Mooch network to communicate without establishing a peer-to-peer connection.
  4. Server-stored contact list which will maintain the user's chosen contacts; information about the status of these contacts will be displayed in the client application.
  5. Encryption of all connections, both server-client and peer-to-peer; a strong and commonly accepted method such as SSL or TLS will be used.
  6. Universal Plug and Play (UPnP) support; this service allows to automatic reconfiguration for port forwarding for many devices, such as routers. It is essential since a popular way to connect to the Internet is through a wireless router, while Mooch relies on peer-to-peer connections for the core of its functionality.
  7. Low-bandwidth options, both for the screen sharing and VoIP. Although high bandwidth connections are growing in popularity, many consumer Internet packages are still asymmetric and thus limited in their peer-to-peer traffic.
  8. Sound alerts for messenger-related events such as incoming text messages or session invitations.
  9. Font formatting option for the text messages
  10. System tray icon, which would allow users to quickly access common functions in the graphical user interface.
  11. File sharing - allow sending and receiving of files through Mooch's peer-to-peer connection.

Non-functional Requirements

  1. Ease of use - Mooch should be user friendly enough to be used by users who would be using it to receive remote help and thus possibly have rudimentary computer skills.
  2. Security - since Mooch will potentially be used in corporate environments for collaboration on company projects, it must use strong encryption and secure protocols.
  3. Robustness and speed - Mooch will have to run on a wide range of connection speeds. It should include settings to reduce quality and update rate in order to function well on low bandwidth connections.

Target Environment

Mooch aims to be completely cross-platform in its Java usage and consequently should run on any system which implements the Java 1.6 Standard Edition API, the Java Media Framework API, and the Java Advanced Imaging library. This set includes most modern desktop and server systems, such as Windows, Linux, Mac OS X, and Solaris.