CMPUT 301

Software Engineering

Assignment 1

Learning Objectives

Solve a problem by constructing a simple, interactive application using Android and Java.

Document an object-oriented design in Unified Modeling Language.

Problem Description

Consider the situation of someone who wants to create and manage a wishlist of books they want to read. Develop a simple, attractive, and intuitive Android mobile app to assist users in organizing their reading preferences. Let's name this app: YOURCCID-MyBookWishlist (e.g., kennyw-MyBookWishlist).

Using this app, users can maintain a list of books they wish to read. Each book entry in the wishlist has the following editable fields:

The app must allow the user to:

The list need not display all the information for an item if screen space is limited. Minimally, each item in the list should show its title, author, genre, and read status.

The app must assist the user in proper data entry. For example, use appropriate user interface controls to enforce particular data types and avoid illegal values.

For this assignment, the data need not be persistent across runs of the app.

The app must assist the user in proper data entry. For example, use appropriate user interface controls to enforce particular data types and avoid illegal values.

For this assignment, the data need not be persistent across runs of the app.

Encode your campus computing ID in the app name. Specifically, the app name must show up as YOURCCID-MyBookWishlist (e.g., kennyw-MyBookWishlist).

Deliverables

  1. Code Base: Your complete source code and compiled binary, implementing the working app and its user interface, will be inspected and run by the TA. The Android Studio project and APK (Android Package Kit) binary must be included in the submission. Each class must contain comments describing its purpose, design rationale, and any outstanding issues.

  2. Video: The video is a demonstration of the app. The video file must be included in the submission. The video is meant to show that the demonstration actions below actually work. No audio is needed. Maximum duration is 3 minutes. Focus on just the screen of the app, not the whole desktop. For visual clarity, do not use a handheld camera.

  3. System Documentation:

Describe the structure of your app's object-oriented design using UML class diagram(s), saved as non-lossy image file(s).` Focus on the most important classes that you designed and implemented. Add notes to describe the main responsibilities of these classes.

You do not need to include classes from android or java standard library in your UML.

Demonstration Actions

  1. Open the app from the launcher.

  2. Show the list of books in the wishlist, with none so far. (This could be the initial screen.)

  3. Add a book to the wishlist with the title "The Great Gatsby," author "F. Scott Fitzgerald," genre "Fiction," publication year 1925, and status "Unread."

  4. Show the list and the total count, with this item.

  5. View/edit this item to update the title to "The Great Gatsby: Updated Edition" and mark it as "Read."

  6. Show the list and the updated counts, with this modified item.

  7. Add another book to the wishlist with the title "To Kill a Mockingbird," author "Harper Lee," genre "Fiction," publication year 1960, and status "Unread."

  8. Show the list and the updated counts, with the two books.

  9. Add one more book to the wishlist with your CCID as the author and your student number as the title of the book, status "Read", year 2024.

  10. Show the list and the updated counts, with the three books.

  11. View/edit the details of one book in the wishlist.

  12. Delete one book from the wishlist.

  13. Show the list, with the remaining books.

  14. View the details of one book in the wishlist.

  15. Delete the remaining books from the wishlist.

Hints

This is a description of the core functionality. Often, problem statements from users lack details. As you are prototyping a design, you may uncover other behaviors that have not been specified, but make sense in the context and intent of the application. For example, think about how someone might effectively use your application. It is up to you to decide what functions your design will need, based on the given problem description and valid assumptions, in discussion with your users (the TAs and instructor). You should consider asking the customer (the instructor) what they want to see.

While you may discuss your design with other students, the code and documentation must be your own work. Code from publicly available sources may be used within reason and only if their licenses permit so. Always fully cite to give proper credit to the original developers in the source code and in the system documentation. For example, in citing a work, at least state: from whom, the date of publication, license, and URL. Do what is required by its license.

The TAs will be inspecting your code, so "major" commented-out experiments should be cleaned up so that the code is readable.

Do not skimp on the UML class diagrams in the system documentation. For neatness and readability, diagrams should be created or drawn using a vector graphics editing tool and exported in a common, non-lossy graphics format.

Besides addressing the problem correctly, your software design will be evaluated on its proper use of object-oriented design concepts, such as separation of concerns and information hiding.

Losing Marks

You may lose marks for any of the following:

files not in properly named subdirectories missing compiled binary APK file for the app cannot run the app after install cannot distinguish CCID from the app name cannot view files without specialized tools lossy compression used in image file(s) for UML (e.g., JPEG) inadequate or improper citations These are brown M&M rules.

Submission Procedure

Create an assignment directory called YOURCCID-MyBookWishlist (e.g., kennyw-MyBookWishlist), and within it have three subdirectories: code, video, doc.

Your Android Studio project directory goes within code. The compiled binary APK file(s) should be found within an /app/build/intermediates/apk/debug/app-debug.apk subdirectory or /app/build/outputs/apk/debug/app-debug.apk within the project directory. The video file goes in the video subdirectory. The UML documentation goes in the doc subdirectory.

Zip the assignment directory and upload to eClass.

e: It must be a zip file with the .zip file extension.

Please make sure all the required files are included to build the app. The TA will test your app from the submitted code and APK file.

The app name must show up as YOURCCID-MyBookWishlist (e.g., kennyw-MyBookWishlist), so that it can be easily distinguished from other submissions.

This is how the assignment will be marked:

There are no inbetween marks, no part marks.

Rubric for Android App Assignment - MyBookWishlist

Excellent (8):

Good (7):

Satisfactory (5):

Unsatisfactory (4):

Failure (0):