Extreme programming (XP) Advanced Software Engineering 603 492 Dr Nuha El-Khalili.

Slides:



Advertisements
Similar presentations
Agile Software Development کاری از : مهدی هوشان استاد راهنما : استاد آدابی.
Advertisements

Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Alternate Software Development Methodologies
ITEC 370 Lecture 25 Lifecycles. Review Questions? F give prototype demonstration –Testing plan for your software Life cycles –Scrum (Roles, Meetings,
Agile Process Models. Prescriptive models don’t work It is unrealistic to not have changes. Why? The Agile Manifesto: Individuals and interactions over.
Agile
XP – eXtreme Programming A gentle introduction. Cleviton Vinícius Jobson Ronan Thiago Rodrigues.
1 March Extreme programming. Presentations Tuesday Campus Tour Sami Says Hawks Thursday Read2Me UNCSET Oral Lab NetVis If helpful, invite your client.
Agile Methods and Extreme Programming CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 23, 2007.
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.
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 Overview of Agile L e a d i n g C h a n g e T h r o u g h C o l l a b o r a t i o n.
©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.
Extreme programming overview Agenda  Extreme programming goals  Extreme programming values  Extreme programming practices  The Extreme programming.
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.
1 e X treme P rogramming D. Dranidis September 2000 CITY College.
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.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
Extreme Programming.
XP – Extreme Programming
Extreme Programming David Li CTO, DigitalSesame. Problem in Developing Software The Basic Problem - Risk –Schedule slips –Project canceled –System goes.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 other methodologies 1 Method/Process = step-by-step description of the steps involved.
Extreme Programming and Systems Engineering Similarities and Synergy (based on talk given to INCOSE New England Chapter) Joseph (Yossi) Weihs Sept 10 th,
XP Overview Short Life cycle Risky / Dynamic Requirements Increase developer productivity.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
December Using Software Development Methodology (SDM) in the Third Teaching Unit (laboratory) CS Teachers Conference Dr. Orit Hazzan & Yael Dubinsky.
Copyright © 2015 Curt Hill Software Development Paradigms What do you need to know?
CS3100 Software Project Management Agile Approaches.
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.
Agile Software Development Jeff Sutherland, one of the developers started it In February 2001, 17 Tools: continuous integration, automated or xUnit test,
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.
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.
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 מתודולוגיה לפיתוח פרויקטי תוכנה.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Chapter 3 Agile software development 1 Chapter 3 – Agile Software Development.
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Embedded Systems Software Engineering
Extreme Programming.
Extreme Programming.
روش‌های سريع الانتقال (چابک) توسعه نرم افزار
What do you need to know about XP?
Agile and XP Development
Agile and XP Development
Chapter 3: Agile Software Processes
Coming up: What is Agile?
Extreme Programming.
Extreme Programming (and Pair Programming)
Presentation transcript:

Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili

Agile Methods Scrum eXtreme Programming (XP) Kanban Others: DSDM, FDD, ASD

Extreme programming (XP) A software development methodology which is intended to improve software quality and responsiveness to changing customer requirements A software development discipline that organizes people to produce higher quality software more productively. (Extreme Programming Explained, 1999) Initiated by Kent Beck, Ward Cunningham, and Ron Jeffries during their work on the Chrysler Comprehensive Compensation (C3) System in 1996

XP Activities Coding Listening – Communication between the customer and programmer Designing Testing – Unit tests: if all tests run successfully, then the coding is complete – Acceptance tests verify that the requirements as understood by the programmers satisfy the customer's actual requirements

XP Values Communication: – collaboration of users & programmers, frequent verbal communication, and feedback. Simplicity: (in design and coding) – start with simplest solution, add extra functionality later Feedback: (system, team, customer) Respect: Courage: – design and code for today and not for tomorrow – Refactor code – throw obsolete code away

XP Roles

Coach A person responsible for the process as a whole, guiding the team, and understanding the process and learning from other XP teams. Tracker A person responsible for making good estimates and checking how they match up to the real results. Programmer A person with good communication skills, who maintains simplicity in work &code. Customer A person(s) from the customer organization, who is integral part of the XP team. Tester A person who helps the customer write functional tests, runs them regularly, and posts results for everybody's knowledge. Consultant A person who may be needed to assist the XP team by providing technical knowledge or help with the process. Big Boss A project sponsor, responsible for checking the team's progress regularly and communicating with the team to listen their issues.

XP Practices 1.The planning game 2.On-site customer 3.Small releases 4.System metaphor (Imagine) 5.Pair programming 6.Collective code ownership 7.Coding standard 8.40-hour week 9.Refactoring 10.Simple design 11.Continuous integration 12.Testing Business Practice Teamwork Practice Programming Practice

1- The Planning Game Planning for the upcoming iteration Uses stories provided by the customer Technical persons determine schedules, estimates, costs, etc A result of collaboration between the customer and the developers Advantages – Reduction in time wasted on useless features – Less guesswork in planning

2- On-Site Customer Development is largely about learning the customer’s requirements Communication with the real customer is vital Tasks of the on-site customer: – Communicates customer wishes, clarify feature requests to developers, etc. – Specifies functional tests (user stories)‏ – Participates in planning of iteration and releases

2- On-Site Customer Disadvantages – Difficult to get an On-Site Customer – The On-Site customer that is given may not be fully knowledgeable about what the company – May not have authority to make many decisions

3- Small Releases Small in terms of functionality Less functionality means releases happen more frequently Advantages – Frequent feedback – Tracking – Reduce chance of overall project slippage

4- Metaphor The oral architecture of the system Use common set of terminology between customers, programmers, and managers to tell how the system works & to guess the functionality of a particular class/method Disadvantages – Often the metaphor is the system – Another opportunity for miscommunication – The system is often not well understood as a metaphor

5- Pair programming All code is written in pairs One person types, the other comments and thinks about the big picture, then swap Frequent pair switch – At least once per day, in two different pairs Takes place of code reviews, tactical meetings, training, progress reports

5- Pair programming Pair programming provides many benefits: – All design decisions involve at least two brains. – At least two people are familiar with every part of the system. – There is less chance of both people neglecting tests. – Changing pairs spreads knowledge throughout the team. – Code is always being reviewed by at least one person.

6- Collective code ownership The idea that all developers own all of the code Enables refactoring Disadvantages – Loss of accountability – Limitation to how much of a large system that an individual can practically “own” – Conflict in opinion

7- Coding standard All code should look the same Advantages – Reduces the amount of time developers spend reformatting other peoples’ code

8- 40-hour week The work week should be limited to 40 hours Regular overtime is a symptom of a problem and not a long term solution

9- Refactoring Improves the quality of the system in some way Disadvantages – Not everyone is capable of refactoring

10- Simple Design Do as little as needed, nothing more Then refactor Advantages – Time is not wasted adding extra functionality – Easier to understand what is going on – Helps keeps programmers on track Disadvantages – Simple isn’t always best

11-Continuous integration Automate the build, tests, and deployment Rebuild the whole project and test it frequently, at least after every iteration of unit development Everyone can see what’s happening, so integration problems can be detected and fixed continuously

12- Testing Unit testing Test-first design All automated Disadvantages – Automated unit testing isn’t for everything – A test result is only as good as the test itself

XP Criticisms Lack of structure and necessary documentation Only works with senior-level developers Requires meetings at frequent intervals at enormous expense to customers Incorporates insufficient software design Often used as a means to bleed money from customers through lack of defining a deliverable Requires too much cultural change to adopt Scalability