Sofia Bulgaria Summer School IST-2001-34488 eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.

Slides:



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

Agile
March 25, 2002R McFadyen a lightweight approach to software development. about 5 years old has been used at: Bayerische Landesbank, Credit Swiss.
Agile Requirements Methods CSSE 371 Software Requirements and Specification Mark Ardis, Rose-Hulman Institute October 26, 2004.
Extreme Programming: Practices and Strategies Extreme Programming Practices and Strategies Mohammad Alshayeb Information and Computer.
Extreme Programming Team Members Gowri Devi Yalamanchi Sandhya Ravi.
EXtreme Programming By: Aaron Flocke, Leena Paulose, Geetha Krishna (Team 6)
EXtreme Programming Quick Introduction Daniel Arraes Pereira Eduardo Lourenço Apolinário Ricardo de Oliveira Cavalcanti.
Extreme Programming Mark Steverson. What Is Extreme Programming? ● Extreme Programming (XP) is a lightweight, agile methodology developed by Kent Beck.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Extreme Programming--a “New” Process Model Extreme Programming-- a “New” Process Model.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Software Engineering Modern Approaches
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Extreme Programming(XP)
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
One XP Experience: Introducing Agile (XP) Software Development into a Culture that is Willing but not Ready Joe Bergin * Fred Grossman * David Leip **
Extreme Programming Daniel Baranowski 3/29/06. What is Extreme Programming? An agile development methodology Created by Kent Beck in the mid 1990’s A.
Unified Process versus Extreme Programming. Outline Compare and contrast UP and XP  Processes / Disciplines  Management  Artefacts Risk management.
1 e X treme P rogramming D. Dranidis September 2000 CITY College.
Extreme Programming Sylvain Giroux October 3 rd, 2000.
Presenter: 陳秋玉 1.  Extreme programming Extreme programming  On-site customer On-site customer  Benefit Benefit  Characteristics of a good customer.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
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.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
XP (not Microsoft) e X treme P rogramming Can KOMAR
XP – Extreme Programming
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Agile
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXPERT Best practices.
Extreme Programming David Li CTO, DigitalSesame. Problem in Developing Software The Basic Problem - Risk –Schedule slips –Project canceled –System goes.
1 김 수 동 Dept. of Computer Science Soongsil University Tel Fax
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
XP Overview Short Life cycle Risky / Dynamic Requirements Increase developer productivity.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
Extreme Programming (XP) XP is an agile methodology: –aims to be responsive to change Theme running through XP is the importance of communication –amongst.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
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.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
AGILE XP AND SCRUM © University of LiverpoolCOMP 319slide 1.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
CSC 480 Software Engineering Extreme Programming.
Agile. Processes Waterfall Traditional With prototyping Sprial Agile Dynamic Systems Development Method (DSDM) Scrum Crystal eXtreme Programming (XP)
SoberIT Software Business and Engineering Institute HELSINKI UNIVERSITY OF TECHNOLOGY 1 eXtreme Programming – one of the Agile Software Development Methodologies.
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
Extreme Software Engineering A Hands-On Approach From Extreme Software Engineering: A Hands-On Approach Daniel H. Steinberg Daniel W. Palmer.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Extreme Programming.
Planning User stories are written.
Extreme Programming.
What do you need to know about XP?
Agile and XP Development
Extreme Programming Iterative programming Agile programming
Agile and XP Development
Chapter 3 – Agile Software Development
Extreme Programming Extreme programming is "a lightweight methodology for small-to-medium-sized teams developing software in the face of vague or rapidly.
Coming up: What is Agile?
Extreme Programming.
Agile software development
Extreme Programming (and Pair Programming)
Presentation transcript:

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices eXtreme programming Practices Eliza Stefanova Sofia University

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Contents Roles in XP Responsibilities Practices

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Roles in XP Customer –Defines requirements and priorities –Representative can drive the process Coach –Watches the process, take care that everything runs –Typical from development team Developer –Estimate time and implement tests and code –Defines acceptance criteria together with customer Tracker –Measure the progress – watches the time: 2-3 times in week ask the team which on task works, how much time needs

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Strict line between Business & Technical Responsibility Customer - business decisions –Scope –Priorities –Release planning Developers – technical decisions –Effort –Risks –Iteration planning

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices On-site customer One of the few requirements of XP - to have the customer available on-site, not only to help the development team, but to be a part of it as well All phases of an XP project rely on communication with the customer, preferably face to face, thus the best is to assign a customer to the development team

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices On-site customer Write user stories Determine priorities Answers questions during the iteration Specifies functional acceptance tests Is typically neither the investor nor the end user

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Extreme Development Collect user stories and make architectural design Release planning: Prioritization and Estimation First Iteration Planning First Iteration Performing Second Iteration planning Second Iteration Performing … Release

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Planning Game Planning Process Players: –Customer –Developers team Pieces: –User Stories (CRC cards) Name of the ClassCollaborators Responsibilities

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices How to play the game Release Planning – one to two days Customer specify its requirements writing User stories Developers estimate each User story according to difficulty (effort and risk) Developers divide/merge stories (3-9 days) Customer order User stories according to business value Developers determine velocity –velocity (finished tasks/stories per iteration) Customer select the stories for the release

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices How to play the game Iteration Planning – half to whole day Customer select stories (could come with new stories) Developers ask questions regarding scope Developers discuss the risks Developers split into tasks (4-12 hours) Developers take responsibility for tasks Developers estimate difficulty

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices What we need to play the game System Metaphor Everyone in team understanding what the system should be, how its components fit together To do that the team should have shared terminology and glossary

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Small releases (one to three months) A release is a software version of the final product, completely usable and tested that implements a business value desired by the customer Has to be as small as possible, but implementing a business value Frequently developed and given to the Customer

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Short iterations (one to three weeks) The iterations objective –To put into production some new stories, tested and finished correctly An iteration kick-off meeting for the iterations planning In the beginning of each day of iteration stand-up meeting –Whole team status report –Each person 2-3 minutes –Name the problems, not solve them

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Pair Programming Pairs of developers write all production code Two programmers - actively working on the same task on the same computer at the same time

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Pair Programming Roles Two active and interchangeable roles: a driver and a navigator The driver writes code The navigator: –asks questions –raises objections –suggests alternatives –makes code review constantly If navigator sees that driver gets stuck it is better to change the roles

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices How to form pairs If one person resists pairing or simply refuses to do it, don’t put up with it. The coach should talk to him to explain the reason behind the rules. If he still refuses to comply it is better not to force him take part in the XP team. Everyone in the pair should respect his partner. Every person in the pair should be kind and to try to help his partner be the best he can be.

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices When to form pairs Pair is defined per task during the iteration planning. The advantage is that during the task development at least two persons know about that task progress. Pairs should change often – switch up as often as practically possible (e.g. when beginning a new task) – like this knowledge is spread throughout the team (the whole team is familiar with every part of the system).

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices When not to pair When you are exploring something new – give both developers of the pair room to move in their own direction When you have multiple ideas about what might be causing a bug

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices 40-hours week Long period of intensive work kill performance - tired people make more mistakes that slow them down Overtime is not the answer of the project schedule delay problem – often is symptom of other problem (e.g. inability to estimate well, private problems, etc) that has to be identified and resolved

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Test-Driven Development Two kinds of Tests –Unit tests Wrote be Developers –Acceptance tests Specified by Customer

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Tests executable Specification Requirements are clearly and unmistakable specified with a test –Can verified them as often as we like Requirements are analyzed systematically and timely –Early detection of analysis problems

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Effective Testing Motivate each change of program behavior with an automated test Based on automated, repeatable test As frequent and as simple as compiling A test suite should run in <10 minutes The goal is catch important problems (possible holes) The benefit must be higher than the cost

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Test/Code Micro Cycle Brainstorm for possible test cases Implementation of the tests Code writing and compiling (to see if the test fail) Code changing as much as necessary in order to pass the test Bring the code in the simplest form

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Test requirements Quality standards like for code: –Self-documenting –No duplicated code –As simple as possible Test code is refactoring as often as regular code

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Simple design Simple design save time, effort, complexity Functionality to only be developed if it is required –Develop only the things that are really required now –No assumptions Tests are satisfied in the simplest way Unused flexibility to be eliminated

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Criteria for Simple Design Pass all its tests Present its intention Has no duplicated logic Has as few classes and methods as possible

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices How to develop the simplest code that could be work Satisfy the current test cases – design the simplest code that would pass all necessary tests As soon as tests run, do the refactoring to make code simpler

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Collective Ownership Allows every developer to change anything at anytime in the code, enabling the possibility to change the code immediately when identifying an improvement potential Each developer take responsibility for the whole system, understanding what will be the effects to the overall system when making changes

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Coding Standards intend to introduce a common coding style makes it easy for everybody to read and understand any code created by any colleague in the team without them it is harder to apply other XP practices (refactoring, collective ownership, simple design, as well as switching pairs)

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Refactoring A modification of the internal structure of a program without changing its observable behavior –To improve the design –To simplify the code –Improve understandability Evidence for a needed refactoring – code and test smells

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Smells Code smells Duplicated code Long methods Available comments Switch-chains, nested if-then-else Code does not express its idea Data classes without real behavior Test smells Duplicated code Indirect tests Hidden failed assertion Unnecessary test environment Optimistic assumptions about test environment

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Refactoring Actions Refactoring code smells Rename Class/Method/Variable Extract Class/Inline Class Move Method Extract Method/Inline Method Replace Conditional with Polymorphism Introduce Explaining Variable Refactoring test smells Self-explaining assertions Adjust test case classes around test environment Introduce semaphore for critical test resources Explicit allocation and release of resources Never change the functional and test code at the same time

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Refactoring process and principles Happens continuously –in little steps –shared responsibilities Do it more often Goal – always bring your code into simplest form

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Integration Incorporate changes into the shared code base Synchronization of the different developments effort Resolution of conflicts

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices Continuous Integration Changes of code are integrate as often as necessary and possible Conflicts are easier to resolve because the more often integration Each integration result is a running system

Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming - principles & practices How does continuous integration works? Integration machine & integration token Integration after accomplishing a task All unit tests have to pass 100% after integration As much automation as possible