The Muze Music Library System (MMLS)

Project Resources

You and your team have been hired to create The Muze Music Library System (MMLS). The MMLS provides an application for music aficionados to track the songs in their music collection. Users can search an on-line or an off-line database for songs, titles, and artists. They can add songs to their collection and optionally rate them from 1 to 5 stars. Users can search their collection by title, artist, or album, or simply browse their music library.

The on-line database will use the MusicBrainz Web Service. The MusicBrainz Web Service and its use are described in the Web Services exercise at http://www.se.rit.edu/~swen-262/activities/WebServices.html

The Muze Music Library System (MMLS) Functional Requirements

The R2 functional requirements extend the R1 functional requirements. That is, all features required in R1are to be included in R2.
The R2 functional requirements are:
  1. The MMLS shall provide a command line interface, through which the user may enter requests.
    1. Requests are entered as a single line of text beginning with a request keyword and followed by any arguments.
    2. The system shall provide a textual response to each request.
    3. The system shall provide a help request, the response for which will be a list of available requests and how to use them.
  2. The MMLS shall maintain a searchable database of all available music. The user may search this database for songs or releases to add to their library.
    1. The MMLS shall respond to queries for artist information.
      1. The system shall store data for all available artists. Artist data will include a globally unique identifier (GUID), a name comprising one or more words separated by spaces, and a type (e.g. person, group, orchestra, etc.).
      2. The user may search for artists by specifying one or more words in the artist's name. The system shall respond with a list of artists that match the query.
    2. The MMLS shall respond to queries for song information.
      1. The system shall store data for all available songs. Song data includes a globally unique identifier (GUID), a title, an artist, and a duration (in ms).
      2. The user may search for songs by specifying one or more words in the title, the name of the artist, or duration (songs shorter than or longer than a given duration). The system shall respond with a list of songs that match the query.
    3. The MMLS shall respond to queries for release information.
      1. The system shall store data for all available releases. Release data includes a globally unique identifier (GUID), the title, artist, issue date, medium (e.g. vinyl, CD, digital), and a track list (each track corresponds to a song).
      2. The user may search for releases by specifying one or more words in the title, the name or GUID of the artist, the name or GUID of one of the tracks, or a release date range (i.e. all releases between two specific dates). The system shall respond with a list of releases that match the query.
  3. The MMLS shall support multiple users and separately track and persist each user's personal music library.
    1. The system shall allow the user to add an individual song or a release to their music personal music library collection.
      1. The user shall be able to optionally select the off-line database (as in R1) or the on-line web service to browse and select song titles, albums, and artists to add to their personal music library.
      2. The user may optionally specify a date on which the song or release was acquired. If no date is specified, the current date is used by default.
    2. The user may optionally rate individual songs from 1 to 5 stars.
      1. A default rating of 0 indicates that the user has not provided a rating.
    3. The system shall allow the user to search their personal library.
      1. The user may search for artists.
        1. By specifying one or more words in the artist's name.
        2. By specifying a type (e.g. person, group, etc.).
        3. By specifying a minimum rating (e.g. the minimum average rating of the artists songs and releases).
        4. Search results are ordered alphabetically.
      2. The user may search for songs.
        1. By specifying one or more words in the song's title.
        2. By specifying the artist name or GUID
        3. By specifying the release title or GUID
        4. By specifying a minimum/maximum duration
        5. By specifying a minimum rating (e.g. all songs rated at least 3 stars).
        6. Search results may be ordered alphabetically, by rating, or by acquisition date.
      3. The user may search for releases.
        1. By specifying one or more words in the title.
        2. By specifying the name or GUID of the artist.
        3. By specifying the name or GUID of one of the tracks on the release.
        4. By specifying a minimum/maximum total duration of tracks on the release.
        5. By specifying a minimum rating (i.e. the average rating of the tracks on the release must be at least 3 stars).
        6. Search results may be ordered chronologically by release date, acquisition date, alphabetically, or by rating.
    4. The user may browse their collection beginning beginning by listing the artists in the collection. Each artist will display the name, disambiguation, and the total duration of all of the songs in the library performed by the artist.
      1. The user may choose one artist to explore.
        1. Individual songs (not part of a full release) will be displayed including title, duration, and rating.
        2. Releases will be displayed including title, date, media, average rating, total duration of all tracks. The user may choose to explore a release.
          1. Individual songs (part of the release) will be displayed including title, duration, and rating.
          2. The user may choose to back out to the artist.
        3. The user may choose to back out to the list of artists.
    5. The user may remove individual songs or releases from their collection.
      1. If, after removing, the artist no longer has any songs or releases in the library, the artist should be removed from the library.
  4. The MMLS shall persist each user's personal library across system restarts.
  5. The MMLS shall support undo and redo of the following operations:
    1. Add song/release to library.
    2. Remove song/release from library.
    3. Rate song.

MMLS Specific Non-Functional Requirements

  1. The MMLS shall provide the same command line interface as R1.
  2. In addition, the MMLS shall  provide a different user experience for the R1 features through a graphical user interface (GUI) where the supported requests are available using menu items, buttons, or other appropriate mechanisms for user interactions.
  3. The user shall be able to switch between the command line user experience and the GUI-based user experience.
  4. All testing will be done from standard input and output. Your design should consider that a future MMLS release may add a graphical user interface as a requirement. Isolating all view-related components in a view subsystem should be a primary design consideration.
  5. For the off-line database, the list of available artists has been provided in comma-separated-value (CSV) format with 3 fields per line as guid,name,disambiguation (disambiguation provides additional details, but may be blank). The type and name may include spaces, commas, or other special characters.
  6. For the off-line database, the list of available songs has been provided in comma-separated-value (CSV) format with 4 fields per line as guid,artist-guid,duration,title. The title may contain spaces, commas, or other special characters.
  7. For the off-line database, the list of available releases has been provided in comma-separated-value (CSV) format with a variable number of fields per line as guid,artist-guid,title,issue-date,medium,tracks where tracks is a comma-separated list of zero or more song GUIDs.
  8. The on-line database will use the MusicBrainz Web Service. The MusicBrainz Web Service and its use are described in the Web Services exercise at http://www.se.rit.edu/~swen-262/activities/WebServices.html
    1. The MMLS shall follow the MusicBrainz Rate Limiting (throttling, etc.) policy at https://musicbrainz.org/doc/XML_Web_Service/Rate_Limiting
      1. No more than one request per second
      2. Provide a unique, meaningful user agent string
      3. etc.

MMLS R2 Specific Information and Instructions

Along with following the general guidelines and instructions for your documentation, presentation, and submission provided on Design Project Guidelines page, you should also follow these instructions that are specific to the Muze Music Library System: