CSC//ECE 517 Fall 2013/ch1 1w40 ao
Xtreme Programming
Extreme Programming XP is a Software Development Methodology which is a type of agile software development[]. It has proved to be very successful at many companies of different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.
The intention behind this is improved productivity and quality of software and higher customer satisfaction.
Pair programming, extensive code reviews and test driven development are some other important features of Extreme programming. It intends to create a flat management structure again like normal agile software development.
The name derives from the fact that normal principles of software engineering practices are taken to a level that would be categorized as extreme when it was put into use.
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.
History
In 1990,there was a revolution in the domain of Software Development.Firstly,was the rise of object-oriented programming over procedural programming and secondly,was the rise of the internet.These factors demanded rapidly-changing requirements and shorter product life-cycles.The old software development strategies had begun to go obsolete. Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project. Chrysler Comprehensive Compensation System was a project started to determine as to what can be the best way to make use of object technologies with Smalltalk as the language and Gemstone as the data access layer.The motive was to use the payroll systems at Chrysler as the object of research.Kent Beck was a prominent practitioner of Smalltalk and hence, was chosen to lead this project.However,when he undertook the project,he noticed several shortcommings in the current development process.He formulated this and made use of this to make a new development methodology with the help of his colleague Ward Cunnigham. The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]
The first time I was asked to lead a team, I asked them to do a little bit of the things I thought were sensible, like testing and reviews. The second time there was a lot more on the line.I thought,"Damn the torpedoes, at least this will make a good article,"and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else."
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.
Various sources for information about this new developing methodology published by the team itself are as follows:
- The original Wiki by Cunnigham WikiWikiWeb
- The XP website itself: "http://www.extremeprogramming.org" circa 1999.
- Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).
Current State
XP gained fame in 1990s and early 2000s.It was being incorporated into fields and environments much different to what it was made for initially. The original practices that were in existence in those days required a lot of high discipline and hence,where considered too rigid.As a result,they were often deprecated or left unfinished at times. A less rigid schedule like XP,allows complex features to be fully developed.XP,unlike other agile development methodologies,is still evolving and incorporating changes.
Concept
Goals
The fundamental goal behind extreme programming is to produce higher quality software in shorter periods of time. These goals can be achieved by improving the overall productivity of the development team.
Having multiple short term sprints facilitates this goal. That way the requirements are always unstable, and keep changing according to feedback received from the customer/s. The entire idea behind this is that change is good and should be embraced and not discouraged.
Activities
XP describes four activities that are done during the software development process. coding, testing, listening and designing. -Coding Code is considered to be the most important aspect of the software product. Code is clear, concise and is not subject to multiple interpretations. If there is some aspect of the programming problem that the programmer finds it difficult to explain to his teammates in words, he/she may simply use code to illustrate their point. Other programmers may make comments on this code or quite simply write code that suggests improvements over the current code.
Testing
Testing is a very important feature of Extreme Programming. In traditional software development, testing was an activity that was put off till the very end. However, extreme programming encourages the principles of test driven development. It is believed that some testing eliminates some flaws and a lot of testing eliminates many flaws. There are two major types of tests Unit tests are used to test whether some features of the code are working as was the intention. The programmer should incorporate as many automated tests as they can which they think might break the code. When all tests get completed then the coding is complete. Every piece of code must be tested before moving on to the next feature. Acceptance tests verify that the requirements have been understood correctly by the programmers.
Listening
Programmers should be mindful of what the customer wants the system to be like and the business logic when they are writing code. The flow of communication must be smooth and if there are any questions they must be resolved by careful discussions.
Designing
If you would like to keep things simple, you would think that good coding, testing and listening would result in a good software product. This doesn’t quite work that way though. Laying out a good design is one of the essential requirements of a good software product. Even though you might think that you can get by without good design in the initial stages of software development, there will come a time when one will get stuck. Such a state can be avoided by good software design which is well laid out and is logically sound. stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.
Values of XP
Extreme Programming first had only four values till 1999 which are Communication,Simplicity,Feedback and Courage.The fifth value came in the second edition of Extreme programming Explained.
Communication Communication was always handled through documentation in older software development practices.Extreme programming takes this to the extreme levels and incorporates simple designs,collaboration of users as well as programmers,frequent meetings and verbal communication and feedback from the customers as well as peers.
Simplicity
Feedback
Courage
Respect