Assignment #2 – High level component design and API contract [10%]
This assignment relates to the following Course Learning Requirements:
CLR 1: Identify, explain, and use various technologies used in the Enterprise environment.
CLR 3: Implement Web Server integration with enterprise applications.
CLR 5: Utilize as well as defend against common security vulnerabilities found in enterprise applications and the multi-server networked environment.
CLR 6: Implement and Integrate various Java based technologies used in the enterprise environment.
Objective of this Assignment:
Purpose of this assignment is to finalize a service model (not a data model only in terms of MVC) as a whole and create documentation in terms of UML diagrams using data model from the previous assignment:
– Functional diagrams
– Sequential diagrams
– Low level class diagrams
You must also create API Endpoint contracts for each model you will use.
As a result, there should be UML diagrams for each service, as well as API Endpoint description with/without using Swagger.
Pre-Assignment Instructions:
To prepare you for this assignment, read the modules 1, 2 and 6 content and follow the embedded learning activities.
This Assignment is a continuation to Assignment #1, already completed.
Similarly to Assignment #1, you require a drawing software that allows you to draw diagrams and charts.
The following tool is a suggestion:
Standalone app of https://app.diagrams.net/ which can be downloaded here https://github.com/jgraph/drawio-desktop/releases/tag/v13.6.2
You are welcome to use any other such as Microsoft Visio (Windows only), pen and paper (literally).
You require the use of Swagger Editor either installed:
On your local (https://github.com/swagger-api/swagger-editor) or
Used online (https://editor.swagger.io/).
Assignment description:
Remembering the Basic Functionalities from Assignment #1
In this assignment you will continue to develop a backend for a Twitter-like application. Please remember its basic functionality:
There should be at least 2 roles – Producer and Subscriber;
Producer role is the same as Subscriber but has some extra capabilities – it can produce messages, which Subscribers get;
User may have both roles at the same time;
Users having Subscriber role may subscribe to as many Producers as they want to;
All messages stored in database, can be easily searched based on at least criteria:
User (Producer) ID – means who wrote it;
Message content
Understanding the general concept for this application
For this Assignment, the interactions (for general understanding, not for implementation at this moment) with the application should be as follows:
There’s a back-end application which has an exposed API allowing users to be authenticated and authorized (use data model from module 5) – UserManagementService;
User must be logged in and have obtained a token. For simplicity, imagine the token is a simple ID, like number, UUID, hash, something else, producing by the UserManagementService at the first authentication request and returned to the user for further authorization purposes.
After the user has been authenticated and obtained a token, he/she is able to use other APIs, related to publishing and obtaining messages; in case of unauthenticated access user should be simply redirected to UserManagementService to obtain a token; if user has a token but his/her rights are insufficient to perform a request – there should be appropriate response with HTTP status 401;
Using other APIs, user is able to publish messages and/or receive messages published by other users.
Assignment Tasks:
Now that you have reviewed the Assignment #1 information as well as gained some background to the application at hand, you will now begin implementation of the following.
What you should do:
Using your data model from the previous assignment, you need to create the following diagrams and charts:
Activity diagrams, describing the algorithm of possible actions, happening in your system;
Functional diagrams of all components (services) describing a structure of the application;
Sequence diagrams, describing API calls and low-level access;
Class diagrams for all your services.
Once you have developed each of the diagrams as per the instructions above, please use Swagger Editor to build an API contract for each of the services you created in step # 1.
As a result, you should have a YAML file, which can be shared with your facilitator. An Example of that file is in module 5;
Save all diagrams as JPEG pictures
Submission Guidelines:
You need to submit an archive with the name pattern {Course #}_{Section #}_{Last name}_{First name}.zip containing the YAML file for Swagger Editor as well as the following JPEG pictures:
Activity diagrams, describing the algorithm of possible actions, happening in your system;
Functional diagrams of all components (services) describing a structure of the application;
Sequence diagrams, describing API calls and low-level access;
Class diagrams for all your services.
Assignment Grading Rubric (10%)
Criteria |
Excellent 80-100% |
Good 50-79% |
Requires Improvement <50% |
Points |
Assignment Quality |
All information provided is accurate
All information is clearly expressed and well explained
Contains original ideas, connections or applications |
Most information provided is accurate
All information clearly expressed and explained
Contains mainly original ideas, connections or applications |
Some or no provided information offered
Information is rarely or never clear and require further explanation
Many non- original ideas, or unclear connections or applications |
/1 |
Comments |
||||
Assignment Knowledge and Skills Demonstration |
Clear, concise synthesis of course content to demonstrate understanding of topic All ideas are clearly developed, organized logically, and connected with effective transitions
Explores ideas, supports points fully using a balance of evidence, uses effective reasoning to make useful distinctions All relevant course and topic links are made |
Evidence of some synthesis of course content to demonstrate understanding of topic Some unified and coherent ideas are developed with effective transitions Supports most ideas with effective examples, and/or references, and details, makes key distinctions Most relevant course and topic links are made |
Lack of evidence or weakness in the synthesis of course content to demonstrate understanding of topic Develops and organizes ideas that are not necessarily connected. Some ideas seem illogical and/or unrelated Presents ideas in general terms, most ideas are inconsistent/unsupported, and reasoning is flawed or unclear Some or no relevant course and topic links are made |
/8 |
Comments |
||||
Assignment Structure |
Formatted as per assignment details Structure and format enhance delivery of the information |
Formatted as per assignment details in most components Structure and format fits well with the delivery of the information |
Formatting has not been followed Structure and format are unclear and impedes delivery of the information |
/1 |
Comments |
||||
Total Points |
10 |
7 |
5 |
/10 |