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 the database for songs by title, artist, or album. 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 Muze Music Library System (MMLS) Functional Requirements

The R1 functional requirements are:

The R1 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 track the user's personal music library.
    1. The system shall allow the user to add an individual song or a release to their music collection.
      1. 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 the user's personal library across system restarts.

MMLS Specific Non-Functional Requirements

  1. 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.
  2. 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.
  3. 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.
  4. 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.

MMLS R1 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: