Apply principles of distributed systems to authentic problem


I) Assignment Objectives:

The purpose of this assessment item is to assess your skills attributable to the following learning outcomes and achieving the expected graduate attributes of advanced level knowledge, cognitive, technical, and creative skills, professional level communication, self- management, research skills, ethical and professional responsibility, and leadership.

A) Design and develop distributed applications using one of the approaches of distributed objects, web services, and peer-to-peer solutions

B) Solve problems in the distributed systems domain by applying the principles of distributed systems to authentic problems

C) Critique the issues involved in developing reliable, secure, and scalable distributed systems

D) Work independently and collaboratively in small teams.

II) Assessment task - Team Work:

Your task in this assessment is to analyze the given problem, model, design, implement, test and document a client/server application that allows multiple users to access stored data, or add new data. You will be implementing the software solution, applying efficient algorithms, inheritance, polymorphism, and exception handling. The topics required for this assessment task are from Weeks 1-8. You should also write a report, as specified in this document, demonstrating your conceptual knowledge. You will be required to use the topics learnt in the pre-requisite unit Data Structures and Algorithms.

Problem:

Year 11 and 12 students study five subjects. There are many assessments for these subjects in different formats and the grades of these assessments are summative contributing to a student's final result. These two years of study are closely monitored by teachers and parents as the outcome decides the final grade a student achieves when s/he completes year 12. University entrance to various degrees is based on a student's year 12 final grade. Queensland Government Education department is keen to have better systems for parents to be informed and enable teachers to upgrade grades with one software system.

You are invited to develop a prototype of a Study Progress Monitor System (SPMS), for managing students' grades allowing administrators to add students, enrol subjects with assessments, set grade, and parents/students to access the stored details. You will be developing a multiple-threaded client/server application.

As part of your Assignment One you have developed an initial prototype of the SPMS that enabled users to access assessments and grades of Year 11 students. In this Assignment you are extending the prototype so that a new user can register and later login and access the data by sending request to the server more securely. You must implement a multiple-threaded client/server application that allows multiple users to register/access and use the functions listed below.

The user should be able to execute the following menu items:

1. Register by entering a user name and password (new in Assignment 2)

2. Securely login by entering a UserId and Password (new in assignment 2)

All users accessing the SPMS should able to view the following data:

1. List of assessments for a chosen subject

2. Grades of assessments for a student Administrator should be able to access the SPMS to:

1. Set grade for a chosen student and subject

2. Add a student (new in assignment 2)

Note: You will be given a data file containing list of subjects and assessment details from Term 1 2020.

Design Guidelines:

You can use the following guidelines in your modelling and design.

Sever side

The server should enable the following functionalities. The server creates a new thread for each client connection (thread-per-connection model). The server side receives client requests, processes them and returns results. Multiple read requests are executed concurrently.

During the first run of the program the server loads the data from the file as soon as it starts and creates the database and stores the subjects and assessments.

The server should also save all the data newly entered such as user registration, and new students to the database when the application stops. The server should also save all the newly entered data when a user exits from the application.

User Registration/Log in

Once the server exchanges a message "hello" between the client, the server sends a message to the client which displays two options to the client, 'New User' or 'Registered User'. If the client connection is from a New User the server sends message to collect the type of user- student or admin and the user's name (full name).

In case of a new user the server searches the database for the user's name if it exists enables the user to enter and verify a password. The server sends a PublicKey to the client for sending an encoded password. The server decodes the user's password using the privateKey. The server stores the decoded Password in the database. Server sends the database generated UserId to the client. This completes the registration process.

If the client connection is from an existing user the server sends message to collect the UserId and Password. The server sends the PublicKey to the client for sending an encoded password. The server decodes the user's password using the privateKey. The server connects to the database, searches and gets the stored password and verifies that the password entered matches the stored password. If the password is verified user gets logged in.

Once the user is registered or authenticated, the server sends the menu listing to the client and processes the request as received. Multiple client requests are executed concurrently. Therefore, saving new user details received from multiple clients should be synchronised.

Request for view Assessments for a subject (Same as Assignment One)

If the client request is to view assessments for a subject, the server should parse the request received from the client and execute appropriate database queries to extract data and send the data back to the client.

Request to view grades of a student (Same as Assignment One)

If the client request is to view grades of a student, the server should parse the request containing the student's name received from the client and execute appropriate queries to extract all the graded assessments and send the data back to the client.

Request to set grade for a specific assessment of a student (Same as Assignment One)

If the client request is to set grade, the server should parse the request containing student's name, subject name, assessmentId, and achievement value to execute database query and update the database with the new grade. (It is assumed that the user is aware of the ungraded assessments or the user can display grades to view the current grade status. This is to reduce the complexity of the database operation as that is not the focus of this unit.) This should be synchronised as multiple clients will be running through multiple threads.

Request to add a student

If the client request is to add a student, the server should parse the request containing student's name, and year level and add that to the

Database.

All the newly entered data can be written to the database when the user exits the application.

Client side

The client side interacts with the user, parses the request and sends it to the server. It receives messages from the server and displays to the user. The client starts with receiving the options to choose from one of 'New User' or 'Registered User'. In case of a new user the client should send the user name to the server's request.

The server sends the PublicKey for encrypting the password and sending that to the server. The client should receive the PublicKey, extract the key using the key specification, and use it to encrypt the password. The encrypted password is sent to the server. Once the registration or authentication is completed the client receives the menu listing from the server. The query frontend provides a menu to let a user choose any of the functions continuously until the user chooses to exit the SPMS.

Database

The data base should have the following tables

1. Student to store student name, year level (studentId: primary key)

2. Subject to store subject name (subjectId: primary key)

3. Assessment to store the Assessment details as shown in Table 2 (use composite key of subjectId and Assessment Id)

4. Grade to store the Grade details as shown in Table 3

5. StudentGrade to store the set grade for an Assessment item of a student (use composite key of StudentId, subjectId, AssessmentId, and gradeId).

6. Admin to store the name of the admin user (adminId: primary key) (a list is given in Table 2)

Responding to Client Requests involving execution of search queries

When the program starts you can run queries to read the database tables and store the data in appropriate data structures such as LinkedList. Use lambdas and streams for searching and filtering. It takes more time to connect to the database residing in the disk compared to accessing data residing in the program memory.

Student data given below can be used for testing purposes. Add any other table/s as necessary.

Note: The table listings only show the values to be stored as per the user requirements. The primary keys are generated during the programmatic creation of the tables and used for other database operations. These keys need not be displayed to the user. The primary keys can be auto-incremented integer values. One Student has to enrol in five Subjects and each Subject is enrolled by many Students. (many - to - many). You may add additional tables as required for the correct functioning of the database. Create an ERD to understand the relationship between tables.

Coding

Include necessary accessor, mutator methods, constructors, and toString() method for each class. Also, follow good coding practices, using meaningful names, camel case notation for naming, constants as necessary, and include meaningful comments. Complete the UML class diagrams for the required classes that will improve clarity. The Use NetBeans to insert code after entering the class name and including the attributes.

Team work

You work in Teams. The minimum team size is three (3). You can choose your own team members. Please inform your tutor by Week 6, who your team members are. If you have problem forming a team, please contact your tutor. Team work is to contribute to the development of graduate attributes: ethical and professional responsibility, and leadership. This is a highly regarded soft skill by employers. Therefore, one of the team members should take the team leadership role each week, organize team meetings, and write the minutes of meeting (what you have discussed and the outcome). You should also allocate tasks to each team members. Team members should collaborate to solve problems.

Report

Submit an individual report by each team member with the following details.

1. Provide a diagrammatic representation of the SPMS architecture.

2. Include a test plan, and user instructions.

3. The admin staff (or teachers) will be updating students' grade as they finish marking. The system should be sending a message to all students and these messages should be available to students as they login. Discuss how multicasting can be used for this purpose. Provide a design of the multicasting feature explaining the technical details of how it works. This feature need not be implemented.

4. Give details of your team work including your role in each week (Weeks 6, 7, 8, 9), tasks allocated and completion, summary of meeting minutes (attendees, date and time, topics discussed), your experience of learning and collaborative problem solving.

Get High-Quality and Authentic Distributed Systems: Principles and Development Assignment Help Service Right Now and Score A++ At Reasonable Prices.

Tags: Distributed Systems: Principles and Development Assignment Help, Distributed Systems: Principles and Development Homework Help, Distributed Systems: Principles and Development Coursework, Distributed Systems: Principles and Development Solved Assignments, Multicasting Assignment Help, Multicasting Homework Help, SPMS Architecture Assignment Help, SPMS Architecture Homework Help, ERD Assignment Help, ERD Homework Help, Database Assignment Help, Database Homework Help

Request for Solution File

Ask an Expert for Answer!!
Computer Engineering: Apply principles of distributed systems to authentic problem
Reference No:- TGS03032233

Expected delivery within 24 Hours