CS 458 - Week 3 Lecture 2 - 2017-09-07

-----
CRC Cards -
*   sometimes incuded as an XP design practice

*   Class, Responsibilities, and Collaboration Cards

    *   you write the name of a class you might need on a card
    *   you list the responsibilities of that class on the left
        (these will eventually help lead to determining methods
	for that class?)

    *   you list classes this class might/will collaborate
        with on the right
-----
Spike solutions
*   to reduce risk
*   A spike solution is a very simple program to
    explore potential solutions

-----
*   we'll be using a more Scrum-approach to project
    management this semester;

    BUT you should still be familiar with
    the XP planning game/release planning practices;

    *   team members and customer negotiate
        to figure out which small set of user
	stories will be included in the
	next iteration;

	...each user story includes an estimate
	   of how long it will take

        *   as part of negotiations:
	    pick THREE from:   cost
	                       quality
			       scope
			       time
    *   planning happens often, for
        each iteration

-----
*   stand-up meeting
    *   "daily", short, standing in a circle so won't go too 
        long, everyone attends, communicate problems,
	solutions, promote team focus --
        then figure out which pairs will go work on what

-----
USER STORIES
*   Beck and Martin, "Planning Extreme Programming"
    A user story should be:
    *   UNDERSTANDABLE to customers and developers 
    *   TESTABLE
    *   VALUABLE to the customer
    *   SMALL ENOUGH that several in an iteration

*   the SET of user stories changes FREQUENTLY
    ...you can add user stories,
       you can remove user stories,
       you can modify user stories,

       ...you are actually never done writing user stories
       during a project; <-- until it dies...!

       (you ARE done with A user story when WORK
       is started on it...)

*   language needs to be NOT too technical,
    needs to be understandable by the customer!

*   often written on index cards
    
*   each of our CS 458 user stories WILL include an estimate
    of how long you think it will take to implement
    *   for example, how many hours
    *   (there are fancier ways to estimate, also)

*   each will also include, on the back of its card,
    the ACCEPTANCE CRITERIA <-- these will DRIVE
                                the Acceptance Tests
    specifically, how you can tell you've "met" this
    story!

*   some examples using the style we will be trying
    this semester

    (pretend this is on an index card)

-----
EXAMPLE 1 of a user story
AS AN internet banking customer,
I WANT to see a rolling balance for my everyday account
SO THAT I know the balance of my account after transaction
    is applied

estimate: 5 hours

Example acceptance criteria:
*   The rolling balance is displayed
*   The rolling balance is calculated for each transaction
*   The balance is displayed for every transaction for the
    full period of time transactions are available
*   The balance is not displayed if a filter has been applied

-----
EXAMPLE 2 
AS A Snapple cardholder
I WANT to be able to pick up my pending credit from MySnapper

[note: MySnapper is a client app for users to top up their
       ePurse, check balance, etc.)

SO THAT I have money on my ePurse

Estimate: 3 hours

Example acceptance criteria:
*   I can see on MySnapper that there are pending credit(s)
    for my card
*   I can choose which credit(s) to pick up
*   I can see my new purse balance when I have chosen to
    pick up a credit
*   I can't top off my card or buy a pass when there are
    pending credits for my card

-----
ATTEMPTED Example 3
As a customer,
I WANT words I enter into the comments field to be spell-checked
SO THAT I don't have to look up spellings myself

Estimate: 2 hours

Example Acceptance criteria:
*   Most misspelled words 
    shows up highlighted in the comments field