|
|
|
|
|
Extreme ProgrammingExtreme Programming (XP) is a method in or approach to software engineering, formulated by Kent Beck, Ward Cunningham, and Ron Jeffries. Kent Beck wrote the first book on the topic, Extreme Programming Explained, published in 1999. It is the most popular of several agile software development methodologies. Characteristics of XP Fundamental characteristics of the extreme programming method are: These characteristics are only derivatives of principles that are known to be good, and are taken into extreme: - Interaction between developers and customers is good. Therefore, an XP team is supposed to have a customer on site, who specifies and prioritises work for the team, and who can answer questions as soon as they arise.
- If learning is good, take it to extremes: Reduce the length of development and feedback cycles. Test early.
- Simple code is more likely to work. Therefore, extreme programmers only write code to meet actual needs at the present time in a project, and go to some lengths to reduce complexity and duplication in their code.
- If simple code is good, re-write code when it becomes complex.
- Code reviews are good. Therefore XP programmers work in pairs, sharing one screen and keyboard (which also improves communication) so that all code is reviewed as it is written.
- Testing code is good. Therefore, in XP, tests are written before the code is written. The code is considered complete when it passes the tests (but then it needs refactoring to remove complexity). The system is periodically, or immediately tested using all pre-existing automated tests to assure that it works. See test-driven development.
In general, Extreme Programming is believed to be useful for small teams under 12 persons. Some think it can be useful for larger teams while some consider the Rational Unified Process more appropriate in that case. However, XP has been demonstrated successfully on a team of over a hundred developers. It's not that XP doesn't scale, just that few people have tried to scale it, and XPers refuse to speculate on this facet of the process. The Four Values Extreme Programming claims to be based on four values that provide both commercial and human needs. As in society that is based on a shared set of values that helps in the daily life, these can also be seen as long term social goals. In Extreme Programming the values are also long term, its a fallback for all your activities. The four variables are: - Communication
- Simplicity
- Feedback
- Courage
Communication According to the views propounded, communication is important, but more important is what is communicated to whom and when. Guidelines for the communication are set in Extreme Programming not so much by rules but more incorporated in activities and practices. It focuses mainly on the communication between programmers in a development team and the between the development team and the customer. Simplicity Again according to the views propounded, simplicity is about always choosing the simplest solution. The difference between this approach and more conventional system development methods is the focus is on designing and coding for the needs of today instead of those of tomorrow, next week or next month. The disadvantage is that maybe you have to give more effort tomorrow to change the system but the advantage is that you will not bet on possible requirements of the future and so dont take any risk on that. Because when youre coding and designing for uncertain requirements of the future you taking a risk in spending resources on something that maybe not needed. Related to the previous value, "communication", simplicity in your design and coding will improve the (quality of) communication. By designing and coding your system simple it is easily understood by the every programmer in the team. Feedback Within eXtreme Programming, feedback is related to different dimensions of the system development: - Feedback from the system: by writing unit tests the programmers have direct feedback from of the state of the system after implementing changes.
- Feedback from the customer: The functional tests are written by the customer and the testers. They will get concrete feedback about the current state of their system. This review is planned once in every two or three weeks so the customer can easily steer the development.
- Feedback from the team: When customers come up with new requirements in the planning game the team directly gives an estimation of the time that it will take to implement.
Feedback is closely related communication and simplicity. Flaws in the system are easily communicated by writing a unit test that proves a certain piece of code will break. The direct feedback from the system tells you to recode this part. A customer that is able to test the system every three weeks according to the functional requirements (User Stories). Courage The Extreme Programming doctrine of "Courage in system development" can be best explained by a couple of practices. Simplicity stated that you always designing and coding for today and not for tomorrow. This sometimes may result in that youre stuck in your design and that for anything else to implement you will need a lot of effort. Courage says to do a refactoring of the system. This means reviewing what you already have and make it so that future changes can be implemented more easily. Another example is throwing code away. Every programmer is familiar when dealing with a complex piece of programming you get stuck in your own design and coding and youre working on it all today. When you come back the next day with a clear and fresh view youve solved the problem in half an hour. Controversial aspects Extreme Programming also has its share of controversial aspects: Most of the design activity takes place on the fly and incrementally, starting with "the simplest thing that could possibly work" and adding complexity only when it's required by failing tests. Unit-testing is a design discipline. Communication in Extreme Programming A fundamental task of building software systems is communicating system requirements to the developers of the system. In formal software development methodologies, this task is accomplished through documentation. Extreme Programming techniques can be viewed as methods for rapidly building and disseminating institutional knowledge among members of a development team. The goal is to give all developers a shared view of the system which matches the view held by the users of the system. To this end, Extreme Programming favors simple designs, metaphor, collaboration of users and programmers, frequent verbal communication and feedback. See also: References - Kent Beck: Extreme programming explained: Embrace change, Addison-Wesley, ISBN 0201616416
- Kent Beck and Martin Fowler: Planning Extreme Programming, Addison-Wesley, ISBN 0201710919
- Martin Fowler: Refactoring: Improving the Design of Existing Code, Addison-Wesley, ISBN 0201485672
- Ken Auer and Roy Miller: Extreme Programming Applied: Playing To Win, Addison-Wesley, ISBN 0201616408
- Ron Jeffries, Ann Anderson and Chet Hendrickson: Extreme Programming Installed, Addison-Wesley, ISBN 0201708426
- Kent Beck: Extreme programming explained: Embrace change, Second Edition, Addison-Wesley, ISBN 0321278658
- Alistair Cockburn: Agile Software Development, Addison-Wesley, ISBN 0201699699
External links
|
 |
| |
|
|