Vision
Our project idea is to build an audio file sharing application using Wi-Fi(802.11b) Ethernet connections. The application, using a Wi-Fi network connection, will use a point-to-point (p2p) network architecture. By design, the network architecture will support a decentralized topology. The application will act both as a client and a server for sharing audio files stored on two or more machines running the same application.
The most essential part of the application is being able to auto-detect a node within the network group. We would like the application to auto-detect a nearby node (presence), and start syncing audio files according to an application configuration preset by the user. Auto-detection and minimum prompting to the user is essential so that it requires minimum intervention.
It would be possible to configure the application for a number of different settings such as: Allowing downloads/uploads based on: 1) Audio File Format. (only mp3 formats to be supported initially) 2) Artist 3) Individual songs 4) Based on number of songs/hr. 5) Maximum Individual file size 6) Genre (Pop, Rock, Alternative, etc..) 7) Preferred users allowing only known nodes to participate in file sharing.
It shall also allow for two different states: Auto-drive and Manual. In Auto-drive, it shall auto-detect and download audio files based on the preset user configuration. In Manual mode, it shall still auto-detect, but shall not download audio files and wait for the user to explicitly select available audio files for downloads. The Auto-drive and Manual modes do not affect the way the files are uploaded. The reason for this is to encourage file sharing as much as possible.
The application shall be implemented using Java in order to allow the application to be platform-independent. For the p2p networking, the JXTA protocol, an open-source p2p protocol from Sun, shall be used. JXTA allows the creation of p2p network groups, searching and file sharing, among other services. JXTA also is able to run on most machines that are capable of running the Java Virtual Machine (JVM) and with numerous network devices.
We plan to use the Rational Unified Process (RUP) as the model for software development. RUP will allow the effecient sharing of information for the geographically diverse software development team.