CSC/ECE 517 Fall 2012/ch2a 2w8 vp

From Expertiza_Wiki
Jump to navigation Jump to search

Extreme programming (XP)

This chapter focuses on explaining below points. Describe what extreme programming is. Concepts of XP. Four values in XP. Aspects in key practices such as pair programming, collective code ownership, stories, automated testing, small releases and continuous integration. Advantages and Disadvantages with XP. Comparison with waterfall model

What is extreme programming

Extreme Programming (XP) is a software development methodology created by Kent Beck during his work on the Chrysler Comprehensive Compensation System (C3) payroll project. Extreme Programming is intended to improve software quality and responsiveness to changing customer requirements. It is a one of the several types of agile software development processes. Extreme Programming is successful because it stresses customer satisfaction. Instead of delivering everything you could possibly want on some date far in the future this process delivers the software you need as you need it. Extreme Programming empowers developers to confidently respond to changing customer requirements, even late in the life cycle. Back to top

Concepts of XP

Goals

Back to top

Four values in XP

Back to top

Aspects in key practices

Back to top

Advantages of XP

  • Built-In Quality
  • Overall Simplicity
  • Programmer Power
  • Customer Power
  • Synergy Between Practices
  • Coding Standards – Reduces the amount of time developers spend reformatting other peoples’ code. Reduces the need for internal commenting. Call for clear, unambiguous code
  • On-Site Customer - Can give quick and knowledgeable answers to real development questions. Makes sure that what is developed is what is needed. Functionality is prioritized correctly
  • 40-Hour Week – Most developers lose effectiveness past 40-Hours. Value is placed on the developer’s well-being. Management is forced to find real solutions
  • Continuous Integration - Reduces to lengthy process. Enables the Small Releases practice
  • Collective Ownership - Helps mitigate the loss of a team member leaving. Promotes developers to take responsibility for the system as whole rather than parts of the system
  • Pair Programming – Two heads are better than one. Focus Two people are more likely to answer the following questions: Is this whole approach going to work? What are some test cases that may not work yet? Is there a way to simplify this?
  • Refactoring – Prompts developers to proactively improve the product as a whole. Increases developer knowledge of the system
  • Testing – Unit testing promote testing completeness. Test-first gives developers a goal. Automation gives a suite of regression test
  • Simple Design – Time is not wasted adding superfluous functionality. Easier to understand what is going on. Refactoring and collective ownership is made possible. Helps keeps programmers on track
  • Metaphor – Encourages a common set of terms for the system. Reduction of buzz words and jargon. A quick and easy way to explain the system
  • Small Releases – Frequent feedback. Tracking. Reduce chance of overall project slippage
  • The Planning Game – Reduction in time wasted on useless features. Greater customer appreciation of the cost of a feature. Less guesswork in planning

Disadvantages of XP

  • Informal, little, or no documentation
  • Scalability
  • Contract Issues
  • Misconception on the cost of change
  • Tailoring
  • Coding Standards – Degrading the quality of inline documentation
  • On-Site Customer – Difficult to get an On-Site Customer. The On-Site customer that is given may not be fully knowledgeable about what the company may not have authority to make many decisions. Loss of work to the customer’s company.
  • 40-Hour Week - The underlying principle is flawed. 40-Hours is a magic number. Some may like to work more than 40-Hours
  • Continuous Integration – The one day limit is not always practical. Reduces the importance of a well-thought-out architecture
  • Collective Ownership - Loss of accountability. Limitation to how much of a large system that an individual can practically “own”
  • Pair Programming – Many tasks really don’t require two programmers. A hard sell to the customers. Not for everyone
  • Refactoring – Not everyone is capable of refactoring. Refactoring may not always be appropriate. Would upfront design eliminate refactoring?
  • Testing – Automated unit testing isn’t for everything. Reliance on unit testing isn’t a good idea. A test result is only as good as the test itself
  • Simple Design – What is “simple?”. Simple isn’t always best
  • Metaphor – Often the metaphor is the system. Another opportunity for miscommunication. The system is often not well understood as a metaphor
  • Small Releases – Not easy for all projects. Not needed for all projects. Versioning issues
  • The Planning Game – Customer availability. Is planning this often necessary?

Comparison with waterfall model

Back to top

Research Conclusion

Research was carried out in Carnegie Mellon University where data collected was from five years of 50 teams, developing the same project each year and the affects of transitioning from Waterfall to Extreme Programming was analyzed. The characteristics between these two methods were evaluated and compared. According to the paper, waterfall teams spent more time creating high ceremony documents where as Extreme Programming teams spent more time writing code and documenting their design in their code.  Surprisingly, the amount of code and features completed were roughly the same for both methods suggesting that on a three month project with three to four developers it didn't matter the method used. Please refer the references for the research paper.

Back to top

References

<references> </references>

External Links

  1. [ http://www.cutter.com/content-and-analysis/resource-centers/agile-project-management/sample-our-research/ead0002/ead0002.pdf Cutter Agile Project Management]
  2. [ http://en.wikipedia.org/wiki/Extreme_programming Extreme Programming Wikipedia ]
  3. [ http://www.cs.usfca.edu/~parrt/course/601/lectures/xp.html USF Lectures on Extreme Programming]
  4. [ http://www.computerworld.com/s/article/66192/Extreme_Programming?taxonomyId=063 Computerworld Articles Extreme Programming]
  5. [ http://www.extremeprogramming.org ExtremeProgramming.org]
  6. [ http://www.jera.com/techinfo/xpfaq.html Jera Extreme Programming]
  7. [ http://www.softwarereality.com/lifecycle/xp/four_values.jsp Software Reality Four Values]
  8. [ http://repository.cmu.edu/cgi/viewcontent.cgi?article=1056&context=silicon_valley&sei-redir=1&referer=http%3A%2F%2Fwww.google.com%2Furl%3Fsa%3Dt%26rct%3Dj%26q%3Dcompare%2520it%2520with%2520waterfall%2520model%2520and%2520extreme%2520programming%26source%3Dweb%26cd%3D2%26ved%3D0CCQQFjAB%26url%3Dhttp%253A%252F%252Frepository.cmu.edu%252Fcgi%252Fviewcontent.cgi%253Farticle%253D1056%2526context%253Dsilicon_valley%26ei%3DG_aCUKeIFo-k8gTJzIGQAw%26usg%3DAFQjCNEmwlV8Xg6uapysO7P0RTcnlEPz3g#search=%22compare%20waterfall%20model%20extreme%20programming%22 Comparing Extreme Programming and Waterfall Project Results]