Customer collaboration.

Slides:



Advertisements
Similar presentations
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Advertisements

Chapter Extension 16 Agile Development.
Processes. Outline Definition of process Type of processes Improvement models Example Next steps… 1.
Agile Development Chapter Extension 16. ce16-2 Study Questions Q1: Why is the SDLC losing credibility? Q2: What are the principles of agile development.
Agile Planning. The problem with documentation Argument: “Heavy” documentation too much for most business-style projects.
Chapter 10 Schedule Your Schedule. Copyright 2004 by Pearson Education, Inc. Identifying And Scheduling Tasks The schedule from the Software Development.
NAUG NAUG Knowledge Evening – th February 2007.
 User assignments (product owner)  ‘circle’  1 st sprint: ◦ Scrum Boards (informative workspace)  Product -, release -, sprint -, defect backlog 
Customer collaboration.
Customer Collaboration. Central Principles The customer is part of the team The customer plays key role in directing the team 1.
Agile
The Role of Software Engineering Brief overview of relationship of SE to managing DSD risks 1.
Your Project Proposal.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
COMP 350: Object Oriented Analysis and Design Lecture 2
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
An Agile View of Process
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Roles Managers Technical Team Leaders Programmers Customers Database Administrators Instructors.
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
By Edward Lim 8.7.  What?  Today we started the Cornerstone Piece and we were given a few tasks to complete. The tasks were to watch the Kurt Fearnly.
Unified Process versus Extreme Programming. Outline Compare and contrast UP and XP  Processes / Disciplines  Management  Artefacts Risk management.
Project Workflow. How do you do it? -Discussion-
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 7: Focusing on Users and Their Tasks.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
5. Planning.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
1 Software Process Models-ii Presented By; Mehwish Shafiq.
Agile Concepts - II “Agile” Estimating & Planning Nupul Kukreja 5 th November, 2014.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Agile
Agile Planning. The problem with documentation Argument: “Heavy” documentation too much for most business-style projects.
INFO 637Lecture #101 Software Engineering Process II Review INFO 637 Glenn Booker.
AP-1 5. Project Management. AP-2 Software Failure Software fails at a significant rate What is failure? Not delivering it on time is an estimation failure.
Implementing XP at PUT Copyright, 2000 © Jerzy R. Nawrocki Quality Management.
Copyright © 2015 Curt Hill Software Development Paradigms What do you need to know?
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
Goals for Presentation Explain the basics of software development methodologies Explain basic XP elements Show the structure of an XP project Give a few.
Iterative Development Royce, “Successful Software Management Style: Steering and Balance”, IEEE Software sep/oct Sp8Jan22iterdev2.
Extreme Programming Based on and
Lecture 4 – XP and Agile 17/9/15. Plan-driven and agile development Plan-driven development A plan-driven approach to software engineering is based around.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Interacting with consumer Software Engineering. So far… What is Software Engineering? Different software process models waterfall, incremental, spiral.
Software Engineering Principles Practical Advice and Steps for Managing Your Project.
Agile. Processes Waterfall Traditional With prototyping Sprial Agile Dynamic Systems Development Method (DSDM) Scrum Crystal eXtreme Programming (XP)
Continuous Improvement. Start Simple and Continually Improve E.g., Gmail Labels 1.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(2)
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Informed Traveler Program and Applications Agile / Scrum Overview Jerry Inberg.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Project Workflow.
Requirements Engineering Lecture 4
Iterative Planning

Project Workflow.
What do you need to know about XP?
Chapter 3 – Agile Software Development
Planning and Estimation.
Project Planning and Estimation
Customer collaboration
Agile Development – a new way of software development?
Extreme Programming.
Agile software development
Planning and Estimation
Iteration Planning.
Planning and Estimation.
Presentation transcript:

Customer collaboration

Central principles The customer is part of the team. The customer plays a key role in directing the team.

XP collaboration with customers 1.Customers & Engineers: Collect user stories 2.Engineers: Identify tasks 3.Engineers: Estimate effort 4.Customers: Prioritize stories 5.Engineers: Plan work 6.Engineers: Communicate progress 7.Customers & Engineers: Evaluate results

User story: What it is Fits easily on a 3x5 note card – Can also be typed into spreadsheet, but harder to review with customers Name + short description

User story: Examples View eco-friendliness The e-commerce website users can click on a product and view its eco-friendliness ratings. Upload eco-friendliness data Trusted 3 rd parties can upload an XML document specifying eco-friendliness ratings for products.

User story: Principles Not written in stone – Revision is acceptable and expected Fuzzy – Further communication is usually needed Minimalist – If you add stuff that the customer doesn’t want, then the system will surely cost too much. Backed up by acceptance tests – Will discuss further in future lecture

User story: How to collect Gathering user stories – Start from a starting point – Let the customer walk through the vision – Customer may have “artifacts” illustrating vision – Chunk the vision into user stories – Ask questions to clarify – Don’t invent stories; let the customer “drive” Remind the customer that he can add more stories later

Identifying tasks Systematically break down each user story into the pieces of work that will be required – Can often be decomposed using the skills that you already have for decomposing architectures e.g.: object-, process-, feature-oriented decomposition – Often stated like, “first we’ll implement this change to the system, then this change, then this change… that’s 3 tasks”

Identifying tasks: Example Often helpful to sketch an architecture… PHP/ApacheMysql E-commerce interfaceDatabase Linux UI to upload watchdog data Shopping users Watchdog XML docs

Identifying tasks: Example (process-oriented decompositions) View eco-friendliness – Set up a database to store product data/ratings – Create web page to show a product’s data – Create web page listing products, so user can click Upload eco-friendliness data – Set up a database to store product data/ratings – Create a web page for uploading XML document – Write code to read data into database

Effort estimates: What they are Figure out how much effort each task entails – All estimates should be done in a nebulous “unit” of your own calibration – Typically based on experiences with similar work – Do a spike (an experimental implementation) to measure difficulty, if needed – Take “bids” from team members for the lowest effort on each task Sum up task efforts to compute story effort Tweak this estimate if it seems appropriate

Effort estimates: The nebulous “unit” A unit is defined in terms of how much work you can get done in the next week’s iteration To start with, typically defined as something like 1/20 th of what the team can accomplish this next week. – This is after taking into account the fact that all programming occurs in pairs. – So an 8-person team has 4 pairs, each of which might be able to get 5 “units” done this week. – Better programmers might be able to do more “units” per week.

Estimating effort: Principles Engineers give honest estimates that customers can trust. Engineers refine estimates; customers refine expectations. It is expected that you will work at a sustainable pace. – No heroes, no all-nighters, no super-human feats – Either you get the code done like a human being, or you don’t

Estimating effort: Principles Estimates are based on each user story individually – i.e.: don’t assume a certain ordering of the waiting stories – Yes, you’ll end up over estimating effort (that’s good) “An honest plan means you have made all the difficult decisions you are responsible for making.” – “He who does the work sets the estimate.” – own your time! – “Don't theorize, try it.” – use spikes, use spikes, use spikes

A word about spikes Purpose: Discover answers to difficult problems (either design or implementation) What it is: A small program that explores and tests possible solutions How to do it: – Identify the key thing that you need to discover – Write a little code to test an idea – Tweak the code until you get the info you need – Throw the code away, keep the knowledge

Effort estimates: Examples 3u - View eco-friendliness 1u - Set up a database to store product data/ratings * 1u - Create web page to show a product’s data 1u - Create web page listing products, so user can click 2.5u - Upload eco-friendliness data 1u- Set up a database to store product data/ratings *.5u- Create a web page for uploading XML document * 1u- Write code to read data into database * = risky… may call for spike!!!

Effort estimates: Examples 3u - View eco-friendliness 1u - Set up a database to store product data/ratings * 1u - Create web page to show a product’s data 1u - Create web page listing products, so user can click 2.5u - Upload eco-friendliness data 1u- Set up a database to store product data/ratings *.5u- Create a web page for uploading XML document * 1u- Write code to read data into database * = risky… may call for spike!!!

Prioritizing stories Now that each story has an associated effort, customer gets to choose which stories will be implemented in the next iteration – E.g.: “Stories A, B and C each will take 10 units; stories D and E each will take 5 units; we can do 15 units this week. Mr. Customer, what stories should we do?” – It’s like writing a shopping list using a certain budget. The customer gets to make business decisions The engineers get to make technical decisions Don’t “steer” the customer – Help the customer to understand consequences of choices – Make your case but let the customer decide – But negotiation is good and appropriate

Planning work Once the customer has chosen stories, teammates get organized. – Get together and decide who will perform each story’s tasks. – Figure out how to work in pairs for these tasks This is a tentative assignment and will probably evolve Mix it up: don’t work in the same pair all the time! – Plan how to avoid stepping on each other’s toes. Finalize your development environment

Planning work: Examples Monday: Jim & Peg 1u - Set up a database to store product data/ratings Load with two sets of test data Tuesday-Wednesday: Jim & Joe 1u - Create web page to show a product’s data 1u - Create web page listing products, so user can click Use one set of test data for unit tests Tuesday-Wednesday: Peg & Phil.5u- Create a web page for uploading XML document 1u- Write code to read data into database Use the other set of test data for unit tests

Communicating progress Track effort using PSP or similar technique – Track velocity… how many units are you doing per day? – Refine your understanding of your capabilities All news (good or bad) should be communicated early – Keep the customer informed of good news & bad. – Keep your team informed, too!!! Release dates don’t slip; functionality slips. – It might be necessary to delay user stories – Customer prefers 3 fully-working user stories rather than 6 half-working stories!

Communicating progress: Examples Monday: Jim & Peg 1u - Set up a database to store product data/ratings Monday at noon: “DONE! Everybody should log in and try out the database” Tuesday-Wednesday: Jim & Joe 1u - Create web page to show a product’s data 1u - Create web page listing products, so user can click Wednesday: “Finished story and completed integration test” Tuesday-Wednesday: Peg & Phil.5u- Create a web page for uploading XML document 1u- Write code to read data into database Wednesday: “Not done yet… probably noon”

Evaluating results: continual testing Unit tests – Each pair is responsible for writing automated tests, then writing code to satisfy the tests Integration tests – Several times during the week, check if the pieces work together properly Acceptance tests – Customer tests the system upon receiving it (essentially automated use cases)

Evaluating results: After the iteration Debriefing (without customer present) – Discuss what went well, what didn’t No ad hominem attacks or raw emotion, just respectful and honest feedback – Assess your productivity – Refine estimates of remaining tasks/user stories Evaluation of release – Customer runs acceptance tests – Discuss what works, what to do next

Evaluating results: examples At the debriefing, discuss… – Setting up database was faster than expected!! – Jim was really good at setting up database! Get Jim to teach this during future pairings!! – Peg & Phil struggled with file upload Maybe pair them differently for a while? Do we need a different file upload component? – What files will we be delivering in this release? Any configuration instructions?

Evaluating results: examples Presentation of the release – Customer tries out the acceptance tests – Well, the user interface isn’t as expected Sketch some changes on paper Staple to the user story – Here are five other ideas for extending the vision Write them up as a user stories – Then launch into the next iteration (estimating)

What’s next for you? You have to do this by next Tuesday: 1.Customers & Engineers: Collect user stories 2.Engineers: Identify tasks 3.Engineers: Estimate effort 4.Customers: Prioritize stories 5.Engineers: Plan work Including: set up your development environment Including: perform spikes if needed