P6: Chat Application Part C
100 points
Canvas Submission Due November 29, 2016
In-class Submission Due November 30, 2016

1. Overview

In this part of the project, you will (1) refactor the chat application to add the adapter and observer patterns, (2) add a graphical user interface to the client side, and (3) add the ability to send sketches in addition to text messages.


2. Tasks

  1. (10 points): For each of the tasks below, write out the user stories in a document called US.pdf. For each user story, list the acceptance criteria and the story points (size estimation as S/M/L/XL) information. Finally, provide the definition of "done" (including your testing goals, coverage level of test cases, among other criteria) for this project.

  2. Update on Nov 10, 2016: Task 2 is now extra-credit. Hints and instructions will be posted on Piazza soon.

    (10 points): Include the following classes in your OCSF project area. This represents a situation where the third party framework supplier has modified their framework. Remember that you are not allowed to modify any of the OCSF project classes (old or new).

    1. client
      1. AdaptableClient.java
      2. ObservableClient.java
    2. server
      1. AdaptableServer.java
      2. ObservableServer.java

    Refactor the application so that it uses the Observable Layer of OCSF. The external interface and behavior of the system should not change. Instructions are provided on pages 21-22 of the set on Design Patterns. Note that you are not including the Abstract Factory portion in this project.

  3. Develop a graphical user interface for the client side of the chat application. All the features that you have implemented via text console should be available via a GUI. The GUI should not merely wrap a console terminal into a frame, but actually include GUI elements, including but not limited to text fields, text areas, and buttons. We will test all the features that were in P4 and P5, as well as the new features in P6.

    1. (5 points): Each person in your team needs to create a paper prototype that contains ideas on how the GUI should appear.

    2. (5 points): Discuss each prototype. Each prototype creator needs to note down the positive comments and the constructive criticism provided by the others. Handwritten comments are fine. These need to be submitted.

    3. (50 points)(40 points): Implement the best ideas in a fully functional GUI.

  4. (20 points): The SimpleChat website by Lethbridge and Laganiere provides a DrawPad class. If you download the zip file, you will find a class called StartDraw that can be used to create an instance of DrawPad. Allow two clients to communicate by opening Drawpad and drawing sketches. Do not change any code inside the DrawPad class. You should be able to transmit the drawing actions as command messages via the server.


3. Appropriate Use Of GitHub (10 points)

To get full points for this part, GitHub logs must show the following:

  1. (4 points) No work occurred directly on the master branch and no merge was done to the master branch without using the pull review system first.
  2. (2 points) The pull review system shows the student has requested reviews of their proposed changes to the master.
  3. (2 points) The pull review system shows the student has reviewed their teammates' proposed changes to the master.
  4. (2 points) At least 1 branch with a descriptive name of the changes exits for each student, and the student has made multiple commits on these branches using descriptive commit messages.


4. Submission

The following artifacts are to be submitted through Canvas, once for each team. One and only one team member must do the submission. Please check to see that the files have actually been submitted, not just uploaded.
Each file must be submitted separately. You must not include the pdf files inside your jar file.
Put your names and team number at the top of each page of the PDF files.

  1. US.pdf: User stories. Submit this file through Canvas.
  2. P6.jar: Code that implements P6: Create a jar file named P6.jar containing all the Java source files, keeping the directory structure as is. Submit the jar file through Canvas.

Submit the paper prototypes and comments and criticisms for each paper prototype in class.

The code that you submit will be graded via a demo. You must schedule a demo based on time slots that will be provided by your GTAs. Not performing a demo will result in a loss of 80 points for the code portion of your project.