\begin{frame} \frametitle{Learning outcome based on syllabus} \begin{itemize} \item Give an account of different ways to develop software (ISGA01) \item Describe different ways of developing software (ISGA06) \item Explain the development process of an information system (ISGA90) \end{itemize} \vfill\centering \smartdiagram[sequence diagram]{% Reality check,% Waterfall method,% Scrum method% } \end{frame} \begin{frame} \frametitle{Reality check} \begin{columns} \begin{column}{0.59\textwidth} \begin{itemize} \item Three things we wish were true \begin{itemize} \item Customers know what they want \item Developers know how to build it \item Nothing changes at the course of a project \end{itemize} \end{itemize} \begin{itemize} \item Three things we have to live with \begin{itemize} \item Customers figure out what they want \item Developers figure out how to build it \item Many things change at the course of a project \end{itemize} \end{itemize} \end{column} \begin{column}{0.39\textwidth} \includegraphics[width=\textwidth]{img/reality} \end{column} \end{columns} \end{frame} \begin{frame} \frametitle{Timeline of different approaches towards product development} \centering \includegraphics[height=0.4\textheight]{img/timeline}\\ \vfill\alert{Our scope: Agile and Scrum, briefly Waterfall and XP} \end{frame} \begin{frame} \frametitle{Monolithic vs Iterative and incremental} \centering \includegraphics[height=0.65\textheight]{img/iterative} \vfill \alert{Agile development is all about feedback cycles} \end{frame} \begin{frame} \frametitle{Each iteration is a mini project that involves all diciplines} \centering \includegraphics[height=0.7\textheight]{img/one-it}\\ \alert{Note: not necessarily in this order!} \end{frame} \begin{frame} \frametitle{Agile vs Waterfall} \centering \includegraphics[height=0.70\textheight]{img/cmp} \end{frame} \begin{frame} \frametitle{Does it work? Results from a survey on agile software development} \centering \includegraphics[height=0.70\textheight]{img/works} \end{frame} \begin{frame} \frametitle{Scrum properties} \begin{columns} \begin{column}{0.59\textwidth} \begin{itemize} \item Emperical---progress based on real-world observations rather than fictious plans \item Identify problems early \item Prioritize strictly \item Plan for change and continuous improvement \begin{itemize} \item Short feedback loop \item Ship working software frequently \item ``Planning is needed, but always wrong'' \end{itemize} \item Cross-functional and self-organizing teams \item Pull-scheduling \item Timeboxing \item Simple tools \item ... \end{itemize} \end{column} \begin{column}{0.39\textwidth} \centering \includegraphics[height=0.6\textheight]{img/tia} \burl{https://www.scrum.org/resources/blog/three-pillars-empiricism-scrum} \end{column} \end{columns} \end{frame} \begin{frame} \frametitle{An overview of the Scrum process} \begin{columns} \begin{column}{0.69\textwidth} \includegraphics[height=0.8\textheight]{img/scrum-overview} \end{column} \begin{column}{0.29\textwidth} Roles: \begin{itemize} \item Product owner \item Scrum master \item Developer \end{itemize} \end{column} \end{columns} \end{frame} \begin{frame} \frametitle{A typical sprint} \begin{itemize} \item \textbf{Sprint planning} \titlefloatright{\textbf{Timeboxed}} \begin{itemize} \item Update and prioritize features in the product backlog% \titlefloatright{4h} \item Add top-priority features to sprint backlog and divide into tasks\titlefloatright{4h} \end{itemize} \item \textbf{Sprint execution} \titlefloatright{2--4 weeks} \begin{itemize} \item Daily scrum---a short stand-up meeting \titlefloatright{15m} \begin{itemize} \item What did you do yesterday? \item What will you do today? \item Any problems? \end{itemize} \end{itemize} \item \textbf{Sprint review} \titlefloatright{4h} \begin{itemize} \item Team holds a demo for product owner and stakeholders \end{itemize} \item \textbf{Sprint retrospective} \titlefloatright{2h} \begin{itemize} \item The good and the bad? \item How can we improve as a team? \end{itemize} \end{itemize} \end{frame} \begin{frame} \frametitle{Sprint planning---what should we work on the next couple of weeks?} \begin{columns} \begin{column}{0.69\textwidth} \begin{itemize} \item Dialog between product owner and development team \begin{itemize} \item PO: present\&adapt priority features in product backlog \item Team: how much can be done \begin{itemize} \item Story points \item Sprint velocity \item Poker estimates are common \end{itemize} \end{itemize} \item Concrete output of this meeting? \begin{itemize} \item A sprint backlog and definitions of `done' \item A set of tasks for each feature in the sprint backlog \item A sprint goal, a demo date, and how to demo \item A time and place for daily scrum \end{itemize} \end{itemize} \end{column} \begin{column}{0.29\textwidth} \centering \input{img/esi} \end{column} \end{columns} \end{frame} \begin{frame} \frametitle{...using cards!} \centering \includegraphics[height=0.8\textheight]{img/poker} \end{frame} \begin{frame} \frametitle{Daily scrum---a short stand-up meeting that repeats every day} \begin{columns} \begin{column}{0.39\textwidth} \begin{itemize} \item Purpose---keep \textbf{team members} up-to-date \item What did you do yesterday? \item What will you do today? \item Any problems? \end{itemize} \end{column} \begin{column}{0.59\textwidth} \centering \includegraphics[width=\textwidth]{img/board}\\ A board is used to track progress \end{column} \end{columns} \end{frame} \begin{frame} \frametitle{Sprint review---show-case the latest prototype and start a dialog} \begin{columns} \begin{column}{0.49\textwidth} \begin{itemize} \item Date and time already defined---\textbf{unconditional} \item All roles attend, including stakeholders if invited \item A demo of the prototype shows that the sprint goal is achieved \begin{itemize} \item How to demo? Sprint planning... \end{itemize} \end{itemize} \end{column} \begin{column}{0.49\textwidth} \centering \includegraphics[width=\textwidth]{img/demo}\\ \end{column} \end{columns} \pause \vfill\centering\alert{Wait w000t: what if we are not done?}\\ \pause \alert{This is identified early on and solved accordingly!} \end{frame} \begin{frame} \frametitle{Sprint retrospective---ensure that the team improves internally} \begin{columns} \begin{column}{0.59\textwidth} \begin{itemize} \item Product owner is excluded from this meeting \item The goal is to improve the team productivity \begin{itemize} \item What did we do right? \item What did we do wrong? \item How can we improve? \textbf{Choose one!} \end{itemize} \end{itemize} \end{column} \begin{column}{0.45\textwidth} \centering \includegraphics[width=\textwidth]{img/retrospective}\\ Make lists and perhaps magnet vote \end{column} \end{columns} \end{frame} \begin{frame} \frametitle{What does `done' really mean?} \begin{columns} \begin{column}{0.59\textwidth} \begin{itemize} \item \textbf{Can be delivered to the customer} \begin{itemize} \item A given feature is implemented \item Code follows good engineering practises \item Code is documented and refactored \item ...or anything else defined at sprint planning \end{itemize} \item \textbf{If your estimates turn out to be wrong} \begin{itemize} \item Work harder, longer and/or smarter \item Lower quality by skipping design, testing, integration and/or documentation \item Reduce and/or remove features \item What are the pros and cons? \end{itemize} \end{itemize} \end{column} \begin{column}{0.39\textwidth} \centering \includegraphics[width=\textwidth]{img/done} \end{column} \end{columns} \end{frame} \begin{frame} \frametitle{Consequences of the `hurry-up' and `lowered-quality' approaches} \begin{columns} \begin{column}{0.49\textwidth} \centering \includegraphics[height=0.4\textheight]{img/hurry} \begin{itemize} \item \textbf{Hurry-up}---work overtime, skip breaks, add more people, ... \begin{itemize} \item Burnout \item Errors \item `More junk in short time' \end{itemize} \end{itemize} \end{column} \begin{column}{0.49\textwidth} \centering \includegraphics[height=0.4\textheight]{img/debt} \begin{itemize} \item \textbf{Lowered quality}---leads to technical debt and thus reduced efficiency \begin{itemize} \item Harder to re-use code \item Harder to add functionality \item Harder to meet future goals \end{itemize} \end{itemize} \end{column} \end{columns} \vfill\centering \alert{In other words: involve product owner and go with option three} \end{frame} \begin{frame} \frametitle{From start to finnish---putting it all together} \centering \includegraphics[height=0.75\textheight]{img/scrum-whole} \end{frame} \begin{frame} \frametitle{Scrum and eXtreme Programming (XP)} \begin{columns} \begin{column}{0.49\textwidth} \centering \includegraphics[width=0.9\textwidth]{img/scrum-and-xp} \end{column} \begin{column}{0.49\textwidth} \centering \includegraphics[width=0.9\textwidth]{img/scrum-and-xp2} \end{column} \end{columns} \begin{itemize} \item Scrum can be viewed as a team-to-stakeholder interface \item The team is self-organizing, but it \textbf{could} work using XP practises \end{itemize} \end{frame} \begin{frame} \frametitle{Can't get enough? Review the concepts or dig into the details (Optional)} \begin{columns} \begin{column}{0.33\textwidth} \centering \includegraphics[width=\textwidth]{img/scrum-1m} \burl{https://www.youtube.com/watch?v=TRcReyRYIMg} \end{column} \begin{column}{0.33\textwidth} \centering \includegraphics[width=\textwidth]{img/scrum-2m} \burl{https://www.youtube.com/watch?v=WxiuE-1ujCM} \end{column} \begin{column}{0.33\textwidth} \centering \includegraphics[width=\textwidth]{img/scrum-10m} \burl{https://www.youtube.com/watch?v=XU0llRltyFM} \end{column} \end{columns} \vfill \begin{columns} \begin{column}{0.33\textwidth} \centering \includegraphics[width=\textwidth]{img/agile-manifesto} \burl{http://agilemanifesto.org/} \end{column} \begin{column}{0.33\textwidth} \centering \includegraphics[width=\textwidth]{img/scrum-guide} \burl{https://www.scrumguides.org/docs/scrumguide/v2017/2017-Scrum-Guide-US.pdf} \end{column} \begin{column}{0.33\textwidth} \centering \includegraphics[width=\textwidth]{img/henke} \burl{http://wwwis.win.tue.nl/2R690/doc/ScrumAndXpFromTheTrenchesonline07-31.pdf} \end{column} \end{columns} \end{frame}