Skip to main content

CSC 321.01, Class 07: Key ideas - Software as a service and user stories


  • Preliminaries
    • Notes and news
    • Upcoming work
    • Good things to do
  • Project work time
  • SaaS
  • User stories
  • Using user stories
  • Making user stories SMART
  • Your user stories

News / Etc.

  • Attendance.
  • I think I’ve been off by one on the reading journal numbers. Apologies. That issue is now fixed.
  • I’ve added a week to the due date to the introductory rails assignment.
  • Please let me know when you notice problems on the Web site. I think I’ve fixed most of them.
  • We will be discussing user stories that involve projects on the elderly, sexual assault, animals, hunger, health, volunteering, and four-year planning. Please feel free to leave the room at any point if you find these conversations difficult.

Upcoming Work

  • Programming assignment: Intro rails (due Tuesday the 19 at 10:30 p.m.)
  • Readings: SaasBook, Chapters 7 and 8 (due Monday at 8 p.m.)
  • Programming assignment: Cucumber (due Tuesday the 26 at 10:30 p.m.)
    • Those working on Python/Django projects may choose to design their own equivalent assignment.

Good things to do

Note: I do not do extra credit in two-credit classes.


  • CS Extras today
  • CS Table Tuesday (tbd)


  • CS Extras today
  • Elephantitis this weekend (Saturday morning at HS and afternoon at MS) (Sunday at HS)

Project work time

I couldn’t get it to deploy to Heroku. I skipped that step.
Knowing how to deploy is important. Ask for help.
Wow, minor things cause big problems!
Yup, we’ve talked about that before.
Context is important. Execute commands in the correct directory.
Executing (or failing to execute) prior commands, a current command may/may not work.
I have no idea why I’m getting an error?
If you see a “nil, no such method” error, it means that you haven’t assigned a value to a variable that you are using.
Think more carefully about program logic.
What are the big-picture issues you saw?
It’s hard to program when you don’t have immediate help available. But that’s something you have to learn.
You need to ask questions of others.
The steps are important.


Note: Your most common response is that Stallman is an idealist and most people have to deal with compromises.

  • What is it?
  • Why do some folks like it?
  • Why do some folks dislike it?

User stories

What are they?

  • A way of describing the goals of our project, primarily from the user’s perspective.

How do we represent them?

  • Feature: A general name for what we are trying to achieve
  • Actor (As this-kind-of-user)
  • Goal (So that I can something I want to achieve)
  • Action (I want to be able to do this)
  • Examples - Help make sure that we all understand the Actor/Goal/Action triplet.

Sample example

  • Suppose our database includes the following entries

      Rebelsky        Fall 2017       CSC 321 01      2
      Rebelsky        Fall 2017       CSC 322 01      2
      Rebelsky        Fall 2017       CSC 301 01      4
  • When I go to the “total teaching load” page, select “Rebelsky”, and click “Compute”, I should see …

Why do we have them?

  • Communicate with the user
  • Stories provide an opening point for discussions. “If this is your goal, couldn’t we also achieve it this way?” “Why are you doing this?”
  • Lets us prioritize

Making user stories SMART

Here’s one way to think about user stories

  • Specific
  • Measurable
  • Achievable
  • Relevant
  • Time-Boxed

Here’s another, taken from

  • Independent
  • Negotiable
  • Valuable
  • Estimable
  • Small
  • Testable

Your stories

Stories to discuss

Unknown project:

  • Display a page to the user with a title


  • Not specific
  • Not necessarly applicable
  • Not a known user base.

Project PALS: Add a posting system for car pool services for those without personal transportation to get to PALS

  • As a volunteer,
  • So that I can volunteer at PALS without worrying about how to get to the animal shelter,
  • I want to add a posting system so that any volunteer with a car can volunteer to pick people up or drop them off.


  • Needs to better express what actions you’d like to do.
  • “I want to be able to indicate that I need a ride and be notified at least one day in advance if that ride is available.”
  • Might also add: “I want my shift cancelled and me to be notified at least one day in advance if that ride is not available”

Callisto: Untitled

  • As a survivor,
  • I want to have different methods of reporting my case. It should be either a voice recording, call for Grinnell Advocates or other national hotlines, text typed on a computer, or a picture of documents written on paper
  • So that I can report with the least trouble


  • Too complex. Needs simplification (multiple cases).
  • Also needs story of “I can retrieve it later.”

Callisto: Proving confidentiality of sexual assault report

  • As a sexual assault survivor
  • So that I can feel comfortable reporting the assault
  • I want to be able to know that my report will be confidential until I choose to release it


  • Needs measuring.

Callisto: Untitled

  • As a school official,
  • I want to see the analytics of sexual assaults reported on campus (where, when, how) without seeing the victims or perpetrator’s name,
  • so that I can adjust campus policy accordingly to minimize these incidents


Mayflower Project: Untitled

I am a member of the Mayflower community who has been staying with my son for 4 months as I prepared for his wedding. I am getting ready to head back to the community and I would like to see if there are new faces when I get back. I would also like to look up if they had similar past experiences with me so that I can have something to talk about in our initial interactions.


  • Not in the proper form.
  • Multiple goals and actions

Heartland Project: News Column

  • As a person who is concerned about global health problems,
  • So that I can obtain news from the website,
  • I want to know about the status quo of global health.

Four year planner: Change a class’s location

  • As an administrator
  • So I can change a room if a class is too big
  • I want to be able to change the location of a class

Heartland Project: Untitled

  • As a concerned citizen of this country,
  • I want to be able to get access to to all documents to water quality in one place
  • So that I know how my environment affects my health.

Mayflower Project: Password/information protection

  • As a Mayflower resident,
  • so that I can keep my information private and viewable only to people I permit,
  • I want to be able to hide/share my information as I please.

Callisto: Untitled

  • As the Title IX coordinator
  • So that I can bring justice to survivors and protect the community from future offenses
  • I want to be notified within 10 minutes when the same assailant is reported more than once

Mayflower project: Search for resident

  • As a Mayflower resident,
  • So I can access my co-resident’s phone numbers without having to have them written down,
  • I want to be able to search for other resident’s names and have their contact information be displayed.

Mayflower project: Edit resident information

  • As a Mayflower employee,
  • So I can change a resident’s residence information when they move rooms without deleting and recreating a new user profile,
  • I want to be able to edit the information for a resident’s profile, without other residents being able to edit others’ information.

Four year planner: Add a class

  • As a student
  • So I can have my advisor know I want to take a class
  • I want to be able to add classes to a schedule

Heartland Project: External Resources

  • As a student who wants to know more about global health,
  • So that I can find the relevant links to different websites,
  • I want to learn from those extra resources.

Mayflower project: Untitled

  • As a staff member from Mayflower Community,
  • I want to easily search on a webpage a resident by their name or last name or nickname,
  • so I can know more about their personal information like phone number, family members, etc.

Heartland Project: Untitled:

  • As a scientist who knows about the water quality in Powersheik county,
  • I would like to be able to upload any of my research findings on the internet
  • So that anyone can have access to it and use it for educational purposes

Mayflower Project: Sorting by last name/first name/etc-

  • As a Mayflower staff member,
  • So that I can find the correct information quickly,
  • I want to be able to browse a sorted list of the directory’s information.

Mayflower Project: I am a manager of the mayflower community database in charge of organizing social activities. I have had to leave Grinnell for a business trip and I have just received information about a new member joining the community. The folks back in Grinnell have entered his details in the database. I would like to add him to a bowling group for Wednesday night bowling and will have to go through his details to see who I think he would have a great time with since he is new in town.

Mayflower Project: Untitled

  • As a staff member from Mayflower Community,
  • I want to enter or edit a resident’s data in a non-complicated way,
  • so I can have our database updated.

PALS Project: Implement a scheduler system with a work description so that volunteers can sign up for work they want on available dates

  • As a volunteer,
  • So that I can sign up to help the animals without worrying about reaching out to the PALS director and finding the suitable time,
  • I want to add a scheduler system in the calendar that provides information on the work and dates available.

Project Callisto: Notifications

  • As an administrator,
  • so that I can keep up with reports made by multiple people,
  • I want to be notified within one day by some sort of secure method when the same assailant is reported multiple times.

Project Callisto: Timed Updates.

  • As an administrator,
  • so that I can keep an eye on trends in reporting,
  • I want to be notified on some sort of regular basis set by me about trends in reporting.

Unknown Project:

  • When user enters their name into name box, their name will be saved