\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{jorn} \pdfinfo{ /Title (user-story-cheat-sheet.pdf) /Creator (Cheatography) /Author (jorn) /Subject (User Story Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{9CC936} \definecolor{LightBackground}{HTML}{F8FBF2} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{User Story Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{jorn} via \textcolor{DarkBackground}{\uline{cheatography.com/136461/cs/28470/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}jorn \\ \uline{cheatography.com/jorn} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 1st July, 2021.\\ Updated 1st July, 2021.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{2} \begin{tabularx}{8.4cm}{x{3.44 cm} x{4.56 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{User Story}} \tn % Row 0 \SetRowColor{LightBackground} Feature & feature naam? \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} Ik wil als & persona? \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} dat & wat? \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} zodat & waarom? \tn % Row Count 4 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Tips}} \tn \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{\{\{fa-circle\}\} Gebruik werkwoorden als je de 'wat' omschrijft. Dat geeft namelijk aan wat de gebruiker wil bereiken. Dus niet "ik wil een overzicht", maar "ik wil een overzicht inzien". \newline % Row Count 4 (+ 4) \{\{fa-circle\}\} Wat vaak gebeurt, is dat er niet omschreven wordt 'waarom' een bepaalde gebruiker iets wil bereiken, maar 'hoe' hij dat wil doen. Probeer niet in die valkuil te stappen. Het beantwoorden van de hoe-vraag laat je namelijk juist aan de ontwikkelaars over. \newline % Row Count 10 (+ 6) \{\{fa-circle\}\} Gebruik geen jargon, tenzij daar afspraken over gemaakt zijn. Het kan anders snel leiden tot \seqsplit{interpretatieverschillen.}% Row Count 13 (+ 3) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{1.84 cm} x{6.16 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{INVEST}} \tn % Row 0 \SetRowColor{LightBackground} \seqsplit{Independent} & Zorg dat je user stories onafhankelijk zijn van andere stories, zo kan de product owner/de klant prioriteiten stellen. \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} \seqsplit{Negotiable} & User stories moeten niet te gedetailleerd zijn. Ontwikkelaars moeten de vrijheid krijgen om zelf in te vullen hoe een functionele wens vorm krijgt. \tn % Row Count 9 (+ 5) % Row 2 \SetRowColor{LightBackground} Valuable & De functionaliteit moet uiteindelijk een waardevolle bijdrage leveren voor de gebruiker. Die waarde wordt door de product owner bepaald. De meest waardevolle functionaliteiten worden als eerste ontwikkeld. \tn % Row Count 16 (+ 7) % Row 3 \SetRowColor{white} \seqsplit{Estimable} & Kun je inschatten hoe veel tijd en werk het ongeveer kost om de functionaliteit te ontwikkelen en is alle kennis in huis? \tn % Row Count 21 (+ 5) % Row 4 \SetRowColor{LightBackground} \seqsplit{Small/Simple} & Is de user story klein genoeg? Past hij op één post-it en beschrijft hij maar één functionaliteit? Hij moet ook niet te klein zijn. Als hij te weinig waarde heeft, kun je kleine user stories beter bundelen tot een grotere. Vuistregel: als het langer duurt dan een dag of twee om een story te ontwikkelen tot functionaliteit, dan is hij te groot. Duurt het een korter dan een uur, dan is hij te klein. \tn % Row Count 35 (+ 14) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{1.84 cm} x{6.16 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{INVEST (cont)}} \tn % Row 5 \SetRowColor{LightBackground} Testable & Heb je de goede acceptatiecriteria omschreven bij de user story, waardoor je kunt bepalen of de functionaliteit straks aan de eisen voldoet? \tn % Row Count 5 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Acceptatiecriteria}} \tn \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Acceptatiecriteria worden puntsgewijs genoteerd. Deze zijn enkel met ja/nee of geslaagd/niet geslaagd te beantwoorden.% Row Count 3 (+ 3) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{1.68 cm} x{6.32 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Acceptatiescenario's}} \tn % Row 0 \SetRowColor{LightBackground} \seqsplit{Scenario} & omschrijving van het scenario \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} Gegeven & voorwaarde van het scenario \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} Wanneer & de actie van het scenario \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} Dan & het resultaat van het scenario \tn % Row Count 4 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{8.4cm}}{\{\{fa-circle\}\} Na 'gegeven', 'wanneer' of 'dan' kun je deze onderdelen van een scenario ook verlengen door 'En'. \newline \newline \{\{fa-circle\}\} Je kunt het resultaat van het scenario verder verduidelijken door 'maar' toe te voegen na 'dan'.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Voorbeeld}} \tn \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Feature: Winkelmandje \newline % Row Count 1 (+ 1) Ik wil als klant producten aan een winkelmandje toe kunnen voegen zodat ik deze producten kan kopen \newline % Row Count 3 (+ 2) Acceptatiecriteria: \newline % Row Count 4 (+ 1) \{\{fa-circle\}\} Het BTW bedrag van 21\% moet getoond worden \newline % Row Count 6 (+ 2) \{\{fa-circle\}\} De bezorgkosten voor bestellingen onder de 10 euro zijn 3 euro \newline % Row Count 8 (+ 2) \{\{fa-circle\}\} De bezorgkosten voor bestellingen boven de 10 euro zijn 2 euro \newline % Row Count 10 (+ 2) Scenario: Een enkel product van onder de 10 euro kopen \newline % Row Count 12 (+ 2) Gegeven: dat er een "Voetbal" is die 8 euro kost \newline % Row Count 13 (+ 1) Wanneer: ik de "Voetbal" aan het winkelmandje toevoeg \newline % Row Count 15 (+ 2) Dan: heb ik 1 product in mijn winkelmandje \newline % Row Count 16 (+ 1) En: is het BTW bedrag 1,39 euro \newline % Row Count 17 (+ 1) En: is het totaalbedrag 11 euro% Row Count 18 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}