High level component design and API contract Assignment
- University :
- Country :
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.
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