Continual and Long-Term Improvement in Agile Software Development
Total Page:16
File Type:pdf, Size:1020Kb
MASARYK UNIVERSITY Faculty of informatics Continual and long-term improvement in agile software development DIPLOMA THESIS Brno 2015 Bc. Juraj Šoltés Declaration I declare that the work in this thesis is my own authorial work, which I have worked out on my own. All sources, references and literature used or excerpted during elaboration of this work are properly cited and listed in complete reference to the due source. Juraj Šoltés Advisor: doc. RNDr. Tomáš Pitner, Ph.D. ii Acknowledgment I would like to express thanks of gratitude to everyone, who supported me throughout the course of this thesis. My special thanks belong to my advisor, who helped me with the overall idea and structure of my diploma thesis. I would also like to thank my family and friends for material and psychological support, Kentico software for the opportunity of doing my diploma thesis under its roof, my colleagues who helped me to become Scrum master and the On-line marketing team for their patience with me. iii Abstract Diploma thesis deals with the improvement in agile teams and ways how it can be measured and tracked. The work puts emphasis on choosing proper metrics and working with them so that it complies with the principles behind agile manifesto. The metrics then serve as a basis for creating the performance indicators for chosen goals. Several representative indicators for the agile process measuring are created, concretely in areas of collaboration and predictability. These are then used for analysis of the data collected during two releases in Kentico software. The results are compared with the outcome of the team’s retrospectives. The indicators’ reliability is discussed and both process improvements and improvements on usage of the indicators are suggested. Keywords Agile methods, agile metrics, performance indicators, process optimization, Scrum, predictability, collaboration, efficiency, case study iv Table of contents 1. Introduction ............................................................................................................................. 3 1.1. Motivation ......................................................................................................................... 3 1.2. Aim of the thesis ............................................................................................................... 4 1.3. Thesis outline .................................................................................................................... 4 2. Agile methods .......................................................................................................................... 5 2.1. Kanban ............................................................................................................................... 5 2.2. Dynamic systems Development Method ...................................................................... 7 2.3. Adaptive software development ................................................................................... 9 2.4. Extreme programming .................................................................................................. 11 2.5. Lean software development ......................................................................................... 16 2.6. Scrum ............................................................................................................................... 18 2.6.1. Principles ................................................................................................................. 18 2.6.2. Roles and artifacts .................................................................................................. 19 2.6.3. Meetings .................................................................................................................. 19 2.7. Disciplined agile delivery ............................................................................................. 21 3. Improvement in agile teams ............................................................................................... 25 3.1. Indicators, metrics and diagnostics ............................................................................. 25 3.2. Questions to ask about metrics .................................................................................... 26 3.3. Metrics in agile software development ....................................................................... 28 3.4. Process metrics ............................................................................................................... 31 3.4.1. Velocity ................................................................................................................... 32 3.4.2. Sprint burndown chart ......................................................................................... 35 3.4.3. Rate of features delivered ..................................................................................... 39 3.4.4. Work in process ...................................................................................................... 41 3.4.5. Story cycle time ....................................................................................................... 43 4. Case study................................................................................................................................ 45 4.1. Environment ................................................................................................................... 45 4.1.1. Company ................................................................................................................. 45 4.1.2. Team ......................................................................................................................... 46 1 4.2. Methodology .................................................................................................................... 47 4.3. Results ............................................................................................................................... 51 4.3.1. Predictability of the delivery ................................................................................ 51 4.3.2. Collaboration on the team ..................................................................................... 62 4.3.3. Efficiency of the process ........................................................................................ 64 5. Conclusion............................................................................................................................... 66 5.1. Summary ......................................................................................................................... 66 5.2. Interpretation of the results .......................................................................................... 67 5.3. Future research ............................................................................................................... 70 5.4. Final word ....................................................................................................................... 71 6. Bibliography ........................................................................................................................... 72 2 1. Introduction 1.1. Motivation At the beginning of this century, software engineers from all over the world have taken one great step towards better ways of developing software. Several people, representing different agile philosophies such as Extreme Programming, Scrum, DSDM, Adaptive Software Development, Crystal, Feature-driven development and others, met together to create an Agile Manifesto. These four sentences represent the values they decided to manifest (Beck, 2001): Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan While there is value in the items on the right, the items on the left are valued more. Opposed to the heavyweight deterministic process of the waterfall model stands the lightweight opened-to-change process of agile software development. Through the practical experiences the IT world realized that this is how development of the complex software really works. Together with the Agile Manifesto, twelve principles of agile software were uncovered. To mention only some of them: Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Continuous attention to technical excellence and good design enhances agility. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. The best architectures, requirements, and designs emerge from self- organizing teams. They express what is really important in agile - to deliver valuable software of great quality in a sustainable pace. It can be only accomplished in a highly collaborative environment of a self-organizing team. These principles put emphasis on four dimensions of the agile software development - value to the customer, quality of the product, predictability of the delivery and collaboration of the team. In order to get better, we need to track how we move forward in these 3 dimensions and base our decision on it. And this is the basis for continual and long-term improvement in agile software development. Agile manifesto describes the process of continual improvement in one of its principles: “At regular intervals, the team reflects on how to become more effective, then tunes and