CSE 216: Software Engineering Programming Assignment #4
Instructor: Prof. Liang Cheng Assigned: 11/06/18
TA/Project Mentor: Dylan Gray, Connor Deppert, Kelli Frank, Charles Inwald, Alex Schuler
All Tasks Due: 11/19/18
Problem Statement
They say that “success begets success,” but in the case of The Buzz, success seems to beget feature requests. Employees started using The Buzz… a lot. Text is proving to be a limitation, as engineers want to share diagrams, safety inspectors want to post pictures of hazardous conditions, and HR wants to share links and training slide decks. Thinking back to what started this project in the first place, you realize that link-sharing isn’t enough: once people start putting documents on Dropbox, we’ll be right back where we started, with content leaking out into the world.
At this point, we need to think about a few different personas [3]. Safety inspectors want to use their phones to take photos and post them straight to The Buzz. Engineers are more likely to use a laptop, and to upload PDF files. In class, we will coalesce around a strategy that considers these, and possibly other, personas.
Given the success of our previous uses of the cloud, in this step we will use a cloud storage provider to hold all data uploaded by employees. If your project manager has been documenting the process well, this should be relatively straightforward.
Note, too, that the schema is going to have to change in order to accommodate optional links and/or file uploads. The Buzz is in active use, though, so you will need to be able to deploy your new version without deleting old data.
Reminder
Each student should be in a different role than the one during Phases 1-3. Be careful with how you assign roles: each student should have a turn in each role before the end of the semester.
Deliverables
The Project Manager
The project manager will be responsible for devising a strategy for updating the database schema without deleting existing data.
The project manager is also responsible for all code reviews, planning, and documenta- tion. Remember the advice from prior phases of the project, especially when it comes to reviewing proper use of cloud APIs. Remember, too, that your teammates’ tests should include non-app issues as well as app issues. For example, a test that ensures that Drive files aren’t accessible from outside The Buzz would be a good idea. And if possible, you should be testing for things like maximum size of the Android app’s local cache.
The Back End
The back end will need to expand in order to post data to a Google Drive account. You must redesign existing routes, so that they can receive optional link and file uploads, and so they can return those links
and files. Note: you should not store files on users’ individual Google Drive accounts, but instead you should use a service account that stores to its drive.
A good back end is stateless, so that it can be scaled out easily. Right now, your back end isn’t stateless, since it stores user token information in a hash table. It’s been on the to-do list for a while, and now that we’re dealing with a cloud storage provider, we have the incentive to change this. You should add a memcachier [2] memory cache service to your back-end, and then use it both to replace that hash table, and as a cache for files downloaded from Google Drive. You should work carefully with the Project Manager to ensure that the permissions (scopes) for the server are correct in the Google Cloud API Console [1].
The Android App
The Android app will need to be updated in all the ways that make sense, given the new features we are adding. You will need to use the Camera and Gallery APIs to take pictures, and then post them to The Buzz. You will need to update the UI to show the new content, and you should implement a local cache, so that you don’t have to re-download content every time you open the app. You will need to interface to Local Storage, in order to post content that is already saved to the device. You should pay special attention to MIME types, to ensure that a link results in the correct app being used to handle content.
Remember: you should be following good Material Design principles throughout, so that your app is intuitive for Android users.
The Web Developer
Our personas for the marketing team and the engineering team don’t seem to require two different interfaces: both just need to be able to upload files. Your first task is to update the web front-end to allow the optional addition of a link to a message or comment, and the optional addition of a file to a message or comment. You may limit to pdf files, but keep in mind that Android users can upload images, so you will need to be able to display them nicely (and the Android interface will need to be able to display pdfs nicely).
The Admin App
The command-line interface for administrative tasks is becoming brittle. In this phase, it becomes important for an administrator to be able to manage content on The Buzz. Sometimes, people will upload something that shouldn’t be available. Other times, something becomes outdated and needs to be removed. Also, there is a limit on the amount of storage you have from Google Drive, and to some degree, you will need to manage your quota. The administrative interface should be extended with a way to list documents, their original owners, and the most recent activity on those documents, so that an administrator can take down content, as appropriate.
Mentorship
Each team has already had one TA/PA assigned as a mentor, and that TA/PA will meet with students once per week, both to mentor the team and to assess its performance. Teams should take advantage of this opportunity, especially when it comes to teamwork, priorities, and technical obstacles.
Turn-in Instructions
We will make a copy of your team’s repository at some point on or after the due date. Be sure to commit and push your solution prior to the due date by branching from master into a new branch called “phase4”.
Acknowledgments
The creation and updates of this project were funded in part by the Kern Entrepreneurial Engineering Network [4]. We thank Professor Michael Spear and the Kern Family Foundation for making this project possible, and we encourage our students to emphasize the “Three C’s” in all aspects of this project.
References
- Google, Inc. Google API Console, 2018.https://console.developers.google.com/.
- Memcachier, MemCachier: The easiest, most advanced managed Memcache, 2016. https://www.memcachier.com/.
- Pruitt and J. Grudin. Personas: Practice and Theory. June2003.
- TheKern Family KEEN-Engineering Unleashed, 2018. http://engineeringunleashed.com.