CSE 216: Software Engineering Programming Assignment #3 Instructor: Prof. Liang Cheng Posted: 3/29/2021 Project Assistants (PAs)/Mentors: Andrew Ha, Thanos Kougionis, Maximillian Machado, Buckley Ross
Due: 4/12/2021
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 ones performed during Phases 1-2.
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 documentation. 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 Google Drive files aren¡¯t accessible from outside the Buzz would be a good idea.
The project manager should go over and discuss the Design Thinking documents generated in previous phases with team members and produce a list of new features of the app that would facilitate achieving the design goals if implemented. Then the project manager should consult with the team mentor to identify features to be implemented in Phase 4.
The Back End
The backend 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 backend is stateless, so that it can be scaled out easily. Right now, your backend isn¡¯t stateless, since it stores user session 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 backend, and then use it both to replace that hash table, and as a cache for files downloaded from Google Drive.
The Web Front-end
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.
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 project assistant (PA) assigned as a mentor, and that PA will meet with students at least 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 ¡°phase3¡±. If your team completes all the tasks, your last commit to the Phase3 branch should contain the message ¡°All tasks complete, ready to be graded¡±. This will be viewed as a submission, and any future commits will not be included in your grade.
Late Submission Policy
If you do not push a commit with the message ¡°All tasks complete, ready to grade¡± then a snapshot of your repo will be taken by the 4th day after the deadline and used for grading. The following policy will be used for grading late submissions.
Submission late for 1 day: 15% penalty;
Submission late for 2 days: 30% penalty;
Submission late for 3 days: 45% penalty;
Submission late for 4 days: 60% penalty;
A submission late for more than 4 days will not be graded thus receiving 0 point.
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
[1] Google, Inc. Google API Console, 2021. https://console.developers.google.com/.
[2] Memcachier, Inc. MemCachier: The easiest, most advanced managed Memcache, 2021. https://www.memcachier.com/.
[3] J. Pruitt and J. Grudin. Personas: Practice and Theory. June 2003.
[4] The Kern Family Foundation. KEEN-Engineering Unleashed, 2021. http://engineeringunleashed.com.