Project Description

            The idea for the project is to build a peer-to-peer audio file sharing system using the wifi(802.11b) standard.

How far did we get during this semester ?

We started off with half of our group as a fresh set of people to the project. Early on many of the group members spent time learning about JXTA, the peer to peer architecture that we are using and understand its implementation within our application. The documentation from last semester and a clean code base with basic functionality really facilitated that introduction. Early in the semester we focused on reassigning roles and getting our source code control system setup. As the semester progressed we continued to add code and the respective unit tests. At various points of the semester we ran metrics to analyze our code and used our findings to further improve our processes and guidelines for the following iterations.

 

 

Implemented: Search

The use-case was implemented as an extension to the Peer Discovery use case that was implemented during the last semester. This use case was the most difficult of the four to accomplish because it required a deep fundamental understanding of JXTA. We had to use the peer discovery mechanism to associate “Peer Advertisements” (identifiers) with the appropriate users and then open JXTA pipes (sockets) to the appropriate peers for purposes of sending and receiving communication requests. Many obstacles were encountered in this feat from revisions to the JXTA architecture during our development, but in the end of was completed the use case and its functionality. This use case required the use of other libraries to search through collections of mp3 files as well.

 

Implemented: Manual Download

This use case was modeled greatly on the core of the search mechanism which setup a system to send and receive messages from identified peers. The setup of the pipes and their associated services was utilized to implement a mechanism that could request a file from the respective peer and have a response come back with the file object which would be stored on the recipient’s computer. This required learning and understanding Java classes associated with reading and writing files, along with learning fundamentals regarding JXTA pipes and peers, and modifying the GUI to update the status of the download.

 

Implemented: User Configuration

This use case was implemented using an XML configuration file that is stored statically on your computer after the application is configured one time. The enter preferences can be entered and stored at any time. The information will be stored into an XML file upon saving the preferences and read into the application when it is launched. This required us to acquire knowledge on XML and the available parsers to do our task effectively.

 

 

Implemented: Remove File from Download queue

This was the most trivial implementation-wise to enable a user to remove a file from their download queue once they have noted that the status of the file shows that it has been completed.

 

Implemented: Pause/Resume File in Download queue

This was the implemented to allow a user to pause/resume a download of the file specified. This was implemented as an extension to the manual download.

 

Implemented: Auto Download

This was partially implemented at the completion of this document. This is a new set of GUIs and some glue logic that intelligently utilizes the search and download models to automatically download the specified music profiles when they become available.

 

Integration

The integration aspects of our code turned out to be the most work. In many cases subcomponents of a use case would work individually, but put in interaction with one another they had to be debugged and analyzed. We found that unit and sub-unit tests were very useful in proving the competency of each piece, but did not help in understanding the issues with integrating all the code components. The integration effort was significantly underestimated as it was the smallest portion of our development time. For the future each of us understood the importance of integration and how difficult it can be if certain guidelines are not followed.