CS 240 - Group Project
This page describes the assignments and deliverables involved in completing the CS 240 project.
Overview
For this class, you will be working in groups to develop medium-sized software projects over the length of the semester. These are real projects for real people--you will be implementing systems for external customers (different departments/organizations on campus). Thus these are not toy projects, but will fulfill actual technological needs.
Projects will involve implementing "Software as a Service" (SaaS) systems, such as web applications. However, some of the expected uses are on mobile phones, and thus you may need to include additional implementation to better support that.
You will be implementing these systems following an Agile methodology (which we will be studying further in class). That means that there will be multiple short iterations you will need to turn in, each with their own requirements and due dates.
Iteration 0
This "iteration" involves setting up the team and the project, and doing a lo-fi "prototype" iteration (without any code) to focus on the design
Iteration 0.0
Due Date: Friday 09/12, start of class
Divide into teams of 5 students (and two teams of 6 students)---one team for each project.
Read through the list of projects and figure out what interests you. Talk to other students and figure out who you'd work well with (since you will be working together for a long time!) You will likely want to form groups with a range of skills and experience, so that you can better spread your efforts. I recommend using Piazza to coordinate this team-building. If you need any help finding a team, please let me know (before the deadline!)
Once you have formed a group, pick a Team Name we can refer to your team by!
Submit this iteration by having one person create a public post on Piazza introducing your team and listing the members (first and last names please!). Tag the post with #Iter0.0
.
Iteration 0.1 [2pts]
Due Date: Friday 09/19, 11:59pm
Schedule an initial meeting with your customer.
Contact information for customers can be found on the project list. You should strive for all team members to be present at the first meeting. The main goal of this meeting is to, well, meet the customer and hear more about their needs for the project and make sure you reach an understanding of the software you will be developing. Note that the results of this initial meeting are part of Iteration 0.2 and Hwk 3.
Please be respectful of your customer's time--they are busy people!
Submit this iteration by having one person create a private post to the instructor on Piazza listing the meeting time and location (tag the post with #Iter0.1
). After the meeting occurs, post a followup discussion indicating that you have met with the customer and who attended the meeting (confirming that all team members are accounted for--or not!)
Iteration 0.2 [10pts]
Due Date: Friday 10/03, 11:59pm
Work with the customer and generate user stories
Write a short (2 paragraph max) summary of the main customer's need and how your application will meet that need. Explain the problem, then explain your solution. This summary should act as a "blurb" describing your project.
Create at least 5 user stories on index cards (or quarter-pages). User stories should be in Connextra format (see section 7.1 in the textbook):
1. Feature name 2. As a [kind of stakeholder], 3. So that [I can achieve some goal], 4. I want to [do some task]
Develop these user stories while talking to the customer, so that everyone is on the same page! User stories should be INVEST and SMART (see section 7.3). Note that you will also use the information from these customer discussions to complete Hwk 3.
Submit this iteration by creating a post on Piazza containing your user stories (tag the post with #Iter0.2
). You may either submit photos of your index cards or type up the stories.
Iteration 0.3 [10pts]
Due Date: Monday 10/13, 11:59pm
Create lo-fi mockups and storyboards corresponding to at least 4 of your user stories.
Develop lo-fi mock-ups and prototypes of 4 different user stories. These should be paper prototypes and sketches, as they are easier to get feedback on. Once you've gone through a round of paper mockups, you can then make digital prototypes if you wish.
You should validate these mock-ups with your customer to make sure that your designs match the user stories and needs in a way that the customer accepts. You can check your prototypes with the customer either in person or electronically (via email, etc)--but be sure that the customer okays your plans!
Finally, to complete Iteration 0, put all of your user stories on Pivotal Tracker. You will have received a link to a Pivotal Tracker account for your team's use. The professor will have viewing access to these, as will the customer (the more engaged your customer is, the smoother the agile process will go!)
Submit this iteration by creating a private post on Piazza with your lo-fi mockups and storybook sketches (I already have access to your Tracker); tag your post with #Iter0.3
. You should scan (or clearly photograph) your mockups and attach them as images to your post.
Each team member must fill out the Iteration 0 Team Evaluation Survey giving scores to each team member (including yourself). These scores will be used to normalize grades among the team members.
Iterations 1-4 [25pts each]
Iteration 1 Due: Monday, 10/27, 11:59pm
Iteration 2 Due: Monday, 11/10, 11:59pm
Iteration 3 Due: Monday, 11/24, 11:59pm
Iteration 4 Due: Monday, 12/15, noon
For each of these iterations, you will use Tracker to identify a set of user stories to work on during the iteration (and who will work on each). You will then use techniques from BDD and TDD to implement these user stories. You will also need to meet with your customer and get feedback on what you've done, which will affect the next iteration (either by reprioritizing stories, or even prompting new ones!).
At the end of each iteration, I will check the following:
-
Development Practices [6pts]
-
Make sure that all your code and tests--including Cucumber and RSpec tests--have been pushed to Github. Tag your git repository revision with
iteration-i
, wherei
is the iteration number. To tag the current revision, usegit tag -a iteration-1 -m "<commit message>"
(for Iteration1).-
Warning: you must explicitly push your tags with the command
git push [origin] --tags
. Please double-check that you can checkout the tag from your Github repository before the deadline!
-
Warning: you must explicitly push your tags with the command
-
I should be able to run your tests from a fresh clone using:
git checkout iteration-i bundle install --without production rake db:migrate db:test:prepare db:seed cucumber rspec
- Your Pivotal Tracker should be correctly used and up-to-date. Current stories should be started, and completed stories should be finished. You should use releases and epics when appropriate.
-
Make sure that all your code and tests--including Cucumber and RSpec tests--have been pushed to Github. Tag your git repository revision with
-
Test Cases and Scenarios [6pts]
- Your system should include test cases (either via Cucumber or RSpec) automatically demonstrating its functionality.
- Tests should ideally cover both the "happy path" and the "sad path" of each user story that your Tracker indicates is completed.
-
All tests should either pass or be pending. I should get all green and yellow, no red!
- You can make a Cucumber test pending by putting a
@wip
tag immediately above theScenario:
description.
- You can make a Cucumber test pending by putting a
-
Design and Deployment [10pts]
- Your production application is deployed (e.g., to Heroku), and the production deployment is up to date (all completed stories should work there).
- Stories should represent sufficient progress for the iteration.
- Your production application is usable (following UI principles).
-
Admin and Customer Satisfaction [3pts]
- You have created a submission post on Piazza for this iteration (see below)
- You have met with your customer and gotten their approval on user stories, etc.
- All team members have completed the Team Evaluation Survey
(Click to view iteration 1 grading criteria)
Iteration 1 Grading:
-
Repository Management / Build Practices [6pts]
-
Make sure that all your code and tests--including Cucumber and RSpec tests--have been pushed to Github. Tag your git repository revision with
iteration-i
, wherei
is the iteration number. To tag the current revision, usegit tag -a iteration-1 -m "<commit message>"
(for Iteration1).-
Warning: you must explicitly push your tags with the command
git push [origin] --tags
. Please double-check that you can checkout the tag from your Github repository before the deadline!
-
Warning: you must explicitly push your tags with the command
-
I should be able to run your tests from a fresh clone using:
git checkout iteration-i bundle install --without production rake db:migrate db:test:prepare db:seed cucumber rspec
-
Make sure that all your code and tests--including Cucumber and RSpec tests--have been pushed to Github. Tag your git repository revision with
-
Cucumber Scenarios and User Stories [5pts]
- Your Pivotal Tracker should be correctly used and up-to-date. Current stories should be started, and completed stories should be finished. You should use releases and epics when appropriate.
- Your user stories should be SMART (Specific, Measurable, Attainable, Realistic, Timely), and should include at least one happy path and one sad path scenario per story.
- Scenarios should be DRY, using Cucumber scenario outlines rather than repetative steps.
- Stories should represent sufficient progress for the iteration.
-
Test cases [4pts]
- All test cases for current stories should pass
- Your tests should provide sufficient code coverage (see SimpleCov for an example tool; this should give more than 85% coverage).
- Test cases for future stories should be pending
-
Design and Deployment [7pts]
- Your production application is deployed (e.g., to Heroku), and the production deployment is up to date (all completed stories should work there).
- Your production application is usable (following UI principles).
-
Admin and Customer Satisfaction [3pts]
- You have created a submission post on Piazza for this iteration (see below)
- You have met with your customer and gotten their approval on user stories, etc.
- All team members have completed the Team Evaluation Survey
Submit each iteration by creating a private post on Piazza with a link to your Tracker, your Github repository (if different than the one I set up), and your Heroku deployment; tag your post with the iteration number (e.g., #Iter1
). Also include a short summary noting which user stories have been completed this iteration.
- Please do this even for your final product (Iteration 4).
Each team member must fill out the
Iteration i
Team Evaluation Survey
(where i
is the number of the iteration) giving scores to each team member (including yourself). These scores will be used to normalize grades among the team members.
Final Presentation [20 pts]
Due: Monday, 12/15, noon
In addition to the implementation, your team will be formally presenting your project during our allotted final period (on Monday, Dec 15). These presentations will be open to the public (and other stakeholders are expected).
Presentations should be about 20 minutes long, with all team members participating. Your presentation should pitch your project (e.g., what is the problem? how does your application solve that problem), walk us through major user stories (and major implementation architecture, if appropriate), and reflect briefly on the development process (e.g., what aspects of the development process worked well or poorly? What, if anything, would you do differently?). Your team should be ready to answer questions after your presentation.
- Pretend you're "selling" your product--why should your customer choose to buy your implementation?
- Each team member must talk for at least 2 minutes. Team members who do not participate in the presentation will receive a 0.
Presentations will be graded on the following criteria:
- Content and Organization
- [2pt] Organized, with strong introduction and conclusion (do not dribble off)
- [2pt] Clear explanation of the motivation for the project (including major User Stories)
- [2pt] Explanation of how your system solves the customer's "problem"--sell your product's features!
- [2pt] An easy-to-follow walkthrough and demonstration of the system
- [2pt] Insightful reflection on the development process
- Speaking and Professionalism
- [2pt] Appropriate use of time (about 20 minutes)
- [2pt] Engages with the audience (verbally and non-verbally);
- [2pt] Eye contact with the audience (do not read your slides!)
- [2pt] Clear diction: speak slowly and loud enough to hear, and avoid "ums" or other distractors (do better than the professor!)
- [2pt] Able to respond to questions