Extreme Programming Iterative programming Agile programming

Slides:



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

Pair Programming: Why Have Two Do the Work of One from Laurie Williams North Carolina State University.
CS 3500 L12pp - 1 The Benefits of Pair Programming Robert Kessler School of Computing University of Utah Special thanks to Laurie Williams North Carolina.
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 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.
Transitioning to XP or The Fanciful Opinions of Don Wells.
13. Team iterative processes Most of the software projects require a larger effort than a solo programmer can handle Programmers have to organize themselves.
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.
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 Daniel Baranowski 3/29/06. What is Extreme Programming? An agile development methodology Created by Kent Beck in the mid 1990’s A.
Agile Software Development: Practices through Values C Sc 335 Rick Mercer.
EXtreme Programming: An Introduction Presentation by: Jon Banta.
1 e X treme P rogramming D. Dranidis September 2000 CITY College.
Extreme Programming Sylvain Giroux October 3 rd, 2000.
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.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
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 2 Software processes. Topics covered Software process models Process activities Coping with change.
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
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)
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.
9th October, 2001Confidential to Ian Mitchell1 XP – An Overview Ian Mitchell, FNZCS.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Project Management Software development models & methodologies
Chapter 3 Agile software development 1 Chapter 3 – Agile Software Development.
Embedded Systems Software Engineering
CS223: Software Engineering
Software Development.
Extreme Programming.
Planning User stories are written.
Alexander Kanavin Lappeenranta University of Technology
Extreme Programming.
Waterfall and Agile Quality Techniques
What do you need to know about XP?
Agile and XP Development
eXtreme Programming (XP) and eXtreme Modeling (XM)
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?
Refactoring.
Introduction to XP.
Sylvain Giroux October 3rd, 2000
Agile Development – a new way of software development?
Extreme Programming.
Agile software development
Extreme Programming (and Pair Programming)
Presentation transcript:

Extreme Programming Iterative programming Agile programming Software developed in iterations Software evolution becomes THE development technique Agile programming Iterative programming without excessive overhead (modeling, etc.), short releases

Extreme Programming Extreme programming An example of agile development is "a lightweight methodology for small-to-medium-sized teams developing software in the face of vague or rapidly changing requirements"

EXtreme Programming Everything is carried to extreme if code reviews are good, review code all the time (pair programming) if testing is good, test all the time (test-first) if refactoring is good, refactor all the time if simplicity is good, design with the simplest design that supports current functionality if architecture is important, everybody works on defining and refining the architecture all the time if integration testing is important, integrate and test several times a day if short iterations are good, make the iterations extremely short (hours, days, weeks)

List of 12 specific practices The planning game Small releases Metaphor Simple design Test first Refactoring Pair programming Collective ownership Continuous integration 40-hour week On-site customer Coding standards

The Rules and Practices Planning: Feedback down to just minutes. Designing: Simple, distributed across the team, based on oral tradition. Coding: High quality from start to finish, team level development. Testing: Two levels of testing, one for the customer and one for the developer.

The planning game Business decisions Technical decisions Scope: which “stories” should be developed Priority of stories Technical decisions Time estimates for features/stories Elaborate consequences of business decisions Team organization and process Scheduling

Iteration Planning Customers choose stories to do. Management determines the project velocity based on Yesterday’s Weather. Developers break stories into tasks. Developers estimate tasks. Management calculates iteration content. (Customers choose stories not to do.)

Simple design The “right” design No code duplication Fewest possible classes and methods Fulfills all current business requirements Design for today not the future

Small releases Put system into production ASAP Fast feedback Deliver valuable features first Short cycle time Planning 1-2 weeks is easier than planning 1-2 months Releases should be as small as possible containing the most valuable business requirements "coherent" (you can't release just for the sake of releasing)

Metaphor Metaphor How does the whole system work? for example, the ATM, the contract metaphor as shared verbal vision of architecture architecture is boxes and connection metaphor is holistic, and can be communicated How does the whole system work? What is the overall idea of the system?

Pair programming In XP, programmers work in pairs, sitting together to develop code. This helps develop common ownership of code and spreads knowledge across the team. It serves as an informal review process as each line of code is looked at by more than 1 person. It encourages refactoring as the whole team can benefit from this. Measurements suggest that development productivity with pair programming is similar to that of two people working independently.

This Is Pair Programming

This is NOT Pair Programming

Does Pair Programming Really Work? Empirical study by Laurie Williams at the university of Utah Practice: Summer 1999 20 students (sophomore/junior) All worked collaboratively Generated more anecdotal/qualitative evidence Solo vs. pair: Fall 1999 41 students (junior/senior) 28 worked collaboratively 13 worked individually Quantitative: time, quality, enjoyment, confidence

Findings #1 - Quality

Findings #2 - Time

Findings #3 and #4 – Enjoyment and Confidence

How Does This Work? Pair-Pressure Pair-Think Pair-Relaying Keep each other on task and focused Don’t want to let partner down “Embarrassed” to not follow the prescribed process Pair-Think Distributed cognition: “searching through larger spaces of alternatives” Have shared goals and plans Bring different prior experiences to the task Different access to task relevant information Must negotiate a common shared of action Pair-Relaying Each, in turn, contributes to the best of their knowledge and ability Then, sit back and think while their partner fights on

How Does This Work (Part Two)? Pair-Reviews Continuous design and code reviews Ultimate in defect removal efficiency Removes programmers distaste for reviews 80% of all (solo) programmers don’t do them regularly or at all Pair-Learning Continuous reviews  learn from partners techniques, knowledge of language, domain, etc. “Between the two of us, we knew it or could figure it out” Apprenticeship Defect prevention always more efficient than defect removal

Issues: Workplace Layout Bad Better Best

Issues: Partner Picking Principles Expert paired with an Expert Expert paired with a Novice Novices paired together Professional Driver Problem Culture

Issues: Pair Rotation Ease staff training and transition Knowledge management/Reduced product risk Enhanced team building

Pairing Difficulties Inability to schedule enough time together. Unreliability of a partner. Friction caused by different experience levels and/or rates of learning. Unwillingness to raise these issues in a timely fashion.

Testing Automatic test drivers Write tests before production code Unit tests  developer Feature/acceptance tests  customer Strong emphasis on regression testing Unit tests need to execute all the time Tests for completed features need to execute all the time Unit tests pass 100%

Testing All code must have unit tests. All code must pass all unit tests before it can be released. When a bug is found tests are created. Acceptance tests are run often and the score is published.

Refactoring Small changes that do not change the function of the program. Increase design consistency. Simplify as you go. The design you need may not be the one you thought. Bad smells -> refactoring

Refactoring Examples: Remove duplicate code Leverage existing code Remove unused code Refactoring mercilessly requires good unit tests and functional tests that can easily be executed Goal: Keep design simple Change bad design when you find it Remove dead code Refactoring: If you are adding functionality – you are not refactoring! Although you may need to refactor before adding funtionality. Metaphor example: Pub/Sub system has Publishers Subscribers Topics Messages Does not need to be overly abstracted.

Collective Ownership Nobody owns code Nobody owns design Everybody takes responsibility for the whole of the system not everyone knows every part equally well, but everybody knows something about every part everybody knows who to ask anybody can change or improve anything at any time The two are crucially interrelated you can't know what's broken or can be improved unless you have the big picture in your mind

Continuous Integration Every milestone is an integration milestone A system of "build the pieces then integrate them at the last minute" is classic divide and conquer is doomed to failure Short development cycle with integration at the end of every cycle

Continuous Integration Integration happens after a few hours of development Code is released into current baseline on integration machine All tests are run In case of errors: Reverse to old version Fix problems Goto (1)

On-site customer Many software projects fail because they do not deliver software that meets business needs Real customer has to be part of the team Defines business needs Answers questions and resolves issues Prioritizes features

Coding standards Team has to adopt a coding standard Makes it easier to understand other people’s code Avoids code changes because of syntactic preferences

Summary XP is a process based on a set of practices The practices are based around the bigger ideas of flexibility and involvement, and are all interrelated "Any one practice doesn't stand on its own. They require the other practices to keep them in balance." For example, quick simple design can't work unless you are able to make changes quickly have a shared vision of the design have the big picture in mind Suitable for small teams, volatile requirements