The Muze Music Library System (MMLS)
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:
- The MMLS shall provide a command line interface, through which the user
may enter requests.
- Requests are entered as a single line of text beginning with a
request keyword and followed by any arguments.
- The system shall provide a textual response to each request.
- The system shall provide a help request, the response for
which will be a list of available requests and how to use
them.
- 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.
- The MMLS shall respond to queries for artist information.
- 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.).
- 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.
- The MMLS shall respond to queries for song information.
- 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).
- 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.
- The MMLS shall respond to queries for release information.
- 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).
- 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.
- The MMLS shall track the user's personal music library.
- The system shall allow the user to add an individual song or a
release to their music collection.
- 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.
- The user may optionally rate individual songs from 1 to 5
stars.
- A default rating of 0 indicates that the user has not
provided a rating.
- The system shall allow the user to search their personal
library.
- The user may search for artists.
- By specifying one or more words in the artist's
name.
- By specifying a type (e.g. person, group,
etc.).
- By specifying a minimum rating (e.g. the
minimum average rating of the artists songs and
releases).
- Search results are ordered alphabetically.
- The user may search for songs.
- By specifying one or more words in the song's
title.
- By specifying the artist name or GUID
- By specifying the release title or GUID
- By specifying a minimum/maximum duration
- By specifying a minimum rating (e.g. all songs
rated at least 3 stars).
- Search results may be ordered alphabetically,
by rating, or by acquisition date.
- The user may search for releases.
- By specifying one or more words in the title.
- By specifying the name or GUID of the artist.
- By specifying the name or GUID of one of the
tracks on the release.
- By specifying a minimum/maximum total duration
of tracks on the release.
- By specifying a minimum rating (i.e. the
average rating of the tracks on the release
must be at least 3 stars).
- Search results may be ordered chronologically
by release date, acquisition date,
alphabetically, or by rating.
- 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.
- The user may choose one artist to explore.
- Individual songs (not part of a full release)
will be displayed including title, duration,
and rating.
- Releases will be displayed including title,
date, media, average rating, total duration of
all tracks. The user may choose to explore a
release.
- Individual songs (part of the release)
will be displayed including title,
duration, and rating.
- The user may choose to back out to the
artist.
- The user may choose to back out to the list
of artists.
- The user may remove individual songs or releases from their
collection.
- If, after removing, the artist no longer has any songs
or releases in the library, the artist should be
removed from the library.
- The MMLS shall persist the user's personal library across system
restarts.
MMLS Specific Non-Functional Requirements
- 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.
- 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.
- 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.
- 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:
- Your design must include at least three significant Design Patterns
from the GoF textbook. While you are encouraged to focus on the
patterns that have been covered up to this point in class, you may
choose one of the bonus patterns or one of the patterns not covered at
all.
- While you are encouraged to identify patterns from the JDK that you
use, these will not count towards your minimum patterns. For example,
you will almost certainly use Java's iterators, but this will not count
as one of your three patterns.
- Refer to the MMLS R1
Implementation Evaluation Rubric.