Reference no: EM133048042
SOFT40051 Advanced Software Engineering - Nottingham Trent University
Chat application written in C++ and Java
Assessment Requirements
The assignment is group coursework (with some individual tasks, see Section 1 and 2). Given the problem scenario in Section 2, the group is required to produce a collective report of the designed and implemented software application. A Video demonstrating the software is required and a video link MUST be submitted into the Dropbox folder named Video link. The portfolio (one per group) MUST be submitted electronically through NOW before the deadline:
Students MUST use the following convention for naming their folders and files: "Group_X_ASE_Report" (for example, Group_X where X is the name of the group -report for the assignment of the module SOFT40051). Students are also advised to add the same information to the header section of your submitted document.
All files MUST be submitted in a single, main folder per group.
The zipped file MUST have the following structure:
SRC containing all the code files (mandatory);
TESTS with the tests' source code and README file explaining how to run the tests
BUILD containing the build files:
RESULTS with results material/images of the software.
DOC containing Reference and User manuals, and report in the PDF/html formats.
Please upload all the videos to YouTube and provide the links in the reports. DO NOT include videos in the zip file.
The code MUST also be stored in a git repository. Please refer to Lab 2 to learn how to setup your git repository. Students are encouraged to add links to the main git repository in the report. This will enable you to recover quickly should the system fail and allow you to backtrack if your development goes astray.
Ensure that the work submitted will execute on the Ubuntu VMs provided.
Keep evidence of the submission of your assignment, and a copy of your assignment in case of the unlikely event of any loss.
Assessment Scenario/Problem
The project
Nowadays, is common to have applications written in more than one programming language. You will design and implement two chat applications (one in C++ and another in Java) using the client/server architecture. In this project, you will have to code in both C++ and Java to enable users to exchange messages between the java and C++ application. Please use the examples provided in the weekly labs to develop the application.
The collaborative platform must provide the following functionalities:
MUST provide a friendly User Interface (UI).
Users MUST only access their space after the login;
Passwords MUST be saved securely locally.
Each application (C++ and Java) MUST have a client and a server to ensure independent full-duplex communication (I.e. each client can start a new communication with the other application at any time and vice-versa).
The client SHOULD list all the personal contacts in the contacts pane;
The full history of the conversation COULD be listed when a specific contact is selected;
The user MUST be able to create chatrooms (rooms with more than two contacts);
Users MUST be able to see the active users in the chat room;
Offline messages COULD be stored in the client-side and transmitted to the target user(s) once they are online;
The user COULD be able to send emoji;
The user SHOULD be able to change his details including his picture;
Configurations (e.g. user details, contact list, etc) should be saved in JSON file;
The JSON file must be compatible with both applications (i.e. C++ and Java).
Implementation
You are expected to implement the above software system using C++ and Java. Please use the examples provided in the weekly labs to develop the application. The final application MUST meet the following requirements:
Make use of the STL library in C++ and JavaFX in Java
the demo must show the two applications exchanging messages between them
Error handling must be used when needed
at least one class where private member functions for common functionality that should not be exposed in the public interface
at least a simple GUI that allows users to interact with the system software
appropriate testing cases and testing library
Both applications should work as expected, i.e., if the applications do not work then the mark could be reduced even if the individual task is completed well.
The classes need to reflect on the chosen architecture style, e.g., if MVC (recommended) is chosen, then it is expected to have classes for Controller, View and Model (including any subclasses).
Concurrent programming should be used when appropriate.
Documentation
All group members are responsible to upload all the documentation. You will deliver a structured report. The report MUST include the following structure:
Cover page identifying the group members
Abstract
Plagiarism declaration
Revision history
Table of contents
List of tables
List of Images
Introduction
Background research - provide an overview of the external tools and libraries that were used to implement your application (e.g. docker, QT, BOOST, etc.).
Design including the following information:
list of requirements and restrictions using the MoSCoW analysis
list of tasks
time plans
adopted coding standards
other relevant information.
Implementation details. Please DO NOT add any code to your report. Use instead the UML diagrams and pseudo-code. Please explain all the diagrams. Note that the figure's caption is shown at the bottom of the figure.
All the test Scenarios MUST be specified using Table 1. Note that the tables caption is shown at the top of the table.
Please provide details about each of the unit, integration, functional and acceptance tests.
Results:
Include screenshots of your application and EXPLAIN every image. All the figures MUST contain captions and be mentioned in the text. Note that the figure's caption is shown at the bottom of the figure.
Include YouTube links (one per each test) as footnotes using the following format "Available online, <url>, last accessed <date>".
Discussion of the test results.
Conclusions and Future work
References List using the Harvard citations style.
Individual contributions per member.
Overall reflection of the work done.
Appendix (include the reference manual)
Please include the following information:
A general description of the system.
Use case diagram(s) and explain the diagram(s).
Class Diagram(s) and explain the diagram(s).
Sequence Diagram(s) and explain the diagram(s).
Communication UML Diagram(s) and explain the diagram(s).
An explanation of any design pattern used.
Reference Manual (DOC folder of your zipped file).
An explanation of the planned architecture and the reason of the choices (follow step 4 and 5, i.e., identify possible architecture styles and choose one with respect to the identified utility tree, you need to explain the reason).
An explanation of any C++/Java library used.
An explanation of the internal data structures used and the reason of the choices.
An explanation of the search or sorting algorithm used (and concurrent programming, if any) and the reason for the choices. Explain how the algorithm will work in the system with detailed steps.
Examples (screenshots) of the user interface.
An explanation about the software testing process and metrics.
A user manual (DOC folder of your zipped file).
Discussion and conclusion about your results (reflection on testing approach, reflection on performance such as computational efficiency, reliability, security, portability, maintainability, scalability, and design of system complexity).
A summary of the group experience.
Demo video link (Add it to the Dropbox folder Video link)
Attachment:- Assessment - Chat application.rar