Software Architecture and Design Assignment: Streaming Wars Project, Assignments of Software Engineering

An assignment for a university course, CS6310 – Software Architecture & Design, focused on developing a system to track streaming services offerings and usage by different demographic groups. Students are required to submit a UML Class Diagram and answers to design questions. The system allows users to create and update demographic groups and interact with streaming services, tracking costs, revenues, and licensing fees.

Typology: Assignments

2020/2021

Uploaded on 02/03/2022

karthick-mp
karthick-mp 🇺🇸

5 documents

1 / 6

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
CS6310 – Software Architecture & Design
Assignment #1 [100 points]: Streaming Wars Project – Analysis & Design (v1)
Spring Term 2021 – Instructor: Mark Moss
!
Submission
This assignment must be completed as an individual, not as part of a group.
You must submit:
(1) A UML Class Model Diagram named class_diagram.pdf;
(2) Answers to the provided Design Questions as question_answers.pdf.
You may divide your UML Class Model Diagram into multiple diagrams/files if needed. For
example, if the initial diagram is so large that dividing it into multiples makes it significantly easier
to read, then you may submit multiple files with reasonable name extensions such as
class_model_1.pdf, class_model_2.pdf, etc. You must provide enough context for the multiple
diagrams to allow us to connect them together to understand the singular/completed diagram.
Formats other than PDF must be pre-approved an Instructor or TA.
You must notify the Instructors and TAs via a private post on Piazza BEFORE the Due Date if you
are encountering difficulty submitting your project. Send the message to “Instructors” when
posting your message in Piazza, as opposed to addressing a message to just one individual, to
ensure that it is acknowledged as quickly as possible.
You will not be penalized for situations where Canvas is encountering significant technical
problems. However, you must alert us before the Due Date – not well after the fact. You are
responsible for submitting your answers on time in all other cases.
Please consider that uploading files to Canvas might occasionally take a long time, even in the
case of seemingly “relatively small” submissions. Please plan accordingly, as submissions outside
of the Canvas Availability Date will most likely not be accepted. You are permitted to make
unlimited submissions, and we recommend that you save, upload and submit often.
Problem Scenario
With the current pandemic conditions, many of us spend a significant amount of time indoors. Many
people miss the “Friday Night at the Movies” and “Summer Blockbuster” movie-going experiences.
Meanwhile, streaming services like Netflix, Hulu, Disney Plus and Amazon Prime Video are offering
(and expanding) their services. This project involves you developing a system that will allow users to
track the different offerings from various streaming services, as well as how these offerings are being
accessed by different demographic groups of consumers, and display usage measurements for the
various services, in terms of number of movies rented, dollars spent, etc.
Your task in this assignment is to review the problem description below, and then provide design
artifacts – namely, a UML class model – that includes enough detail to support the requirements
below. You will also provide answers to questions to elaborate on how your design addresses the
problem requirements. The answers to your questions should be consistent with your design.
pf3
pf4
pf5

Partial preview of the text

Download Software Architecture and Design Assignment: Streaming Wars Project and more Assignments Software Engineering in PDF only on Docsity!

CS 6310 – Software Architecture & Design Assignment # 1 [ 100 points]: Streaming Wars Project – Analysis & Design (v1) Spring Term 2021 – Instructor: Mark Moss Submission

  • This assignment must be completed as an individual, not as part of a group.
  • You must submit: ( 1 ) A UML Class Model Diagram named class_diagram.pdf ; ( 2 ) Answers to the provided Design Questions as question_answers.pdf.
  • You may divide your UML Class Model Diagram into multiple diagrams/files if needed. For example, if the initial diagram is so large that dividing it into multiples makes it significantly easier to read, then you may submit multiple files with reasonable name extensions such as class_model_1.pdf , class_model_ 2 .pdf , etc. You must provide enough context for the multiple diagrams to allow us to connect them together to understand the singular/completed diagram.
  • Formats other than PDF must be pre-approved an Instructor or TA.
  • You must notify the Instructors and TAs via a private post on Piazza BEFORE the Due Date if you are encountering difficulty submitting your project. Send the message to “Instructors” when posting your message in Piazza, as opposed to addressing a message to just one individual, to ensure that it is acknowledged as quickly as possible.
  • You will not be penalized for situations where Canvas is encountering significant technical problems. However, you must alert us before the Due Date – not well after the fact. You are responsible for submitting your answers on time in all other cases.
  • Please consider that uploading files to Canvas might occasionally take a long time, even in the case of seemingly “relatively small” submissions. Please plan accordingly, as submissions outside of the Canvas Availability Date will most likely not be accepted. You are permitted to make unlimited submissions, and we recommend that you save, upload and submit often. Problem Scenario With the current pandemic conditions, many of us spend a significant amount of time indoors. Many people miss the “Friday Night at the Movies” and “Summer Blockbuster” movie-going experiences. Meanwhile, streaming services like Netflix, Hulu, Disney Plus and Amazon Prime Video are offering (and expanding) their services. This project involves you developing a system that will allow users to track the different offerings from various streaming services, as well as how these offerings are being accessed by different demographic groups of consumers, and display usage measurements for the various services, in terms of number of movies rented, dollars spent, etc. Your task in this assignment is to review the problem description below, and then provide design artifacts – namely, a UML class model – that includes enough detail to support the requirements below. You will also provide answers to questions to elaborate on how your design addresses the problem requirements. The answers to your questions should be consistent with your design.

Project Timeline This is the first phase of the course project. Your goal for this phase of the project is to review the provided problem description, and to identify the entities, attributes, operations, methods and relationships that are key to the successful design and development of the system. You’ll review the system requirements and specifications and provide design artifacts (e.g., UML structural and/or dynamic diagrams) and other responses that represent your proposed design and how it addresses the problem’s challenges. This is similar to the Object-Oriented Analysis discussed in Udacity videos P2L1 – P2L3 and demonstrated in P2L5. In the second phase of the course project, you’ll be asked to provide peer reviews for some of your fellow classmates. You’ll be granted access to their submissions and design artifacts from the first phase of the project, and then you’ll provide feedback on their designs. Reviewing other designs – especially those of your peers – can help you make you more aware of alternative design approaches. The actual grade for each student’s “first phase” submission will be determined solely by a TA’s evaluation of their design – not your feedback – so please be candid and professional when providing your review. Your grade for this second phase of the project will be based on the quality and thoroughness of the feedback that you provide to your peers. In the third phase of the course project, you’ll be asked to implement these requirements. It’s often the case that implementing a system can help you identify aspects of the problem description that are unclear, ambiguous or possibly even contradictory. It can assist you in identifying aspects of your architecture and design that are faulty and/or incomplete. You will develop, build and test a “lightweight version” of the core system to help you further think through (and possibly improve) the quality of your design. We will evaluate the correctness of your system from a source code quality and design standpoint, and by how well your system actually passes a set of test cases. The first three phases of the course project are all performed individually. In the final phases of the course project, you’ll work in teams to achieve two major goals: (A) Select three distinct improvements to the system, each of which will require some significant change to the current architecture and/or design; and, (B) Implement your changes, and then provide design artifacts that document your design changes. You’ll work together as a group of three, four or five designers to determine a single unified design using some of the techniques mentioned in Udacity videos P2L4, P3L5, and others. Then, you’ll work together to weigh the various architectural tradeoffs and build a single, core system that represents (and improves upon) your concepts from the earlier phases. You will also provide a video demonstration of how your system addresses the requirements, along with a description of how your final “as-is” system and design artifacts compare to the “to-be” artifacts you developed earlier. Finally, you might also have to account for some relatively minor changes in the requirements from the earlier phases. Changes occur often in many projects, and this is an opportunity to consider strength of your original designs based on the amount of effort needed to update your most recent designs to accommodate the changed requirements.

People, Accounts & Demographic Groups At the heart of our problem description are the people – the potential show viewers. They are the ones who will purchase various shows from the different services.

  • Instead of tracking individual people, we will track accounts, where an account can represent one or more people as a “family” with shared viewing privileges.
  • Furthermore, to think more about scale, we will create demographic groups. A demographic group will contain zero or more accounts
  • An example of a demographic group might be “persons between the ages of 40 – 50”, or “persons who’ve attended Comic-Con”. There are no specific rules or limitations on how the demographic groups must be named or related.
  • Users will be allowed to create and update the number of accounts in a demographic group as needed.
  • Demographic groups will be referred to by their “short name” (e.g. “age_40_50”) but must also allow for a longer and more descriptive “long name” (e.g., “persons between the ages of 40 – 50”) to be stored.
  • Each demographic group will have a specific number of accounts in that group. That number of accounts might vary over time.
  • Each demographic group will spend money representative of the shows that its members have watched so far, which can also vary over time. Shows, Movies, and Other Televised Events People normally want to watch shows, movies and other televised events. For our current version of the system, we will consider two basic types of events: movies and Pay-Per-View (i.e., PPV) events.
  • Each movie will have a name and a duration. To avoid conflicts, a movie will also have a year in which it was produced, since there have been movies with the same name produce in different years (e.g., remakes, etc.). A specific movie name (e.g., “Mulan”) will always be unique within a given year (e.g., 1998).
  • Each movie will also belong to one or more genres. Commonly, these genres will include values such as “drama”, “horror” or “sci-fi”, and the user should be able create new genres as needed.
  • Each movie can be offered by multiple streaming services. When members of a demographic group want to watch a movie, they must explicitly select from which of the streaming services they will purchase the movie.
  • Pay-Per-View (PPV) events are basically similar to movies in terms of the descriptive information needed to represent them: name, duration, genres, etc. The main difference between the movies and Pay-Per-View events are in how they are handled for billing purpose. This will be discussed further in the section on streaming services. Streaming Services People (via their demographic groups) access the movies and Pay-Per-View events that they want to watch by accessing one or more streaming services. For our current version of the system, we will consider two basic types of events: movies and Pay-Per-View events.
  • Each streaming service will be identified by a “short name” like “apv”, along with a more descriptive “long name” such as “Amazon Prime Video”.
  • Each streaming service can offer zero or more movies and Pay-Per-View events.
  • When a service offers one or more movies, then that service must also set and advertise a monthly flat-rate subscription price for the service as a whole. Viewers can then watch as many movies as desired per month for the price of a subscription.
  • When a service offers one or more Pay-Per-View events, then that service must also set and advertise a single-view price for each specific event. Viewers can then watch that specific Pay-Per- View event as long as they pay that specific event price. They do not need to pay the subscription price for the streaming service itself – some portion of the subscription fee will already be included in the PPV-event price.
  • Services must publish a directory of the events that they will offer each month to viewers. Studios and Publishing Groups The movies and Pay-Per-View events that are watched by viewers must be developed and produced by a studio or publishing group. The studios and publishing groups make money by producing these events and licensing them to various streaming services.
  • Each studio will be identified by a “short name” like “sony_col” or "sony_tri", along with a more descriptive “long name” such as “Sony_Pictures_Columbia” or “Sony_Pictures_TriStar”.
  • For our current licensing model, we will keep it simple by having a studio offer one specific price for each movie or Pay-Per-View event. Any streaming service that chooses to offer a specific event to viewers will license it for that price from the studio.
  • A movie or PPV event can only be offered by one studio. There are no "shared events" from a production standpoint in our model. Transactions – Watching Movies and PPV Events When one or more viewers of a demographic group decide to access and view a movie or PPV event, then this also triggers financial changes.
  • When some portion of a demographic group decides to watch a movie or PPV event, then that portion of the group has to pay some cost to the streaming service.
  • If this is for a movie, then that portion of the demographic group must pay the subscription fee for that service.
  • If a portion of the demographic group has already watched one movie from a specific streaming service, then that portion of the group does not have to pay the subscription fee again (for that month) for watching two or more movies.
  • If this is for a Pay-Per-View event, then that portion of the demographic group must pay the event cost.
  • We will not be concerned with any costs for re-watching an event. Re-watching a specific movie or PPV event will always be free.
  • Your system must be able to track the costs paid by each demographic group – for the current month, for the previous month, and in total from the beginning of the program run.
  • Similarly, your system must be able to track the money collected by each streaming service for the current month, for the previous month, and in total from the beginning of the program run.
  • Every time a show is offered by streaming service, that service must pay a licensing fee to the studio that produced that event whether the movie or PPV event gets watched or not.
  • Finally, your system must be able to track the money collected by each studio for the current month, for the previous month, and in total from the beginning of the program run.