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...

1 answer below »
need help with assignment


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: 1. To prepare you for this assignment, read the modules 1, 2 and 6 content and follow the embedded learning activities. 2. This Assignment is a continuation to Assignment #1, already completed. 3. Similarly to Assignment #1, you require a drawing software that allows you to draw diagrams and charts. a. The following tool is a suggestion: i. Standalone app of https://app.diagrams.net/ which can be downloaded here https://github.com/jgraph/drawio-desktop/releases/tag/v13.6.2 ii. You are welcome to use any other such as Microsoft Visio (Windows only), pen and paper (literally). 4. You require the use of Swagger Editor either installed: a. On your local (https://github.com/swagger-api/swagger-editor) or b. 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: 1. There should be at least 2 roles – Producer and Subscriber; 2. Producer role is the same as Subscriber but has some extra capabilities – it can produce messages, which Subscribers get; 3. User may have both roles at the same time; 4. Users having Subscriber role may subscribe to as many Producers as they want to; 5. All messages stored in database, can be easily searched based on at least criteria: a. User (Producer) ID – means who wrote it; b. 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: 1. 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; 2. 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. 3. 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; 4. 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: 1. Using your data model from the previous assignment, you need to create the following diagrams and charts: a. Activity diagrams, describing the algorithm of possible actions, happening in your system; b. Functional diagrams of all components (services) describing a structure of the application; c. Sequence diagrams, describing API calls and low-level access; d. Class diagrams for all your services. 2. 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. a. 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; 3. Save all diagrams as JPEG pictures Submission Guidelines: 4. 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: a. Activity diagrams, describing the algorithm of possible actions, happening in your system; b. Functional diagrams of all components (services) describing a structure of the application; c. Sequence diagrams, describing API calls and low-level access; d. Class diagrams for all your services. 1 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="" assignment="" #1:="" data="" model="" [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:="" check="" your="" ability="" to="" effectively="" execute="" the="" planning="" of="" enterprise="" applications="" by="" defining="" a="" schema="" of="" a="" data="" model="" in="" terms="" of="" mvc="" and="" to="" choose="" a="" communication="" model.="" pre-assignment="" instructions:="" 1.="" to="" prepare="" you="" for="" this="" assignment,="" read="" the="" modules="" 3,="" 4="" and="" 5="" content="" and="" follow="" the="" embedded="" learning="" activities.="" 2.="" you="" require="" a="" drawing="" software="" that="" allows="" you="" to="" draw="" diagrams="" and="" charts.="" a.="" the="" following="" tool="" is="" a="" suggestion:="" i.="" standalone="" app="" of="" https://app.diagrams.net/="" which="" can="" be="" downloaded="" here="" https://github.com/jgraph/drawio-desktop/releases/tag/v13.6.2="" ii.="" you="" are="" welcome="" to="" use="" any="" other="" such="" as="" microsoft="" visio="" (windows="" only),="" pen="" and="" paper="" (literally).="" 3.="" you="" also="" must="" have="" the="" following="" database="" installed="" on="" your="" computer.="" a.="" for="" simplicity:="" i.="" i="" used="" mysql="" v.8+="" (https://dev.mysql.com/downloads/),="" and="" provided="" you="" an="" example="" of="" the="" data="" model="" in="" module="" 5.="" ii.="" you="" may="" use="" any="" database="" you="" wish,="" moreover="" if="" you="" decide="" to="" switch="" your="" solution="" to="" nosql="" it="" would="" be="" considered="" as="" a="" bonus="" –="" note:="" it="" should="" be="" correct="" and="" workable,="" otherwise="" no="" bonuses="" will="" be="" added).="" assignment="" description:="" in="" this="" assignment="" you="" will="" start="" by="" developing="" a="" backend="" for="" a="" twitter-like="" application.="" the="" functionality="" of="" the="" application="" should="" have="" the="" following:="" 1.="" at="" least="" 2="" roles="" a.="" producer;="" and="" b.="" subscriber="" 2.="" the="" producers="" role="" is="" the="" same="" as="" the="" subscriber,="" but="" has="" some="" extra="" capabilities:="" a.="" the="" producer="" can="" produce="" messages,="" which="" the="" subscribers="" get="" 3.="" user="" may="" have="" both="" roles="" at="" the="" same="" time;="" 4.="" users="" having="" the="" subscriber="" role,="" which="" means="" they="" can="" subscribe="" to="" as="" many="" producers="" as="" they="" want="" to;="" 5.="" all="" messages="" stored="" in="" the="" database,="" can="" be="" easily="" searched="" based="" on="" the="" following="" criteria:="" a.="" user="" (producer)="" id="" –="" means="" who="" wrote="" it;="" b.="" message="" content="" assignment="" tasks:="" what="" you="" should="" do:="" 1.="" acquiring="" mvn="" design="" pattern,="" you="" need="" to="" build="" a="" data="" model="" for="" the="" application="" described="" in="" the="" assignment="" description="" section="" together="" with="" api="" contracts="" 2.="" as="" a="" result,="" you="" should="" have="" the="" following:="" ·="" erd="" diagram="" (if="" you="" use="" rdbms)="" as="" a="" picture="" of="" jpeg/png="" format;="" ·="" script="" to="" create="" the="" data="" model="" in="" the="" db="" (sql="" for="" rdbms,="" cql="" for="" cassandra,="" etc.),="" which="" should="" be="" runnable,="" and="" creates="" an="" expected="" data="" structure;="" ·="" script="" to="" populate="" the="" database="" with="" few="" records="" (2-3="" users,="" 5-7="" messages);="" ·="" a="" minimum="" of="" the="" following="" queries:="" i.="" get="" list="" of="" users;="" ii.="" get="" list="" of="" content="" producers;="" iii.="" get="" list="" of="" content="" subscribers="" (full);="" iv.="" get="" list="" of="" content="" subscribers,="" subscribed="" on="" specific="" producer;="" v.="" get="" all="" messages;="" vi.="" get="" all="" messages="" created="" by="" specific="" producer;="" vii.="" get="" all="" messages="" for="" given="" subscriber="" (it="" may="" include="" messages="" from="" multiple="" producers).="" assignment="" submission="" 3.="" you="" need="" to="" submit="" an="" archive="" with="" name="" pattern="" {course="" #}_{section="" #}_{last="" name}_{first="" name}.zip="" containing="" the="" following:="" ·="" erd="" diagram="" (if="" you="" use="" rdbms)="" as="" a="" picture="" of="" jpeg/png="" format;="" ·="" script="" to="" create="" the="" data="" model="" in="" the="" db="" (sql="" for="" rdbms,="" cql="" for="" cassandra,="" etc.);="" ·="" script="" to="" populate="" the="" database="" with="" few="" records="" (2-3="" users,="" 5-7="" messages);="" ·="" list="" of="" queries="" in="" regular="" text="" file;="" ·="" screenshots="" demonstrating="" the="" result="" of="" each="" query="" execution.="" 1="" 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 entity relationship diagram: sql to create database and populate tables: -- creating database --create database test_d use test_d -- creating producer table create table producer ( producer_id int identity(101, 1) primary key, producer_name varchar(50) not null, tweet_message varchar(280), email varchar(70) ) go -- creating subscriber table create table subscriber ( subscriber_id int identity(201, 1) primary key, subscriber_name varchar(10) not null ) go -- creating mapping table to join producer and subscriber table create table tbl_mapping ( producer_id int references producer(producer_id), subscriber_id int references subscriber(subscriber_id) ) go --- inserting input into producer table insert into producer values ('kallie blackwood', 'thank you for everything.', '[email protected]'), ('johnetta abdallah', 'my last ask is the same as my first.', '[email protected]'), ('bobbye rhym', 'always in my heart', '[email protected]'), ('micaela rhymes', 'the entire planet has gone batshit crazy.', '[email protected]'), ('tamar hoogland', 'twitter is the pvp of social media', '[email protected]') go -- all records from producer table select * from producer -- inserting into subscriber values insert into subscriber values ('lee'), ('zhang'), ('wang'), ('nguyen'), ('garcia'), ('tom'), ('ellen'), ('karan'), ('julia'), ('akram') go sql queries: -- all records from subscriber table select * from subscriber -- inserting values into mapping table insert into tbl_mapping values (101, 201), (101, 202), (101, 203), (102, 205), 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="" entity="" relationship="" diagram:="" sql="" to="" create="" database="" and="" populate="" tables:="" --="" creating="" database="" --create="" database="" test_d="" use="" test_d="" --="" creating="" producer="" table="" create="" table="" producer="" (="" producer_id="" int="" identity(101,="" 1)="" primary="" key,="" producer_name="" varchar(50)="" not="" null,="" tweet_message="" varchar(280),="" email="" varchar(70)="" )="" go="" --="" creating="" subscriber="" table="" create="" table="" subscriber="" (="" subscriber_id="" int="" identity(201,="" 1)="" primary="" key,="" subscriber_name="" varchar(10)="" not="" null="" )="" go="" --="" creating="" mapping="" table="" to="" join="" producer="" and="" subscriber="" table="" create="" table="" tbl_mapping="" (="" producer_id="" int="" references="" producer(producer_id),="" subscriber_id="" int="" references="" subscriber(subscriber_id)="" )="" go="" ---="" inserting="" input="" into="" producer="" table="" insert="" into="" producer="" values="" ('kallie="" blackwood',="" 'thank="" you="" for="" everything.',="" '[email protected]'),="" ('johnetta="" abdallah',="" 'my="" last="" ask="" is="" the="" same="" as="" my="" first.',="" '[email protected]'),="" ('bobbye="" rhym',="" 'always="" in="" my="" heart',="" '[email protected]'),="" ('micaela="" rhymes',="" 'the="" entire="" planet="" has="" gone="" batshit="" crazy.',="" '[email protected]'),="" ('tamar="" hoogland',="" 'twitter="" is="" the="" pvp="" of="" social="" media',="" '[email protected]')="" go="" --="" all="" records="" from="" producer="" table="" select="" *="" from="" producer="" --="" inserting="" into="" subscriber="" values="" insert="" into="" subscriber="" values="" ('lee'),="" ('zhang'),="" ('wang'),="" ('nguyen'),="" ('garcia'),="" ('tom'),="" ('ellen'),="" ('karan'),="" ('julia'),="" ('akram')="" go="" sql="" queries:="" --="" all="" records="" from="" subscriber="" table="" select="" *="" from="" subscriber="" --="" inserting="" values="" into="" mapping="" table="" insert="" into="" tbl_mapping="" values="" (101,="" 201),="" (101,="" 202),="" (101,="" 203),="" (102,="">
Answered 10 days AfterFeb 13, 2023

Answer To: Assignment #2 – High level component design and API contract [10%]This assignment relates to the...

Robert answered on Feb 24 2023
34 Votes
Functional Diagram:
Activity Diagram:
Sequence Diagram:
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here