extreme programming (xp): strengths and weaknesses amund tveit department of computer and...
TRANSCRIPT
![Page 1: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/1.jpg)
Extreme Programming (XP):Strengths and Weaknesses
Amund TveitDepartment of Computer and Information Science
Norwegian University of Science and Technology
http://www.idi.ntnu.no/~amundt/
+474 162-6572
![Page 2: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/2.jpg)
What is Extreme Programming?
• Software– Most complex human artifact?
• XP is a Software Engineering Methodology– Lightweight Agile Method
• XP provides a set of:– values– principles– practices Rapid dev. of high quality software
![Page 3: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/3.jpg)
The Agile Manifesto
• Individuals and interaction– Vs. Processes and tools
• Working software– Vs. Large amounts of documentation
• Customer interaction– Vs. Contract negotiation
• React to changes (flexibility)– Vs. Follow pre-specified plan
![Page 4: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/4.jpg)
Extreme Programming History
• Early 1990s – Kent Beck
• DaimlerChrysler 1996– C3 Project
• 2000 now– Taking off
![Page 5: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/5.jpg)
The 4 values of XP
1. Communication• Face-to-face
2. Simplicity• Optimize
3. Feedback• Users
4. Courage• This is not working
![Page 6: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/6.jpg)
The 12 Practices of XP
1. Planning Game
2. Small Releases
3. System Metaphor
4. Simple Design
5. Continous Testing
6. Refactoring
7. Pair Programming
8. Coll. Code Ownership
9. Continous Integration
10. 40-Hour Work Week
11. On-Site Customer
12. Coding Standards
![Page 7: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/7.jpg)
Practice 1. Planning Game
• User Stories
• Story Estimation
• Story Selection
![Page 8: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/8.jpg)
Practice 2. Small Releases
• Useful features
• Incremental feature adding
![Page 9: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/9.jpg)
Practice 3. System Metaphor
• Common Vision
• Naming convention
![Page 10: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/10.jpg)
Practice 4. Simple Design
• Meet todays requirements
• Simplest design doing the job
![Page 11: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/11.jpg)
Practice 5. Continous Testing
• Unit Tests
• Acceptance Tests
![Page 12: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/12.jpg)
Practice 6. Refactoring
• Duplicate Code
• Improve Code
• Restructure
• Maintainability
• Readability
• Retest
![Page 13: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/13.jpg)
Practice 7. Pair Programming
• Code
• Test
• Shift/Rotate
![Page 14: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/14.jpg)
Practice 8. Collective Code Ownership
• Multiowned code
• Location indep.
![Page 15: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/15.jpg)
Practice 9. Continous Integration
• Daily build
• Pre-test
• Post-test
![Page 16: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/16.jpg)
Practice 10. 40-Hour Work Week
• Home on time
• Crunch overtime
• Bad symptom
![Page 17: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/17.jpg)
Practice 11. On-site Customer
• Real User
• Customer Proxy
• Product manager
![Page 18: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/18.jpg)
Practice 12. Coding Standards
• ”Unfingerprinted”
• Readable
![Page 19: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/19.jpg)
Two Important XP Acronyms
• YAGNI = You arent’t gonna need it don’t add nice-to-have features
• DTSTTCPW = Do the simplest thing that could possibly work
don’t add unjustified complexity
![Page 20: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/20.jpg)
Typical XP Project
1. Programmers in same room
2. Fixed Iteration Cycles
3. Write Test first
4. Working system at end of cycles
5. Virtually Defect-free
6. Scale dozen (12) programmers
![Page 22: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/22.jpg)
XPs Claimed Cost of Change
![Page 23: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/23.jpg)
Little documentation using XP
Strengths• Saving total time
• Less non-code maintenance
Weaknesses• Customer
dependency on initial developers
• Potential distortion of competition
• Hard to outsource?
![Page 24: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/24.jpg)
The Planning Game
Strengths• Reduce likelihood of
unexpected complications
• Team shares understanding
• Sharing aids finding weak spots
Weaknesses• Quick design sessions
are to quick (10 min)
• Can lead to bad design decisions
![Page 25: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/25.jpg)
Unit Testing
Strengths• Explains code with
test cases• Unit tests are up-to-
date documentation• Hypothesis for new
programmer unit tests
Weaknesses• Incentive for not
writing documentation
• Unit tests for databases, distributed, realtime and GUI hard to test with unit tests
![Page 26: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/26.jpg)
Refactoring
Strengths• Give programmers
the right to improve their code
• Refactoring makes the programmer understand the system better
• Readability
Weaknesses• Incentive to refactor
instead of commenting (Fowler)
• Software improvement is subjective, can confuse others
![Page 27: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/27.jpg)
Simple design
Strengths• Fights over-designs
• Maximal simplicity eases program understanding
Weaknesses• Hard to create good
corresponding metaphors
• Simplistic design choices can constrain future changes
![Page 28: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/28.jpg)
Collective Code Ownership
Strengths
• Less dependency on individuals (risk)
Weaknesses
• Assumes others take responsibility for code (single ownership nurtures responsibility?)
![Page 29: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/29.jpg)
Pair Programming
Strengths• Larger ”solution
space” with pair• Emergence of ideas
(1+1 > 2)• Fewer defects• Readability• Co-Learning• Code co-ownership
Weaknesses• Avoidance of explicit
code reviews• Increased initial costs
(15%)
![Page 30: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/30.jpg)
Individuals in Pairs
Strengths• Less goofing off • More careful coding
Weaknesses• Constant interaction
is tiring• Lot of noise
produced• Ergonomic problems• Groupthink can
occur (1+1 < 2)• Less rest
![Page 31: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/31.jpg)
The Customer
Strengths
• Emphasis on customer involvement
• Programmer est. before committing to plans
• Emphasis on responsibility for quality
Weaknesses
• Senior customer hard to get ~ 24x7
• Customer may dislike the ”variable scope” of XP
House building analogy
• We didn’t have time to build an entrance door!
![Page 32: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/32.jpg)
Other XP strengths and weaknesses
Strengths
• Continous reviews to improve team performance
• Having engineers manage functional content
• System running at all times
Weaknesses
• Probably not suitable for large-scale projects
• Probably not suitable for mission critical systems (e.g. Military, Nuclear)
need formal validation
![Page 33: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/33.jpg)
Other Agile Methods
• Scrum
• Dynamic Systems Development Method
• Crystal Family
• Feature Driven Development
• Adaptive Software Development
![Page 34: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/34.jpg)
How can XP weaknesses be handled?
• Designing up-front– vs. Architectural spike
• Flexible pair programming
• Handling dependency between stories
• Forward refactoring for reuse– Versus improvement
• Integrate Organizatorical Aspects
![Page 35: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/35.jpg)
Personal XP-related Experiences
• Unit Testing - jfipa
• Pair Programming
![Page 36: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/36.jpg)
Conclusion - strengths and weaknesses
Strengths• Trusting the
developer
• Flexibility
• Focus on code (the product) instead of model
Weaknesses• Scalability
• Customer reluctancy
• Project leader scepticism
![Page 37: Extreme Programming (XP): Strengths and Weaknesses Amund Tveit Department of Computer and Information Science Norwegian University of Science and Technology](https://reader035.vdocuments.net/reader035/viewer/2022062713/56649cc95503460f94990e34/html5/thumbnails/37.jpg)
Presentation Acknowledgements
Primarily: Hans Gallis (Simula Research, Oslo)
• Dr. Stephen Willmott, (Catalunya Univ., Spain)• Dr. Reidar Conradi, IDI/NTNU• Dr. Torgeir Dingsøyr, Sintef, Trondheim• Dr. Alf Inge Wang, IDI/NTNU• Rolv Inge Seehus, IDI/NTNU• Carl-Fredrik Sørensen, IDI/NTNU• Thomas Brox Røst, IDI/NTNU