User Stories ============== first draft ============== As a new UW student, I want to create my WatIam user ID. As a new UW employee, I want to create my WatIam user ID. As a new UW student who has a WatIam user ID, I want to create an e-mail alias for me. As a new UW employee who has a WatIam user ID, I want to create an e-mail alias for me. ========================================= Ah, but we will need to distinguish those with SINs and those without. And we will need to provide for non UW people, so-called guests. And for e-mail alias creation, the student or employee is no longer new, and status as a student, employee, or guest is irrelevant. In fact, "UW" is irrelevant at this point. And what about the person who has an account, but has forgotten his or her ID? ============== second draft ============== As a new UW student who has a SIN, I want to create my WatIam user ID. As a new UW student who does not have a SIN, I want to create my WatIam user ID. As a new UW employee who has a SIN, I want to create my WatIam user ID. As a new UW employee does not have a SIN, I want to create my WatIam user ID. As a new UW guest who has a SIN, I want to create my WatIam user ID. As a new UW guest who does not have a SIN, I want to create my WatIam user ID. As a person who has a WatIam user ID, I want to create an e-mail alias for me. As a UW student who has forgotten his or her ID, I want to be told my ID. As a UW employee who has forgotten his or her ID, I want to be told my ID. As a UW guest who has forgotten his or her ID, I want to be told my ID. ========================================== So which of these user stories to do first? Most representative, complex, central... Pick: As a new UW student who does not have a SIN, I want to create my WatIam user ID. ============== main module ============== do forever get input fromUser case input in createID: getIDdataAndCreateID, createAlias: getEmailDataAndCreateAlias esac od ========================================= Refine createID case. In writing this spike, take into account known variations of the story, for employees and guests and for people with SINs. ============== module for createID case ============== getIDdataAndCreateID: get StudentEmployeeOrGuest fromUser if StudentEmployeeOrGuest = student then get SN fromUser; if SN in dataBase then get dateOfBirth fromUser; check that dateOfBirth matches that for SN in dataBase; ask user if he has SIN and if so get SIN fromUser; check that SIN matches that for SN in dataBase else get availableOfficialIdentifyingNumber fromUser; check that availableOfficialIdentifyingNumber matches that for SN in dataBase fi; create ID for SN and put in dataBase for SN; report ID toUser else fi else fi ======================================================