240 likes | 257 Views
Learn about the origin of Agile methods, principles of Extreme Programming, and the benefits of Test-First Development. Explore various Agile methods and key practices such as continuous integration, pair programming, and test automation.
E N D
Agile Methods andExtreme Programming CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 23, 2007
Outline • Origin of Agile Methods • Extreme Programming • Test First Development
Spectrum of Methods Source: "Get ready for agile methods, with care" by Barry Boehm,IEEE Computer, January 2002.
Agile Manifesto • We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: • Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan • That is, while there is value in the items on the right, we value the items on the left more.
Some Agile Methods • ASD - Adaptive Software Development • Crystal • FDD - Feature Driven Development • DSDM - Dynamic Systems Development Method • Lean Software Development • Scrum • XP - eXtreme Programming
Motivation • Knobs on a control board • Each knob a practice that works well • Turn all knobs up to 10
Learning to Drive "Driving is not about getting the car going in the right direction. Driving is about constantly paying attention, making a little correction this way, a little correction that way." -- Kent Beck, Extreme Programming Explained
Four Values • Simplicity • create the simplest thing that could work • Communication • face-to-face, not document-to-face • Feedback • lots of tests • Aggressiveness
Four Basic Activities • Coding • cannot do without it • Testing • if it cannot be tested it doesn't exist • Listening • to those with domain knowledge • Designing • to keep the system from decaying
Twelve Practices • The Planning Game • Small releases • Metaphor • Simple design • Testing • Refactoring • Pair programming • Collective ownership • Continuous integration • 40-hour week • On-site customer • Coding standards
Waterfall to XP Evolution Source: "Embracing change with extreme programming" by Kent Beck,IEEE Computer, October 1999.
5. Testing • Any feature without an automated test does not exist. • Programmers need confidence in correct operation • Customers need confidence in correct operation
Tools for Testing • Test harnesses for various programming languages • Simplify job of creating and running the tests
7. Pair Programming • All code written with 2 people at one machine • Driver: • thinks about best way to implement • Passenger: • thinks about viability of whole approach • thinks of new tests • thinks of simpler ways
9. Continuous Integration • Integrate and test every few hours, at least once per day • All tests must pass • Easy to tell who broke the code
Code the Unit Test First • Makes it easier to write the code • Translates requirements to specific tasks that must be accomplished by code • Creates tests at moments when they can best be defined • Provides immediate feedback to coding
Similar to Deming's PDSA Cycle (below) • Plan: Write a test case expressing what you hope to accomplish. • Do: Write the code. • Study: Run the test. • Act: If it passes, check the code in and go on. If it fails, rerun the cycle. Maybe the code is bad or maybe the test is bad.
Side Effects • Designing in small steps • only need to do a little bit at a time • A sense of unhurriedness • always know what you are doing and when you are done • Monological thinking • focus on one thing at a time