%% Use Cases Template File %% Created by Tom Desair (http://www.tomdesair.com) %% Downloadable at: http://www.tomdesair.com/downloads/use-case-latex-template.zip %% Date Modified: 03/04/2012 % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. \documentclass[a4paper, 10pt, oneside, draft]{article} %include the usecases package \usepackage{usecases} \begin{document} %Sometimes it is a good idea to put domain objects in \texttt{} %The template and the descriptions are based on the book Applying UML and Patterns: %An Introduction to Object-Oriented Analysis and Design and Iterative Development %(3rd Edition) by Craig Larman. \begin{usecase} \addtitle{Use Case 1}{Creating a League} %Scope: the system under design \addfield{Scope:}{System-wide} %Level: "user-goal" or "subfunction" \addfield{Level:}{User-goal} %Primary Actor: Calls on the system to deliver its services. \addfield{Primary Actor:}{Administrator} \addfield{Trigger:}{An administrator wants to create a new league.} %Preconditions: What must be true on start and worth telling the reader? \addfield{Preconditions:}{The user must be signed in as an administrator.} %when multiple %\additemizedfield{Preconditions:}{} %Postconditions: What must be true on successful completion and worth telling the reader \addfield{Postconditions:}{The league will be created.} %when multiple %\additemizedfield{Preconditions:}{} %Main Success Scenario: A typical, unconditional happy path scenario of success. \addscenario{Main Success Scenario:}{ \item The administrator creates a new league. \item The league is created } %Extensions: Alternate scenarios of success or failure. \addscenario{Extensions:}{ \item[1.a] The user is not an administrator: \begin{enumerate} \item[1.] System shows permission denied \item[2.] User returns to login page \end{enumerate} \item[2.a] The league cannot be created: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} } \end{usecase} \pagebreak \begin{usecase} \addtitle{Use Case 2}{Creating a Team} %Scope: the system under design \addfield{Scope:}{System-wide} %Level: "user-goal" or "subfunction" \addfield{Level:}{User-goal} %Primary Actor: Calls on the system to deliver its services. \addfield{Primary Actor:}{Coach} \addfield{Trigger:}{A coach wants to create a new team.} %Preconditions: What must be true on start and worth telling the reader? \addfield{Preconditions:}{The user must be signed in as a coach.} %when multiple %\additemizedfield{Preconditions:}{} %Postconditions: What must be true on successful completion and worth telling the reader % \addfield{Postconditions:}{The team will be created.} %when multiple \additemizedfield{Preconditions:}{\item The user must be signed in as a coach \item A league must already exist} %Main Success Scenario: A typical, unconditional happy path scenario of success. \addscenario{Main Success Scenario:}{ \item[1] The coach creates a new team. \item[2] The team is created } %Extensions: Alternate scenarios of success or failure. \addscenario{Extensions:}{ \item[1.a] The user is not a coach: \begin{enumerate} \item[1.] System shows permission denied \item[2.] User returns to login page \end{enumerate} \item[2.a] The team cannot be created: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[3.b] The league does not exist: \begin{enumerate} \item[1.] System shows failure message \item[2.] The user returns to step 1 \end{enumerate} } \end{usecase} \pagebreak \begin{usecase} \addtitle{Use Case 3}{Generating a Schedule} %Scope: the system under design \addfield{Scope:}{System-wide} %Level: "user-goal" or "subfunction" \addfield{Level:}{User-goal} %Primary Actor: Calls on the system to deliver its services. \addfield{Primary Actor:}{Administrator} \addfield{Trigger:}{An administrator wants to generate a schedule.} %Preconditions: What must be true on start and worth telling the reader? \additemizedfield{Preconditions:}{\item The user must be singed in as an administrator \item A league must already exist} %Postconditions: What must be true on successful completion and worth telling the reader \addfield{Postconditions:}{The schedule will be generated.} %Main Success Scenario: A typical, unconditional happy path scenario of success. \addscenario{Main Success Scenario:}{ \item The administrator selects a league to generate a schedule for. \item The administrator generates a schedule. \item The schedule is generated. } %Extensions: Alternate scenarios of success or failure. \addscenario{Extensions:}{ \item[1.a] The user is not an administrator: \begin{enumerate} \item[1.] System shows permission denied \item[2.] User returns to login page \end{enumerate} \item[2.a] The league does not exist: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[3.a] The league does not have any teams: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[3.b] The schedule fails to be created: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} } \end{usecase} \pagebreak \begin{usecase} \addtitle{Use Case 4}{Generating Statistics} %Scope: the system under design \addfield{Scope:}{System-wide} %Level: "user-goal" or "subfunction" \addfield{Level:}{User-goal} %Primary Actor: Calls on the system to deliver its services. \addfield{Primary Actor:}{Administrator} \addfield{Trigger:}{An administrator wants to generate statistics.} %Preconditions: What must be true on start and worth telling the reader? \additemizedfield{Preconditions:}{\item The user must be singed in as an administrator \item A league must already exist} %Postconditions: What must be true on successful completion and worth telling the reader \addfield{Postconditions:}{The statistics will be generated.} %Main Success Scenario: A typical, unconditional happy path scenario of success. \addscenario{Main Success Scenario:}{ \item The administrator selects a league to generate statistics for. \item The administrator generates statistics. \item The statistics are generated. } %Extensions: Alternate scenarios of success or failure. \addscenario{Extensions:}{ \item[1.a] The user is not an administrator: \begin{enumerate} \item[1.] System shows permission denied \item[2.] User returns to login page \end{enumerate} \item[1.b] The league does not exist: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[3.a] The league does not have any teams: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[3.b] The statistics fail to be generated: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} } \end{usecase} \pagebreak \begin{usecase} \addtitle{Use Case 5}{Assign Officials} %Scope: the system under design \addfield{Scope:}{System-wide} %Level: "user-goal" or "subfunction" \addfield{Level:}{User-goal} %Primary Actor: Calls on the system to deliver its services. \addfield{Primary Actor:}{Administrator} \addfield{Trigger:}{An administrator wants to assign officials.} %Preconditions: What must be true on start and worth telling the reader? \additemizedfield{Preconditions:}{\item The user must be singed in as an administrator \item A league must already exist \item Officials must already exist for the league} %Postconditions: What must be true on successful completion and worth telling the reader \addfield{Postconditions:}{The officials will be assigned.} %Main Success Scenario: A typical, unconditional happy path scenario of success. \addscenario{Main Success Scenario:}{ \item The administrator selects a league to assign officials to. \item The administrator assigns officials. \item The officials are assigned. } %Extensions: Alternate scenarios of success or failure. \addscenario{Extensions:}{ \item[1.a] The user is not an administrator: \begin{enumerate} \item[1.] System shows permission denied \item[2.] User returns to login page \end{enumerate} \item[2.a] The league does not exist: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[3.a] There are no eligible officials: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[3.b] An unknown error occurs: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} } \end{usecase} \pagebreak \begin{usecase} \addtitle{Use Case 6}{Generate Bracket} %Scope: the system under design \addfield{Scope:}{System-wide} %Level: "user-goal" or "subfunction" \addfield{Level:}{User-goal} %Primary Actor: Calls on the system to deliver its services. \addfield{Primary Actor:}{Administrator} \addfield{Trigger:}{An administrator wants to generate a bracket.} %Preconditions: What must be true on start and worth telling the reader? \additemizedfield{Preconditions:}{\item The user must be singed in as an administrator \item A league must already exist} %Postconditions: What must be true on successful completion and worth telling the reader \addfield{Postconditions:}{The bracket will be generated and a schedule will be created.} %Main Success Scenario: A typical, unconditional happy path scenario of success. \addscenario{Main Success Scenario:}{ \item The administrator selects a league to generate a bracket for. \item The administrator generates a bracket. \item The bracket is generated. \item A schedule is created from the bracket, following Use Case 3. } %Extensions: Alternate scenarios of success or failure. \addscenario{Extensions:}{ \item[1.a] The user is not an administrator: \begin{enumerate} \item[1.] System shows permission denied \item[2.] User returns to login page \end{enumerate} \item[2.a] The league does not exist: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[3.a] The league does a cleanly divisible number of teams: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[3.b] The schedule fails to be created: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[4.b] A bracket is manually generated \begin{enumerate} \item[1.] The system follows all steps except step 5 \item[2.] The schedule is created \end{enumerate} } \end{usecase} \pagebreak \begin{usecase} \addtitle{Use Case 7}{Submit Scores} %Scope: the system under design \addfield{Scope:}{System-wide} %Level: "user-goal" or "subfunction" \addfield{Level:}{User-goal} %Primary Actor: Calls on the system to deliver its services. \addfield{Primary Actor:}{Official} \addfield{Trigger:}{An official wants to submit scores for a game they officiated.} %Preconditions: What must be true on start and worth telling the reader? \additemizedfield{Preconditions:}{\item The user must be singed in as an official \item A league must already exist \item A schedule must already exist \item A game must already exist \item The user must have permission to submit scores for that game} %Postconditions: What must be true on successful completion and worth telling the reader \addfield{Postconditions:}{The scores will be submitted.} %Main Success Scenario: A typical, unconditional happy path scenario of success. \addscenario{Main Success Scenario:}{ \item The official selects a game to submit scores for. \item The official submits scores. \item The scores are submitted. } %Extensions: Alternate scenarios of success or failure. \addscenario{Extensions:}{ \item[1.a] The user is not an official: \begin{enumerate} \item[1.] System shows permission denied \item[2.] User returns to login page \end{enumerate} \item[1.b] An administrator: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[2.a] The league does not exist: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[2.b] The schedule does not exist: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[2.c] The game does not exist: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[2.d] The user does not have permission to submit scores for that game: \begin{enumerate} \item[1.] System shows permission denied \item[2.] User returns to step 1 \end{enumerate} } \end{usecase} \pagebreak \begin{usecase} \addtitle{Use Case 8}{View Schedule} %Scope: the system under design \addfield{Scope:}{System-wide} %Level: "user-goal" or "subfunction" \addfield{Level:}{User-goal} %Primary Actor: Calls on the system to deliver its services. \addfield{Primary Actor:}{End User} \addfield{Trigger:}{An end user wants to view a schedule.} %Preconditions: What must be true on start and worth telling the reader? \additemizedfield{Preconditions:}{ \item A schedule must already exist \item If the schedule is not public the user must be signed in} %Postconditions: What must be true on successful completion and worth telling the reader \addfield{Postconditions:}{The schedule will be displayed.} %Main Success Scenario: A typical, unconditional happy path scenario of success. \addscenario{Main Success Scenario:}{ \item The user selects a league to view a schedule for. \item The schedule is displayed. } %Extensions: Alternate scenarios of success or failure. \addscenario{Extensions:}{ \item[1.a] The schedule is not public: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} \item[2.a] The schedule does not exist: \begin{enumerate} \item[1.] System shows failure message \item[2.] User returns to step 1 \end{enumerate} } \end{usecase} \end{document}