24
Extreme Programming Kent Beck, Ward Cunningham

Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

  • View
    228

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Extreme Programming

Kent Beck, Ward Cunningham

Page 2: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Software Development History

• During the 1970s, it was discovered that most large software development projects failed.

• During the 1980s, many of the reasons for those failures began to be recognized.

• In the 1990s, experiments and measurements were used to validate individual methods to prevent failure.

• The current decade is characterized by complete processes to improve success.

Page 3: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Schedule Failure

• One of the primary causes of project failure was the extended period of time it took to develop a system. Costs escalated and requirements changed.

• Agile methods were developed to develop systems more quickly with limited time spent on analysis and design.

Page 4: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

What are the Agile Methodologies?

– FDD– dX (agile RUP)– Open Source– Agile Modeling– Pragmatic Programming

eXtreme Programming has received the most attention, but here is a list:

– XP– SCRUM– DSDM– The Crystal Family– ASD

Since Larman is based on RUP, dX might be interesting.

Page 5: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

What is Extreme about XP?

• A rheostat is a common electrical control. Most volume controls on audio devices are rheostats. It you want silence, turn the knob all the way to one side. For maximum volume, turn the knob all the way to the other side.

• XP treats good practices in programming as if they had rheostats, and turns all of them all the way up. See examples on next page?

Page 6: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Some eXtreme Practices

• Are code inspections good? Then code in pairs—all code is inspected all the time!

• Is testing good? Then write the unit test before the code, automate testing, and run all tests all the time.

• Is customer contact good? Then locate a customer representative in the team, so that you have access to them all the time.

Page 7: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Extreme Programming Explained

Page 8: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Four principles of XP

• Communication• Simplicity• Feedback• Courage

Page 9: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Key Ideas in XP

• Code in Pairs• Stay in Contact with the Customer• Create Tests before Coding then Test

Heavily• Short Iterations• Keep it Simple• Don’t Anticipate: Code for Current Needs• Collective Ownership

Page 10: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Update (Fall 2008)

• At this time, it seems that very few organizations are using eXtreme Programming as a methodology. However, the ideas within it, including test first and pair programming, short iterations, customer contact, no anticipation, and collective ownership have gone mainstream, and are widely practiced by many organizations.

Page 11: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

• Most "software development" books focus on one of two things: "Big Design Up Front" (BDUF) or "Nitty Gritty Details of Programming" (Hacking). This book does neither.

• It challenges the idea that disciplined software development implies lots of drawings and a CASE tool.

Review by Ken Auer

Page 12: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

• It challenges the idea that "design" is a waste of time and you just need a good code hacker which you slide pizza to under the crack in the door.

• It speaks for the quietly successful minority of software developers who believe software that is worth anything is built by teams who communicate, and constantly pay attention to all the details necessary to make sure software development is successful in the eyes of both the customer and the software developer.

Page 13: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

• It speaks to those who know "there's got to be a better way" than the way typical software is developed, whether BDUF or hacking. And, oh, how it does it.

• Kent Beck masterfully makes the developer understand the concerns of the sponsor. He also masterfully makes the sponsor aware of what is necessary to get quality software that meets their changing needs.

Page 14: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

• If you think software is already done right, and refuse to allow this notion to be challenged, ignore this book... you'll hate it.

• Everyone else having anything to do with software, read it NOW. It will change the way you look at everything you do.

Page 15: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Description by Kent Beck

• Software development projects can be fun, productive, and even daring. Yet they can consistently deliver value to a business and remain under control.

• Extreme Programming (XP) was conceived and developed to address the specific needs of software development conducted by small teams in the face of vague and changing requirements.

Page 16: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Description by Kent Beck

• This new lightweight methodology challenges many conventional tenets, including the long-held assumption that the cost of changing a piece of software necessarily rises dramatically over the course of time. XP recognizes that projects have to work to achieve this reduction in cost and exploit the savings once they have been earned.

Page 17: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Fundamentals of XP

• Distinguishing between the decisions to be made by business interests and those to be made by project stakeholders.

• Writing unit tests before programming and keeping all of the tests running at all times.

• Integrating and testing the whole system-several times a day.

Page 18: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Fundamentals of XP

• Producing all software in pairs, two programmers at one screen.

• Starting projects with a simple design that constantly evolves to add needed flexibility and remove unneeded complexity.

• Putting a minimal system into production quickly and growing it in whatever directions prove most valuable.

Page 19: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Why is XP so controversial?

• Don't force team members to specialize and become analysts, architects, programmers, testers, and integrators-every XP programmer participates in all of these critical activities every day.

• Don't conduct complete up-front analysis and design-an XP project starts with a quick analysis of the entire system, and XP programmers continue to make analysis and design decisions throughout development.

Page 20: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Why is XP so controversial?

• Develop infrastructure and frameworks as you develop your application, not up-front-delivering business value is the heartbeat that drives XP projects.

• Don't write and maintain implementation documentation-communication in XP projects occurs face-to-face, or through efficient tests and carefully written code.

Page 21: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Quotes from Book Jacket

• You may love XP or you may hate it, but Extreme Programming Explained will force you to take a fresh look at how you develop software.

• Extreme Programming (XP) was conceived and developed to address the specific needs of software development conducted by small teams in the face of vague and changing requirements. This new lightweight methodology challenges many conventional tenets, including the long-held assumption that the cost of changing a piece of software necessarily rises dramatically over the course of time. XP recognizes that projects have to work to achieve this reduction in cost and exploit the savings once they have been earned.

Page 22: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Extreme Programming Installed

Page 23: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Doing Extreme Programming

• While Kent Beck’s Extreme Programming Explained is a good resource for explaining Extreme Programming, it is not very helpful in actually trying to use the practices. Extreme Programming Installed, by Ron Jeffries, Ann Anderson, and Chet Hendrikson is a very good tool for teams that want to start using Extreme Programming.

Page 24: Extreme Programming Kent Beck, Ward Cunningham. Software Development History During the 1970s, it was discovered that most large software development

Web Resources

• This Web Site has excellent materials on Extreme Programming:http://www.extremeprogramming.org/

• Students are required to understand XP. • I have used material from this site on

exams, so I suggest that every class member review it.