an introduction to extreme programming michael l. collard, ph.d. department of computer science kent...
TRANSCRIPT
![Page 1: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/1.jpg)
An Introduction to eXtreme Programming
Michael L. Collard, Ph.D.<SDML>
Department of Computer Science
Kent State University
![Page 2: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/2.jpg)
Kent State University 2
Introduction
• Extreme Programming (XP) is a (very) lightweight incremental software development process.
• It involves a high-degree of discipline from the development team
• Popularized by K. Beck (late 90’s)• Comprised of 12 core practices• Most novel aspect of XP (as a process) is the use
of pair programming
![Page 3: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/3.jpg)
Kent State University 3
![Page 4: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/4.jpg)
Kent State University 4
Motivational Principles
• Rapid feedback – from customer• Assume simplicity – keep designs simple• Incremental change – small changes keep
things manageable• Embracing change – keep your options
open• Quality work – strive for high quality
products
![Page 5: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/5.jpg)
Kent State University 5
XP Core Practices
• Planning• Small Releases• System Metaphor• Simple Design• Continuous Testing• Refactoring• Pair Programming
• Collective Code Ownership
• Continuous Integration
• 40-Hour Work Week• On-site Customer• Coding Standards
![Page 6: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/6.jpg)
Kent State University 6
The Planning Game
• Business (customers) and development (programmers) cooperate to produce the maximum business value as rapidly as possible.
• The planning game happens at various scales, but the basic rules are pretty much the same.
![Page 7: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/7.jpg)
Kent State University 7
Planning Rules• Business comes up with a list of desired features
for the system. Each feature is written out as a User Story, which gives the feature a name, and describes, broadly, what is required.
• Development estimates how much effort each story will take, and how much effort the team can produce in a given time interval (an iteration).
• Business then decides which stories to implement in what order, as well as when and how often to produce a production releases of the system.
![Page 8: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/8.jpg)
Kent State University 8
![Page 9: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/9.jpg)
Kent State University 9
Small Releases
• Start with the smallest useful feature set
• Release early and often, adding a few features each time
• Each iteration ends in a release
![Page 10: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/10.jpg)
Kent State University 10
System Metaphor
• Each project has an organizing metaphor, which provides an easy to remember naming convention.
• The names should be derived from the vocabulary of the problem and solution domains
![Page 11: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/11.jpg)
Kent State University 11
Simple Design
• Always use the simplest possible design that gets the job done.
• The requirements will change tomorrow, so only do what's needed to meet today's requirements.
• Uses the fewest number of classes and methods
![Page 12: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/12.jpg)
Kent State University 12
Continuous Testing
• Before programmers add a feature, they write a test for it. When the suite runs, the job is done.
• Tests in XP come in two basic flavors. – Unit Tests– Acceptance Tests
![Page 13: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/13.jpg)
Kent State University 13
Unit Testing
• Unit Tests are automated tests written by the developers to test functionality as they write it.
• Each unit test typically tests only a single class, or a small cluster of classes.
• Unit tests are typically written using a unit testing framework (e.g., JUnit, ParaSoft).
![Page 14: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/14.jpg)
Kent State University 14
Acceptance Testing • Acceptance Tests (Functional Tests) are specified by the
customer to test that the overall system is functioning as specified. They typically test the entire system, or some large part.
• When all the acceptance tests pass for a given user story, that story is considered complete.
• At the very least, an acceptance test could consist of a script of user interface actions and expected results that a human can run.
• Ideally acceptance tests should be automated, either using a unit testing framework, or a separate acceptance testing framework.
![Page 15: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/15.jpg)
Kent State University 15
Refactoring
• Purpose is to improve the design of the code for greater comprehension, preparation for added features, ease of maintenance, etc. without changing behavior
• Refactorings include extracting methods, moving methods in an inheritance hierarchy, etc.
• Unit tests allows this to occur without danger• Refactoring- Improving the Design of Existing Code, by
M. Fowler, 1999 Addison-Wesley
![Page 16: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/16.jpg)
Kent State University 16
Pair Programming
• All production code is written by two programmers sitting at one machine.
• Essentially, all code is reviewed as it is written.
• Helm – keyboard and mouse doing implementation
• Tactician – Thinking about the implications and possible problems
![Page 17: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/17.jpg)
Kent State University 17
Collective Code Ownership
• No single person "owns" a module
• Any developer is expect to be able to work on any part of the code base at any time
• Improvement of existing code can happen at anytime by any pair
![Page 18: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/18.jpg)
Kent State University 18
Continuous Integration
• All changes are integrated into the code base at least daily
• The tests have to run 100% both before and after integration.
![Page 19: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/19.jpg)
Kent State University 19
40-Hour Work Week
• Programmers go home on time. In crunch mode, up to one week of overtime is allowed.
• Multiple consecutive weeks of overtime are treated as a sign that something is very wrong with the process.
![Page 20: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/20.jpg)
Kent State University 20
On-Site Customer
• Development team has continuous access to a real live customer, that is, someone who will actually be using the system.
• For commercial software with lots of customers, a customer proxy (usually the product manager) is used instead.
![Page 21: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/21.jpg)
Kent State University 21
Coding Standards
• Everyone codes to the same standards.
• Ideally, you shouldn't be able to tell by looking at it who on the team has touched a specific piece of code.
![Page 22: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/22.jpg)
Kent State University 22
Scalability (Team Size)
• XP works well with teams up to 12-15 developers.
• It tends to degrade with teams sizes past 20
• Work has been done in splitting large projects/teams into smaller groups and applying XP within each group.
![Page 23: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/23.jpg)
Kent State University 23
Environment
• Programmers must be located physically close, often in the same room and desk.
• Iterations typically last 1-3 weeks. Teams will typically use the same duration for all iterations.
• Tests are written before the code is written.
• End of iteration delivers a working system
![Page 24: An Introduction to eXtreme Programming Michael L. Collard, Ph.D. Department of Computer Science Kent State University](https://reader036.vdocuments.site/reader036/viewer/2022062417/551b92ad550346d6338b5fbd/html5/thumbnails/24.jpg)
Kent State University 24
References and Resources
• Extreme Programming Explained, Kent Beck, 2000, Addison Wesley
• There are a number of XP books by AWL (e.g., XP Installed, XP Explored, and XP Exaggerated)
• www.jera.com/techinfo/xpfaq.html• www.extremeprogramming.org/ • www.xprogramming.com/