Ask Computer Engineering Expert

Part I - Scope

For Part I we want you to add a new functional capability to the code developed so far and base your solution on the Gamma Observer Pattern. You can base your solution on any code base: your A2 or A3 solution or our solutions for A2 or A3. Your solution for this assignment need NOT include the refactoring done in assignment #3 (That is, you can go back to your assignment A2 code if you want.)

Here is a the scenario:

A group of musicians have seen our playlist app and want to use it to manage their setlists during rehearsals and performances. Setlists are lists of songs that are meant to be performed together. They intend use our playlists as their setlists. (From here on we will use the terms setlist and playlist interchangeably.)

The musicians often have a situation where one band member makes changes to a setlist that must be reflected in the same setlist of other members. In this scenario each musician (user) has their own copy of a setlist. So they want the application to be modified so that band members can have their setlists following the changes made to another member's setlist. The new feature that they have requested is a command and behaviour that lets band members have their setlists follow the contents of another member's setlist. They want you to implement the following new command (or your version of the command based on your applications language).

follow -u userid -p playlist name -f userid2 for example:

follow -u ajones -p brass monkey setl -f cindy

In which case ajones's bras s_monkey_set1 setlist would be updated to reflect the contents of a similiarly named setlist owned by cindy. Whenever user cindy makes a change to her setlist ajones's setlist will automagically update to be the same. Changes would pertain to adding and removing tracks.

The command

follow -u ajones -p brass monkey setl -f stop

Should cause aj ones's brass_monkey_seti setlist to stop following that of another user.

By the way there are several iPad apps (Forscore, Newzip for example) that lets orchestras have lists of pdf scores and have the feature that a users can have their score follow that of the orchestra conductor. These apps also seem to be using the "follower" protocol for keeping scores in synch.

Functional and System Requirements for Part I -

You must provide a testing script that the TA's can run that demostrates all of the requirements. You will only get marks for those requirements tested in your script. Your README.txt file must tell them how to run the script.

FR4.1.1) The application should support a command similar to:

follow -u userid -p playlist name -f userid2

Which should cause useridIS playlist playlist_name to have exactly the same contents as a similarly named playlist of userid2.

FR4.1.2) A command similar to

follow -u userid -playlist name -f stop

Should cause useridIS playlist playlist_name to stop following changes of another user.

FR4.1.3) If changes are made to a playlist being followed then the changes should be reflected right away in playlists that are followers.

FR4.1.4) The code should withstand users trying to mutually follow each others similarly titled playlists. Withstand means you must either accommodate it or prevent it from happening. The code should not crash because two users tried to mutually follow each other's playlists of the same name.

FR4.1.5) The code should withstand a user trying to follow their own playlist. Withstand means you must either accommodate it or prevent it from happening. The code should not crash because a user tried to follow one of their own playlists.

FR4.1.6) The code should withstand a user trying to follow a non existing playlist. Withstand means you must either accommodate it or prevent it from happening. The code should not crash because a user tried to follow another user who does not have a playlist of the right name.

FR4.1.7) Users should be able to follow more than one playlist. That is, several of their playlists could be following playlists of other users.

FR4.1.8) Playists should be able to have more than one follower.

FR4.1.9) If a user's playlist is deleted then followers of that list must not be left "dangling". They must be properly deregistered as followers.

FR4.1.10) If a user's playlist is deleted then it must be deregistered from any list it is following. The list being followed must not be left "thinking" that it still has the follower.

SR4.1.1) The implementation of the follow command should be based on the Gamma Observer Pattern.

SR4.1.2) The implementation should make use of subject and observer abstract superclasses and make use of methods with names that correspond as closely as possible with the method protocol of the Gamma observer pattern.

SR4.1.3) The implementation should maintain separate playlists for each user. That is, if a user follows the playlist of another that should not be implemented by simply having several user objects point at the same playlist object. The user objects should still have their own copies of playlists. (A long term goal is to have the users playlists be on different devices and this observer pattern would operate over a wifi or bluetooth network.)

Part II -

In Part II you have a opportunity to analyse a scenario and express it in terms of functional, system or domain requirements and then implement it. You are asked to capture the scenario in eight requirements and then implement those requirements. To get the marks you have to actually implement the requirements, just writing the requirements will not count for any marks.

For any scenario below write 8 requirements in such a way that you think best captures what is needed and then implement them. You will be judged on your selection on requirements and how well they are chosen to reflect the scenario. You should categorize your requirements as either Functional, System or Domain requirements (use FR, SR, DR numbering scheme.)

Persistent Database Store

For this scenario we want the app to connect to and initialize itself from the beatles.db sqlite database. Any changes made by users should be communicated and reflected in the actual sqlite database itself. When the app is relaunched it should initialize from the current state of the sqlite database. That is, the database will persistently keep the state of the application.

Changes made by users should be reflected in the database right away, not just when the app exits. So this programming exercise is to have your c++ code talk to the sqlite database through its c++ programming interface. We will likely do some examples in class for programming this.

Searching for Songs, Tracks etc.

Any application with a lot of string based data (e.g. song titles) should have a search capability. In this scenario we want you to build a search capability into the app that would let you search for any data items that have titles (e.g. songs). The search features should have the following properties:

Search should not be case sensitive.

Search should ignore punctuations (e.g. Take the "A" Train should match Take the A Train)

Search should allow "*" to represent 0 or more arbitrary characaters. "*Girl * Ip*" should match "The Girl From Ipanema"

Search should allow "I" character. ("Ipanema I Girl I From " should match any title that has those three words in any order)

Ordering Playlist Tracks

The tracks that appear on playlists are meant to be ordered. In this scenario we want you to provide the capability (commands) that would allow a user to order the tracks on their playlists. Users are not likely going to want alphabetical order rather they will want to manually order the tracks in any order they like. This is especially important for the scenario in Part I where the playlists are being used for performance setlists. Manual ordering using a command line interface will be a challenge because that style of interface does not lend itself to, say, dragging things to there desired position. Come up with something you think will work well and not be awkward to use.

Attachment:- Assignment Files.rar

Computer Engineering, Engineering

  • Category:- Computer Engineering
  • Reference No.:- M92540087

Have any Question?


Related Questions in Computer Engineering

Does bmw have a guided missile corporate culture and

Does BMW have a guided missile corporate culture, and incubator corporate culture, a family corporate culture, or an Eiffel tower corporate culture?

Rebecca borrows 10000 at 18 compounded annually she pays

Rebecca borrows $10,000 at 18% compounded annually. She pays off the loan over a 5-year period with annual payments, starting at year 1. Each successive payment is $700 greater than the previous payment. (a) How much was ...

Jeff decides to start saving some money from this upcoming

Jeff decides to start saving some money from this upcoming month onwards. He decides to save only $500 at first, but each month he will increase the amount invested by $100. He will do it for 60 months (including the fir ...

Suppose you make 30 annual investments in a fund that pays

Suppose you make 30 annual investments in a fund that pays 6% compounded annually. If your first deposit is $7,500 and each successive deposit is 6% greater than the preceding deposit, how much will be in the fund immedi ...

Question -under what circumstances is it ethical if ever to

Question :- Under what circumstances is it ethical, if ever, to use consumer information in marketing research? Explain why you consider it ethical or unethical.

What are the differences between four types of economics

What are the differences between four types of economics evaluations and their differences with other two (budget impact analysis (BIA) and cost of illness (COI) studies)?

What type of economic system does norway have explain some

What type of economic system does Norway have? Explain some of the benefits of this system to the country and some of the drawbacks,

Among the who imf and wto which of these governmental

Among the WHO, IMF, and WTO, which of these governmental institutions do you feel has most profoundly shaped healthcare outcomes in low-income countries and why? Please support your reasons with examples and research/doc ...

A real estate developer will build two different types of

A real estate developer will build two different types of apartments in a residential area: one- bedroom apartments and two-bedroom apartments. In addition, the developer will build either a swimming pool or a tennis cou ...

Question what some of the reasons that evolutionary models

Question : What some of the reasons that evolutionary models are considered by many to be the best approach to software development. The response must be typed, single spaced, must be in times new roman font (size 12) an ...

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As