====== The Project ====== **An //"Always On"// PhoneBook App** * Due Date: Wed Dec 8, 2010 @5:30 pm * Groups: A minimum of 2 and maximum of 3 students per team * Technological Platform to be used: \\ BlackBerry Widget on the client side, CGI and JDBC on the server side. ===== Overview ===== The app enables a mobile user to interact with a phone book stored on an online database server and shadowed locally on the BlackBerry smartphone. ===== Analysis ===== The app must support of the following use cases: * User to look up the phone number of a given name prefix * User to edit or delete an entry returned by the look-up use case * User to insert a new entry The app must use the online server whenever available and falls back on the local database if there is no connectivity. ===== Deliverables ===== You need to deliver three things by the due date of this project: * The BlackBerry that was assigned to your group with the app loaded on it. * Submit the project report\\ The report file (in pdf or doc formats) can be submitted using the command: ''submit 2041 proj ''. The report is meant to describe your execution of the project to someone who is familiar with the project, e.g. a fellow student who is also executing the same project and writing a similar report. Hence, the report should focus on your own experience and efforts, i.e. what you actually did, rather than on general description. It is expected to be very brief, to the point, and made up of //at most// two pages (excluding source listings). The report should include three sections: **Overview** (describes the overall architecture, design and implementation issues, and a self-assessment of any limitation or deficiencies), **The Team** (the cse# and name of each team member, an explanation of how the work was divided and how was communication and consistency maintained, and the main lessons that were learned from this project), and the **The Source Files** (listings of all html, css, js, java, and cgi files that make up the project. Make sure the code is properly formatted). * Submit your project files\\ These include: The widget source files (html, css, js, xml) in one archive, the widget cod file (must be signed), and the server side files (cgi and java) in one archive. Use ''submit 2041 proj '' to submit these. ===== Evaluation ===== The project will be evaluated based primarily (80%) on meeting the specs (these include system functionality and report contents) and on its internal quality (design, style, code, etc.). The remaining (20%) is based on how your project compares with those of other teams. ===== Hint ===== It is recommended that you approach this project in an iterative manner. In the first iteration, create a //remote// widget, one that works with the remote database. This widget uses form submission or AJAX to enable the user to add, edit, delete, or search. In the second iteration, create a //local// widget, one that works with the device's PIM. This widget has the same interface and functionality as //remote// but it uses the PIM API to access the local database. In the third iteration, merge the two widgets into one. After all, they have the same user interface and differ only in their database connection. The user can click a radio button on the HTML page to indicate weather the remote or the local database is to be used. Finally, the fourth iteration automates the database selection by figuring out how to synchronize the two databases.