Extreme programming XP 6

Similar documents
Introduction to Extreme Programming. Extreme Programming is... Benefits. References: William Wake, Capital One Steve Metsker, Capital One Kent Beck

Agile Manifesto & XP. Topics. Rapid software development. Agile methods. Chapter ) What is Agile trying to do?

GETTING STARTED. Building User Story Maps

How Can a Tester Cope With the Fast Paced Iterative/Incremental Process?

Story Refinement How to write and refine your stories so that your team can reach DONE by the end of your sprint!

XP: Planning, coding and testing. Planning. Release planning. Release Planning. User stories. Release planning Step 1.

Analysis of the Test Driven Development by Example

XP Evolution Rachel Davies

2014 Intelliware Development Inc.

Development Processes Agile Adaptive Planning. Stefan Sobek

Software Development Process Models

XP: Planning, coding and testing. Practice Planning game. Release Planning. User stories. Annika Silvervarg

Requirements Gathering: User Stories Not Just an Agile Tool

E xtr B e y CS R m oy 6704, e T a P n a Spring r n o d J g ia n 2002 r g a S m hu m ing

Introduction to Extreme Programming

5 Object Oriented Analysis

Testing in the Agile World

Activities Common to Software Projects. Software Life Cycle. Activities Common to Software Projects. Activities Common to Software Projects

Story Writing Basics

CREATING EFFECTIVE USER STORIES

Test Driven Development. René Barto SES Agile Development - Test Driven Development

Adopting Agile Practices

Software Engineering 2 A practical course in software engineering. Ekkart Kindler

HOW TO WRITE USER STORIES (AND WHAT YOU SHOULD NOT DO) Stuart Ashman, QA Director at Mio Global Bob Cook, Senior Product Development Manager, Sophos

Lecture 7: Software Processes. Refresher: Software Always Evolves

Optimize tomorrow today.

Using Storyotypes to Split Bloated XP Stories

CONFERENCE PROCEEDINGS QUALITY CONFERENCE. Conference Paper Excerpt from the 28TH ANNUAL SOFTWARE. October 18th 19th, 2010

Software Development Methodologies

GETTING STARTED. Introduction to Backlog Grooming

A CONFUSED TESTER IN AGILE WORLD

defined. defined. defined. defined. defined. defined. defined. defined. defined.

Architects: Anchors or Accelerators to Organizational Agility?

Atlassian JIRA Introduction to JIRA Issue and Project Tracking Software Tutorial 1

Software Engineering I (02161)

Kanban, Flow and Cadence

Dilbert Scott Adams. CSc 233 Spring 2012

6.001 Notes: Section 8.1

Scrums effects on software maintainability and usability

A Proposal to Develop a Testing Framework for Agile Software Process

Ready for Scrum? Steve Hutchison DISA T&E

CS193D Handout 15 Winter 2005/2006 February 8, 2006 Software Engineering Methodologies and XP. See also: Chapter 6. The Stagewise Model

Refactoring Without Ropes

Kanban One-Day Workshop

Requirements. Requirements. Types of Requirement. What Is a Requirement?

Introduction to User Stories. CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014

Test-driven development

Introduction to. and. Scott W. Ambler Source Documents

Documentation Nick Parlante, 1996.Free for non-commerical use.

Founda'ons of So,ware Engineering. Process: Agile Prac.ces Claire Le Goues

Software Design and Analysis CSCI 2040

כללי Extreme Programming


Requirements. CxOne Standard

Defining Project Requirements

SAFe Atlassian Style (Updated version with SAFe 4.5) Whitepapers & Handouts

Contributing to a Community

Unit title: Programming for Mobile Devices (SCQF level 6)

Contributing to a Community

I am Stephen LeTourneau from Sandia National Laboratories Sandia s National Security Missions include: Nuclear Weapons Defense Systems & Assessments

Writing Agile User Stories

How Cisco IT Improved Development Processes with a New Operating Model

Seven Deadly Sins of Agile Testing

Best Practices for Collecting User Requirements

Collaboration at Scale: Prioritizing a Backlog. 13-Dec-2017

Practical Objects: Test Driven Software Development using JUnit

Value & Role of Business Analyst in Agile. Presented by: Jagruti Shah Associate Business Consultant Mastek Ltd

Test Automation Strategies in Continuous Delivery. Nandan Shinde Test Automation Architect (Tech CoE) Cognizant Technology Solutions

DESIGN AS RISK MINIMIZATION

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

User Stories Applied, Mike Cohn

COURSE 11 DESIGN PATTERNS

Standards for Test Automation

Up and Running Software The Development Process

Adapted from: The Human Factor: Designing Computer Systems for People, Rubinstein & Hersh (1984) Designers make myths. Users make conceptual models.

A Tale of Continuous Testing

Test Driven Development

User Stories. Wednesday, January 23, 13

System Development Life Cycle Methods/Approaches/Models

How technical excellence helps in LeSS adoption. Anton Bevzuk Dodo Pizza Chief Agile Officer

GETTING STARTED. User Story Mapping

Tuesday, November 15. Testing

Agile Accessibility. Presenters: Ensuring accessibility throughout the Agile development process

Extreme Programming practices for your team. Paweł Lipiński

Beans and DAOs and Gateways, Oh My! by Sean Corfield

Software Engineering I (02161)

Lecture 8 Requirements Engineering

17. GRASP: Designing Objects with Responsibilities

The Kanban Applied Guide

CURZON PR BUYER S GUIDE WEBSITE DEVELOPMENT

Life between Iterations

Title: Episode 11 - Walking through the Rapid Business Warehouse at TOMS Shoes (Duration: 18:10)

02291: System Integration

K Kantor, Jeff Use Case Driven Testing, 249

Chapter 9. Software Testing

Introduction to Python Code Quality

Rapid Software Testing Guide to Making Good Bug Reports

Agile is from Mars Usability is from Venus

Break the network innovation gridlock

Practicing Agile As a BA

Transcription:

Extreme programming XP 6

Planning Game 3

Planning Game Independent: Stories should be as independent as possible. When thinking of independence it is often easier to think of order independent. In other words, stories can be worked on in any order. Why is this important? It allows for true prioritization of each and every story. Negotiable: A story is not a contract. A story IS an invitation to a conversation. The story captures the essence of what is desired. The actual result needs to be the result of collaborative negotiation between the customer, developer and tester (at a minimum). Valuable: If a story does not have discernable value it should not be done. Period. Hopefully user stories are being prioritized in the backlog according to business value, so this should be obvious. Estimable: A story has to be able to be estimated or sized so it can be properly prioritized. A value with high value but extremely lengthy development time may not be the highest priority item because of the length of time to develop it. What happens if a story can t be estimated? You can split the story and perhaps gain more clarity. Small: Obviously stories are small chunks of work, but how small should they be? The answer depends on the team and the methodology being used. I teach agile and suggest two week iterations which allow for user stories to average 3-4 days of work TOTAL! This includes all work to get the story to a done state. Testable: Every story needs to be testable in order to be done. Thinking this way encourages more collaboration up front, builds quality in by moving QA up in the process, and allows for easy transformation to an acceptance test-driven development (ATDD) process. 4

Planning Game Business Technical Define the scope of the release Define the order of delivery (which stories are done first) Set dates and times of release Estimate how long each user story will take Communicate technical impacts of implementing requirements Break down user stories into tasks and allocate work

Small Releases The only way to ensure that you are developing the software the customer expects! Every release could be used as a checkpoint to measure the estimation accuracy. 6

Small Releases Fail Fast Fail Often 7

Small Releases Product Roadmap = visual overview of a product s releases Product roadmap = sequence of releases Release = sequence of iterations Iteration = set of user stories / features 8

Small Releases Story Map (developed by Jeff Patton) Helps select and group features for a release Backbone essential functionality Walking skeleton smallest system that could possible work Optional features 9

Small Releases The Backbone Workflow sequence Walking Skeleton More Optional Less Optional 10

Small Releases The Backbone Workflow sequence Walking Skeleton More Optional Less Optional 11

Metaphor A good metaphor is a powerful aid in unifying the technical and business teams The team evolves its own form of tribal language, used to describe user stories and development 12

Metaphor... I still haven't got the hang of this metaphor thing. I saw it work, and work well, on the C3 project, but it doesn't mean I have any idea how to do it, let alone how to explain how to do it Martin Fowler 13

Metaphor 'Metaphor' seems to be one of the least understood precepts of XP although its supposed to be (one of) the most important. 14

Metaphor Metaphor is something you start using when your mother asks what you are working on and you try to explain her the details. How you find it is very project-specific. Use your common sense or find the guy on your team who is good at explaining technical things to customers in a way that is easy to understand. 15

Simple Design XP definition for simplicity: Runs all the tests Contains no duplicate code States the programmer s intent for all the code clearly Contains the fewest possible classes and methods 16

Simple Design No big design upfront! 1. Only do what you need to do now! 2. Don't add anything because you think you might need it! 17

Refactoring Refactoring is the technique of improving code without changing functionality Why? Because your code should be the simplest thing that could possibly work 18

Refactoring 1) Lack of tests 2) Name not from domain 3) Name not expressing intent 4) Unnecessary if 5) Unnecessary else 6) Duplication of constant 7) Method does more than one thing 8) Primitive obsession 9) Feature envy 10) Method too long (> 6 lines) 11) Too many parameters (> 3) 12) Test not unitary 13) Test setup too complex 14) Test unclear Act 15) Test - more than one assert 16) Test no assert 17) Test too many paths Source: Brutal Refactoring Game, 19Adi Bolboaca

Testing - Add a test, get it to fail, and write code to pass the test - Remove duplication

Testing Think about what you want to do. Think about how to test it. Write a small test. Think about the desired API. Write just enough code to fail the test. Run and watch the test fail. Now you know that your test is going to be executed. Write just enough code to pass the test (and pass all your previous tests). Run and watch all of the tests pass. If it doesn't pass, you did something wrong, fix it now since it's got to be something you just wrote. Refactor the code Run the tests again if you can't do these, you probably shouldn't start writing any code Repeat the steps above until you can't find any more tests that drive writing new code. 21

Testing 22

Collective Ownership Any person can change the application code at anytime The catch: If you own all the code, you are responsible for all the code as well 23

Continuous Integration The longer the time period between integrations, the more conflicts you'll see, and the effort to integrate will increase. The process: developers work on tasks until complete, integrate them, run tests, fix problems 24

40-Hour Work Week You cannot maintain quality with overtimeheavy teams! Each country or culture has differing acceptance of reasonable working hours 25

40-Hour Work Week 26

On-Site Customer The customer must be on the project full-time for the duration and be located on-site with the team The customer could include users, business experts, and any other customer-side resource 27

Coding Standards Mandatory Those standards to be adhered to by all team members. Guidelines Those considered best or good practice and often describe the general approach toward development. Recommendations These rules are considered good practice and should be used at all times unless there are exceptional circumstances where valid justification can be given. 28

Coding Standards There are two types of people: If (Condition) { Statements /* */ } If (Condition){ Statements /* */ }

Coding Standards Types of coding standards: Formatting Code structure Naming conventions Error handling Comments 30

31

Why XP is not popular? It is software engineering centric It requires high investment Rockstar developers Trainings Infrastructure (some automation solutions is Culture It is irrational (to business people) Unit tests, Test First Development, Story Points, Pair Programming It is too difficult Test First Development, Refactoring, Simple & Emergent Design 32