讲解FIT5046讲解Mobile and Distributed Computing Systems

- 首页 >> Matlab编程


Monash University
FIT5046 – Mobile and Distributed Computing Systems
Practical Assignment (Server-Side) (10%)
Due Week 5, Friday 3 pm (10th of April)
An Overview:
 The assignment is an individual assignment.
 This assignment 1 (server-side) does not have an interview.
 This assignment requires submitting a report that includes all the required code, diagram and
screenshots as specified and in the right order, format and structure.
(Note: Your mark will be based on the code and screenshots provided in the report)
 Practical Assignment (client-side) Phase 2 will be developed based on this assignment Phase 1 and
it will have an interview.
 The marks allocated for all the tasks in this assignment will add up to 100 marks and it is worth
10% of the total mark for this Unit.

Due Date: The submission is due on Friday Week 5 (10th April) by 3 pm.

Objectives and learning outcomes:
 To identify, develop and apply different approaches and methods for building distributed and mobile
computing systems;
 To select and apply effective and efficient (server-side) approaches for this particular distributed
application;
 To develop and test the server-side components of a mobile distributed application.
My Movie Memoir (M3)
The practical assignments Phase 1 and Phase 2 (server-side and client-side) aim towards building a
mobile and distributed, personalised diary application for keeping track of movies (and TV series) that
the user watched or wants to watch in future. The application will provide a movie memoir that allows
the user to create a collection of memories that they had about the movies.
The practical assignment 1 will focus on creating the backend and server-side components of this
mobile, distributed system. The server side will make the data and services (methods) available to all
the mobile clients through an API (RESTful web services APIs).
The practical Assignment (server-side) requires: 1) creating a database (Java DB database in NetBeans)
that will include the specified tables and populating the tables with meaningful data; and 2) creating a
RESTful web service that enables querying this data and updating it if necessary.
The practical Assignment 3 (client-side) Phase 2 will involve creating an android application that will
interact with public web APIs and the REST web service (created in Assignment 1) to query and retrieve
data.
Assignment 1 MUST be implemented in NetBeans.
2


Figure 1. an overview of Assignment 1 and Assignment 3
Report Format
You need to submit a written report as a Word/pdf document, which includes a copy of your written
code (copy and paste your code from NetBeans) and screenshots of running RESTful methods in the
browser:
 The report will include a cover page that includes your full name and student id, the assignment
name, the unit name, and your tutor name;
 You need to include Table of contents (this means you have to include a page number)
 You will include your written code and the screenshots with the same order of tasks listed
here.
 You need to use numbered headings and subheadings (e.g. 1. Task 1. Part a:… ).
 You must write one sentence to explain your written code/method, and a screenshot of its
execution in the browser, similar to Figure 2 (shown on page 4).
 Your code in the report must be EXACTLY the same code in the NetBeans project that
you will submit to Moodle in a zip file.
Task 1 – Database (15 marks):
Based on the requirements below, you will create the backend database and its tables with the specified
attributes and populate them with data as described in part (b). You need to add all the required
constraints and create the relationships.
a) You need to create the following tables (you should not add any additional table):
User Person Table (3 marks)
The user Person table will store data about the user that include: first name, surname, gender, DoB,
address (street number and street name), state, and postcode (only consider for Australia).

Credentials Table (3 marks)
The Credentials table will store information about a user’s credentials including: username (we suggest
to use the email for the username), password hash, and sign-up date. There is no need for extra security
measurements in this application such as adding salt to hashing. Also, there is no need for considering
password expiration.
Assignment 1
Assignment 3
3

Memoir Table (3 marks)
This table will store a collection of memories about movies that the user have watched. These memories
include the following information: movie name, movie release date, the date and time that the user
watched the movie, a comment about user memory or opinion, a rating score given by the user (not by
the public) based on stars. The table below shows the star ratings compared to a 1 – 99 scale. In the
Assignment 3 (the phase 2 of this assignment) you must show all the rating scores as stars (half and
full).
STARS 1-99 scale
0 1-9
0.5 10-18
1 19-27
1.5 28-36
2 37-45
2.5 46-54
3 55-63
3.5 64-72
4 73-81
4.5 82-90
5 91-99

Cinema Table (2 marks)
The Cinema table will store data about the cinema that include: cinema name, and its location as suburb
or postcode (you can decide on this based on the APIs you will use in Assignment 3).
- One person/user can have multiple movie memories in the Memoir table.
-One movie memory can be associated with only one cinema. One cinema can repeated in different
memories.
-The person/user will have only one memory for a movie experience. It means if the user watches the
same movie and in the same cinema, it will create a different experience and memory (the date and time
will also be different).

b) You will use an appropriate and correct schema based on the above-mentioned requirements and
implement the right relationships and choose the right FKs. Provide a simple ER diagram. (2 marks)
We strongly recommend using a unique ID for each table as the PK because it makes it easy when
working with NetBeans RESTful web services.
c) All the tables need to be populated with meaningful data and appropriate data types. (2 marks)
You need to have at least 3 records in the user person and credentials tables. In Assignment 3 (practical
assignment Phase 2), you will automatically generate the latitude and longitude values from the user
person’s full address data so make sure you enter correct and real world values. To populate the
credential table, you can use an online hash converter to convert a password to hash values but in
Practical Assignment (client-side), you will hash the password using Java code and libraries.
In the memoir table, you need to include at least 10 records/memories for one of the users. In the cinema
table, you will enter at least 5 cinemas. You need to make sure you enter such data that all the queries
in Task 4 will return data (not an empty response.

4

You need to provide the SQL code for creating and populating EACH table (and code for
establishing FK constraints or any other constraints) and a simple ER diagram in your submitted
report document to receive marks for this Task. Any missing or incomplete SQL code or an ER
diagram as specified will result in mark deduction.

Task 2 - RESTful Web Service (5 marks)

A RESTful web service should be created based on the above-mentioned database and tested on the
browser without any error. (5 marks)

For this part, you need to test the web service and provide one screenshot showing all methods as
the figure below. On the left-hand side, you need to expand all the folders and show their contents.


Figure 2. An example of the browser screenshot


Task 3 – Dynamic and Static Queries (20 marks)

In this part, the web service will be extended by adding extra methods and queries using the Java
Persistence Query Language (JPQL). The queries that you write will apply two different approaches as
discussed in the lectures and tutorials: one approach where you define a static query (NamedQuery) in
Entity class and then you call it from a RESTFacade’s method, and the other approach where you create
a dynamic query directly in a RESTFacade’s method.

a) You will write additional REST methods to query all the tables based on each attribute that the table
has. E.g. if the user Person table has 6 attributes, you write 6 REST methods to query each attribute
separately. This excludes the method to query the primary key (id) because it is automatically generated.
For this task, provide all the code BUT only one screenshot for one of the REST methods for each table.
(5 marks)

b) You need to create a new REST method that enables querying the user Person table using a
combination of three attributes (e.g. address, state and postcode). This should be implemented as a
DYNAMIC query. You will decide which attributes to consider based on their usefulness in the query.
(5 marks)

5

c) You will write a new REST method that enables querying the memoir and the cinema tables using
a combination of two attributes in the condition where each attribute is from a different table. The
query should be a DYNAMIC query using an IMPLICIT join. (5 marks)

d) You will write a new REST method that enables querying the memoir and the cinema tables using
a combination of two attributes in the condition where each attribute is from a different table. The
query should be a STATIC query using an IMPLICIT JOIN. For this, you also need to show the code
for the NamedQuery in the entity class. (5 marks)

For this part, you need to provide your written code for the REST methods (by copying and pasting it
from NetBeans), any code added to the Entity classes, and one screenshot per each method after
testing on the browser. Any missing code or screenshot will result in mark deduction.
In subtask Task 3 (a), only one screenshot of one GET method for each table is sufficient but provide
all the code.

Task 4 - Advanced REST methods (60 marks)

a) You will add a REST method that will accept a user person id, a starting date and an ending
date and return a list that contains the cinema’s suburbs/postcodes and the total number of
movies watched per suburb/postcode during that period. (10 marks)
b) You will add a REST method that will accept a user person id and a year, and return a list that
contains the month names and the total number of movies watched per month in that year. (10
marks)
c) You will add a REST method that will accept a user person id and return the name(s), the rating
score(s) and release date(s) of the movie(s) with the highest rating score given by that user.
Please note that the result can be a list if more than one movie received the same score. (10 marks)
d) You will add a REST method that will accept a user person id and return a list of movie names
and their release years for those movies that their release year is the same as the year the user
watched them. E.g. if a movie was released in 2020 and the user watched it in 2020. (10 marks)
e) You will add a REST method that will accept a user person id and return a list of movie names
and their release years for those movies that the user has watched their remakes as well. E.g. If
the user watched The Lion King 2019 and The Lion King 1994. (10 marks)
f) You will add a REST method that will accept a user person id and return a list of the movie
names, their release dates and rating scores for FIVE movies that have been released in the
recent year and have the highest rating score (five top ones). (10 marks)

For Task 4 and 5, you need to provide all the code of new REST methods, and any code added to the
entity files (and any other additional code/class you added) to receive full marks for this part. You also
need to test the web service and provide ONE screenshot for each new method. Any missing or
incomplete code or the screenshot will result in mark deduction.
Late Submission:
Late Assignments or extensions will not be accepted unless you submit a special consideration form and
provide valid documentation such as a medical certificate prior to the submission deadline (NOT after).
Otherwise, there will be a 5% penalty per day including weekends.
Submission Guideline:
A ZIP file will be uploaded to Moodle by the deadline including the following files:
6

1. The REPORT with all the specified code and screenshots that were mentioned in each
task in ONE word/pdf report document, NOT as separate image files.
2. The NetBeans project including all the packages and classes and files.
3. The zip file should have this name: FIT5046Assign1-Sem1-[studentname]-[studentid]-
[tutor name].zip
Mark Deduction will be applied if: i) any piece of code or screenshot for each Task is missing,
ii) the REPORT does not follow the above-mentioned format, or iii) if any of the NetBeans
project files is missing and not included in the zip file
PLEASE NOTE.
Plagiarism and Collusion
Before submitting your assignment, please make sure that you haven't breached the University
plagiarism and cheating policy. It is the student's responsibility to make themselves familiar with the
contents of these documents.
Please also note the following from the Plagiarism Procedures of Monash, available at
http://www.policy.monash.edu/policy-bank/academic/education/conduct/plagiarism-procedures.html

Collusion occurs when a student works with others to produce work, which is
then presented as the student's own work, or the work of the other person(s). Collusion includes when
a student without the authorisation of staff involved in the teaching of a unit:
 works with one or more people to prepare and produce work;
 allows others to copy their work or shares their answer to an
assessment task;
 allows someone else to write (with the exception of instances where the use of a scribe is
approved by the Disability Liaison Unit) or edit their work (noting that proofreading is
acceptable, provided it is compliant with the University's definition contained in the Academic
Integrity Policy);
 writes or edits work for another student; or
 offers to complete work or seek payment for completing academic work for other students.

站长地图