Introduction to Agile/Extreme Programming

Similar documents
Virtually Agile. Astro Sabre (Matt Ganis) IBM, Senior Technical Staff Member Hawthorne, NY - September 20, 2007

Introduction. Failure. Why Projects Fail. Agile in an Hour

Introduction. Failure. Why Projects Fail. Agile in an Hour

Agile Essentials Track: Business Services

Agile Software Development. Agile Software Development Basics. Principles of the Agile Alliance. Agile Manifesto. Agenda. Agile software development

13. Team evolutionary developement

User-centered System Design. Agile

Agile Projects 7. Agile Project Management 21

The Challenge of Agile Estimating

Lecture 8 Agile Software Development

Introduction to Agile Life Cycles. CSCI 5828: Foundations of Software Engineering Lecture 07 09/13/2016

2. True or false: In Scrum all the requirements for the project are known prior to the start of development.

8 th of April 2015 Bucharest, Romania Vlad Gabriel Sorin Agile PM/Scrum Master

SOFTWARE ENGINEERING SOFTWARE-LIFE CYCLE AND PROCESS MODELS. Saulius Ragaišis.

Software Design COSC 4353/6353 D R. R A J S I N G H

Improving Agile Execution in the Federal Government

Software Engineering Part 2

Foundations of software engineering

AGILE SOLUTIONS. Agile Basics

CS 5704: Software Engineering

The Software Life Cycle

Chapter 2 Objectives. Pfleeger and Atlee, Software Engineering: Theory and Practice (edited by B. Cheng) Chapter 2.

Agile Program Development. Agile Manifesto 9/3/2013. What is Agile Development? 12 Principles of Agile Development 1 of 4

AGILE TEST MANAGEMENT WITH VISUAL STUDIO

Processes and Life- Cycles. Kristian Sandahl

Agile Development Processes. CSCE Lecture 3-08/31/2017

Agile and Secure Can We Be Both? San Antonio AITP. August 15 th, 2007

Reducing Business Risk

Lecture 29: Agile Design and Extreme Programming

Introduction to Agile and Scrum

The problem. extreme Programming (XP) Conclusions Resources. Problems in software development. Practices Why XP works Benefits of XP

Agile 101. Brent Hurley Chief Problem Solver Gira Solutions. Values, Principles

Scrum. an Agile Process

Agile Certified Professional

An Overview of Software Process

Scrum an Agile Process

04. Agile Development

Processes and Life- Cycles. Kristian Sandahl

Agile Software Development

SEPTEMBER 2018 The Agile Team s Playbook to Doing Agile

Agile Test Plan How to Construct an Agile Test Plan

Non-object-oriented design methods. Software Requirements and Design CITS 4401 Lecture 15

Managing Projects of Chaotic and Unpredictable Behavior

Part 1. Software engineering Facts. CSC 4181 Compiler Construction Software Engineering Lectures. What is software engineering? What is software?

The Software Life Cycle

Agile. How would you implement agile methodologies and tools for web projects? What do you see as the benefits and challenges to doing this?

Management by Consensus

The ABC of Agile Business Change. James Yoxall BCS 17 September, 2013

Agile Software Development in a Regulated Environment. Natalie Custer

Extreme Programming, an agile software development process

An Agile Projects Introduction Course #PMCurrent-1

18-642: Software Development Processes

Foundations of Software Engineering. Process: Agile Practices Michael Hilton

Lecture 1. Topics covered. Rapid p development and delivery is now often the most important requirement for software systems.

Copyright Intertech, Inc All Rights Reserved. May 18, 2011

Software Processes. With a focus on Agile/Scrum CPSC310 Software Engineering

Acceptance Criteria. Agile. Details that indicate the scope of a user story and help the team and product owner determine done-ness.

Agile Manifesto & XP

Chapter 4 Document Driven Approach for Agile Methodology

Michael Prince PMI-ACP Application Development Manager Richland County

Introduction to Software Project Management. CITS3220 Software Requirements & Project Management

Session 11E Adopting Agile Ground Software Development. Supannika Mobasser The Aerospace Corporation

Chapter 3 Agile Software Development. Part 1b

Fundamentals of Agile Webinar. Copyright 2011 Coveros, Inc.. All rights reserved.

Tuesday, October 25. Announcements

Lecture 5. Software Processes CSC 4700 Software Engineering. Software Development Processes. The software process

The Faster Road to Innovation Why Workopolis Went Agile

Scrum and Agile Processes. Dr.-Ing. Oliver Ciupke Haufe-Lexware GmbH & Co. KG 2011

Scrum Team Roles and Functions

Project Management in Practice Agile Agile 101 Introduction to Agile

Certified Scrum Master

FIT2101 Software Engineering Process and Management

XP is not hacking. extreme Programming. XP practices. Whole Team. When using XP you write as little documentation as possible.

Introduction to Extreme Programming

Scrum - Introduction. Petri Heiramo. Agile Coach, CST

Russell Pannone February 10, 2009

CS314 Software Engineering Project Management

Sign up to mailing list Join Slack, teaching team is available. All links are on the course website Slides are uploaded there too

CTC/ITC 310 Program Management California State University Dominguez Hills First Exam Answer Key November 20, 2018 Instructor: Howard Rosenthal

4. Agile Methods. Prof. Dr. Dirk Riehle, M.B.A. Friedrich Alexander-University Erlangen-Nürnberg. Version of

Mature agile development using HP Quality Center

A Hybrid Approach to the Use of Agile in Health IT. Session 147 March 7, 2018 Spencer Reeser-Stout, Senior Project Manager

Agile Project Management. Finding the Optimal Approach

We are Product Support following Kanban (ScrumBan), yet pulling in small features (stories), room for scope creep.

Agile Software Development. Stefan Balbo / Patrick Dolemieux

Course Title: Agile for Business Analysts

Software Process. Overview

Agile Software Development:

Watson Internet of Things. Agile Development Why requirements matter

Course Title: Agile for Business Analysts

Agile Planning. Petri Heiramo. Agile Coach, CST

What is Software Engineering?

Agile Methodologies for DevOps

Assistant Professor, Integral University, Lucknow, India. Quality Parameters. Correctness. Efficiency. Portability. Usability.

Quality in software development. Geir Amsjø

Preparation Guide. EXIN Agile Scrum Foundation

Implementing an Agile Transformation Using Discipline Agile Delivery Michael J Lyons World Wide Solution Deployment Architect, IBM Rational

Software Engineering Prof. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur.

WELCOME TO INTRO TO AGILE PROJECT MANAGEMENT AUBREY KAIGLER, PMP, ITIL. Please configure your audio: Meeting Audio Setup Wizard

Agile Methods. Background

Transcription:

Introduction to Agile/Extreme Programming Matt Ganis, Senior Technical Staff Member (Certified Scrum Master) IBM Hawthorne, New York ganis@us.ibm.com August 2007 Session 8061 Current slides at: http://webpage.pace.edu/mganis

Agenda Overview of Agile What are some of the components/practices How is this different from what we do today Some hints/tips/suggestions 2

Definition of Agile 1 Agile is an iterative and incremental (evolutionary) approach to software development which is performed in a highly collaborative manner with "just enough" ceremony that produces high quality software which meets the changing needs of its stakeholders. 1 http://www.agilemodeling.com/essays/agilesoftwaredevelopment.htm 3

What is Agile? XP, SCRUM, DSDM, Adaptive Software Development, Crystal, FDD February 2001 (Snowbird, UT) Agile Alliance Started as 17 methodology authors and practitioners Agile Manifesto Values: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan http://www.agilemanifesto.org/ 4

The promise of Agile Iteration 1 Iteration 2 Iteration n Within an iteration, stories are created In a planning game, stories are selected by the customer based on value Releases are composed of a number of iterations, as the iterations progress, stories are completed, and new ones are introduced At some point, there exists a deliverable, that delivers enough value that the customer says stop since the remaining stories don t contribute sufficient value Agile allows for faster deliverables at a lower cost (assuming the customer decides, based on what they see, that a set of stories aren t needed) 5

Why is Iterative development good? Iteration 1 Iteration 2 Iteration 3 Further iterations Path when we ve planned 100% 6

What is Agile Agile Software methodologies and practices emphasize: Empirical process control Emergence Self-organization Agile methodologies span the spectrum between hacking and milestone plan-driven development They are VERY disciplined VERY flexible (like a gun, they can be quite effective and dangerous at the same time) 7

What is Agile? (Incremental, Iterative, Adaptive) Incremental Build a system gradually See the system grow Demonstrating progress Iterative Multiple releases or check points during a project, each closer to the target Iterations include requirements development and testing Typical iterations are two weeks long Plan as you go Adaptive Goals change based on lessons from prior iterations, feedback and business opportunities 8

Agile Methods Agile methods tend to fall into two categories: Engineering (the how to do it ) Project Management (the how to manage it ) Both operate in an iterative manner 9

Why Agile? Organizations are interested in Agile development Forrester Research indicates that 2/3 of their clients are interested in Agile capabilities to deliver more value to the business faster Clients are asking for it It has become even more popular in recent years due to easy-tofollow publications and internet buzz 10

The demand for Agile development (cont) Many clients are struggling with application delivery issues Poor I/T relationship with the business Track record of poor project delivery Inability to deliver on-time, on-budget Inability to delivery solutions that meet the needs of the business Poor results with offshore delivery or seek to avoid offshore delivery Large project backlog Internal and external IBM delivery projects are interested in Agile techniques to help address delivery excellence challenges Requirements often are not well-defined Speed time to deliver critical business functionality Reduce technical risk for first of a kind solutions 11

Agile Survey 2 2 Results of an Industry survey by Scott Ambler: http://www.ddj.com/dept/architect/191800169?pgno=1 12

How has Agile affected your productivity? Survey says: How has Agile affected your productivity? 13

How has Agile affected your quality of deployed systems? Survey says: How has Agile affected your quality of deployed systems? 14

How has Agile affected the stakeholders satisfaction? Survey says: How has Agile affected the stakeholders satisfaction? 15

Scrum (Project Management) 16

Scrum overview Scrum is an iterative, incremental process for developing any product or managing any work. It produces a potentially shippable set of functionality at the end of every iteration. It's attributes are: An agile process to manage and control development work. A team-based approach to iteratively, incrementally develop systems and products when requirements are rapidly changing a way to detect and cause the removal of anything that gets in the way of developing and delivering products. Scrum is scalable from single projects to entire organizations. Scrum has controlled and organized development and implementation for multiple interrelated products and projects with over a thousand developers and implementers. 17

Scrum (project management) 18

What is Extreme Programming (engineering) 19

What is XP Extreme Programming (or XP) is a set of values, principles and practices for rapidly developing high-quality software that provides the highest value for the customer in the fastest way possible It s an engineering method in that it prescribes HOW to create the code unlike SCRUM that talks about how to manage an agile project 20

Some Infrastructure definitions 21

Stories User requirements come to the development team in what we call Stories These are short descriptions of what the customers would like to see done not specified in any technical language but represented as a thought or as an idea 22

What makes a good story (from Bill Wake: http://www.xp123.com/xplor/xp0308/index.shtml) I N V E S Independent. If they are independent we can schedule and build them in any order. This allows us to select stories with the highest value without worrying about all the expensive, low value dependent stories. Negotiable - Remember that agile methods are typically variable in scope. That is the time line is fixed (iteration length) and the quality and scope are varied. A story is a placeholder for a discussion. We need to be able to split, combine, tweak, clarify, etc stories at any time. Value. Stories need to have real business value to the stakeholders. Typically this is the customer although there are other stakeholders (including the development organization). They should be expressed in ways that the primary stakeholder can understand the value provided by the story. Estimate. If a story can't be estimated then the customer can't derive value or assign a priority to it. We don't need a precise estimate or a guarantee that the estimate will never change. Small. Having small stories is a result of estimable and negotiable. The larger the story the harder it is to estimate, the less flexibility in negotiation. T Testable. Stories need to be testable, otherwise how do you know the story is complete? 23

How fast can you go? - Your Velocity A project velocity is used to determine if the iteration is over booked or not. Total up the time estimates in ideal programming days of the tasks, this must not exceed the project velocity from the previous iteration. If the iteration has too much then the customer must choose user stories to be put off until a later iteration 24

XP Practices XP is extreme in the sense that it takes 12 well-known software development "best practices" to an extreme Planning Game Small Releases Simple Design Continuous Testing Refactoring 40-hour work week Pair Programming Collective code ownership Continuous Integration On-Site customer Coding standards 25

Key Ideas Practices are synergistic and support each other The more holes you poke in the bucket the less Agile you become Two things remain true : Distance is expensive Drives the need for a high degree of communication Agile Schedules never slip Stories fall out, only to be done later 26

What is missing from traditional waterfall methods? Upfront requirements gathering and sign-off (no need to commit early Upfront design documents (easy to retarget) Early costs amortized over life of project Intimidation: schedule, cost, or value 27

What s different? Requirements Analysis Architecture Design Code Waterfall Test Deploy Time VS. Start Arch User Design Development Customer DBA Deploy Arch User Design Development Customer DBA Deploy Arch User Design Development Customer DBA Deploy Finish Iterative 28

What s different? today we use Plan-driven methods Waterfall assumes requirements are understood up front and are relatively stable Assumes software can be manufactured Emphasizes Big-Design Up Front (BDUF) Step-by-step execution Decouple architecture and design from coding and testing Different teams for different aspects 29

A day in the life of an XP team XP teams work in a series of fixed iteration cycles. Iterations typically last 1, 2 or 3 weeks each depending on the team. (A given team will almost always use same the iteration size for every iteration.) At the beginning of each iteration, the team gets together with the customer for a planning meeting. In that meeting, they go over the features the customer wants done in that iteration, breaking each feature down into individual engineering tasks. Individual developers then sign up for specific tasks, and estimate those tasks. No developer is allowed to sign up for more work in the coming iteration than he completed in the previous iteration. 30

A day in the life of an XP team (cont) During the rest of the iteration, the team will implement the features they signed up for, pair programming on all production code. All code is written test-first -- that is, the developers don't write any code until they have a failing test case. The developers write unit tests to test individual classes and subsystems. The customer provides functional or acceptance tests to validate the features that the programmers are developing. At the end of the iteration (usually on a Friday), the programmers deliver a working system to the customer. The system may not be complete, but all functionality that is implemented works completely, without bugs. The customer accepts delivery, and the team goes home early. The next Monday everyone meets again to plan the next iteration, and the cycle repeats itself. 31

XP flow Retrospective Release Plan Velocity Bugs Stories Iteration Planning Iteration Plan Unfinished Work Customer Interaction New Velocity Development New Function Bug Fixes Refactoring Latest Version 32

Using these techniques, the experience has shown that a better quality of code is produced why? 33

Continuous Testing Teams using agile methods work in short iterations to grow a system. These methods require the whole team to focus on quality throughout each of these iterations, ensuring that the system is built on a sound foundation. The system must be kept in a high-quality, working condition at all times. With software builds and integration taking place on an hourly basis in some cases, there simply is no time to perform extensive manual tests. To accomplish this, the team must commit to automating as much of the testing process as possible. (Collective code ownership, Coding standards, Integration) 34

What is pair programming 3? Two programmers working side-by-side, collaborating on the same design, algorithm, code or test. One programmer, the driver, has control of the keyboard & mouse and actively implements the program. The other programmer, the observer, continuously observes the work of the driver to identify tactical (syntactic, spelling, etc.) defects and also thinks strategically about the direction of the work. 3 Laurie Williams (Collective code ownership, Small Releases, Simple Design, Small Release) 35

On-site customer On-Site Customer describes the need to have on-site access to people, typically users or their representatives, who have the authority and ability to provide information pertaining to the system being built and to make pertinent and timely decisions regarding the requirements, and prioritization (Continuous Integration, Small Releases, Pair Programming) 36

In Summary XP the practice of all of these ideas continuously: "If code reviews are good, we'll review code all the time (pair programming) If testing is good, everybody will test all the time (unit testing), even the customers If design is good, we'll make it part of everybody's daily business (refactoring) If simplicity is good, we'll always leave the system with the simplest design that supports its current functionality (the simplest thing that could possibly work) If architecture is important, everybody will work defining and refining the architecture all the time If integration testing is important, then we'll integrate and test several times a day (continuous integration) If short iterations are good, we'll make the iterations really, really short... (the Planning Game)." 37

Thank you! If you have any questions, please feel free to contact me at: ganis@us.ibm.com (914) 784-5759 Or find these slides online at: http://webpage.pace.edu/mganis 38