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:

(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, where i is the iteration number. To tag the current revision, use git 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!
    • 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
  • 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.

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.

Presentations will be graded on the following criteria: