<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Okdalvi</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Okdalvi"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Okdalvi"/>
	<updated>2026-06-15T22:36:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013&amp;diff=79979</id>
		<title>CSC/ECE 517 Fall 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013&amp;diff=79979"/>
		<updated>2013-10-08T01:26:43Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[ CSC/ECE 517 Fall 2012/ch1 1w23 ph ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w30 nn]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w21 w]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w01 aj]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w24 nv]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w29 rkld]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w25 aras]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w30 ps]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w19 rj]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w18 bs]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w17 pk]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w22 ss]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w12 vn]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w14 st]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w08 cc]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w10 ga ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w26 as ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w27 ma ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w13 aa ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w11 sv ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w07 d ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w20 gq ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w03 ss ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w28 nm ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w02 pp ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1  1w6 zs ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1  1w04 y ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w05 st ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w09 hs ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w32 av ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w48 x ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w43 av]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w46 ka]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w33 aa]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w35 sa ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w39 as ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w31 vm ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w43 sm ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w44 s ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w47 ka ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w34 fs ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w40 ao ]]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013&amp;diff=79978</id>
		<title>CSC/ECE 517 Fall 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013&amp;diff=79978"/>
		<updated>2013-10-08T01:26:31Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[ CSC/ECE 517 Fall 2012/ch1 1w23 ph ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w30 nn]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w21 w]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w01 aj]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w24 nv]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w29 rkld]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w25 aras]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w30 ps]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w19 rj]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w18 bs]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w17 pk]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w22 ss]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w12 vn]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w14 st]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w08 cc]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w10 ga ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w26 as ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w27 ma ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w13 aa ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w11 sv ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w07 d ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w20 gq ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w03 ss ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w28 nm ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w02 pp ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1  1w6 zs ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1  1w04 y ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w05 st ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w09 hs ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w32 av ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w48 x ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w43 av]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w46 ka]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w33 aa]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w35 sa ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w39 as ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w31 vm ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w43 sm ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w44 s ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w47 ka ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w34 fs ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w40_ao ]]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Extreme1.png&amp;diff=79975</id>
		<title>File:Extreme1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Extreme1.png&amp;diff=79975"/>
		<updated>2013-10-08T01:22:52Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79974</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79974"/>
		<updated>2013-10-08T01:22:38Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Practices in XP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[1]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Extreme.gif|right]]&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
Assume that the problem at hand is simple and can be handled easily.Make iterative releases and involve the customer.This way,the customer will be involved and have more control.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
Take account of the changes that are needed to be incorporated and make strategies to do so efficiently.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
[[File:Extreme1.png|right]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;br /&gt;
&lt;br /&gt;
Coding&lt;br /&gt;
The customer is always available&lt;br /&gt;
The unit test must be coded first&lt;br /&gt;
Optimization must be done last	&lt;br /&gt;
&lt;br /&gt;
Testing&lt;br /&gt;
All code must have unit test&lt;br /&gt;
Code must pass unit tests before continuing &lt;br /&gt;
Acceptance tests should be run often and tests must be published&lt;br /&gt;
&lt;br /&gt;
== '''Controversial aspects''' ==&lt;br /&gt;
XP has been a topic of great discussion. People who support this programming methodology claim that extreme programming adds flexibility to the process and reduces costs associated with formal meetings. However, critics claim that extreme programming can lead to rework, which may cause costs to increase from what was previously agreed upon.&lt;br /&gt;
&lt;br /&gt;
Change-control boards are a sign that there might be some conflicts in project objectives and constraints between multiple users. Also, XP’s expedited method depends on the programmers being able to assume a unified client viewpoint to avoid time getting wasted in documentation and the programmer can focus on writing good code. &lt;br /&gt;
&lt;br /&gt;
Other controversial aspects include:&lt;br /&gt;
&lt;br /&gt;
* Requirements are expressed incrementally, so there is no requirement specification at the start.&lt;br /&gt;
* Software developers are required to work in pairs and this causes problems when there are two opposite personalities who don’t like to work with each other.&lt;br /&gt;
* Requirements are expressed as acceptance tests rather than documents.&lt;br /&gt;
* There is just one customer representative which can cause a single point of failure&lt;br /&gt;
&lt;br /&gt;
'''Scalability'''&lt;br /&gt;
&lt;br /&gt;
The problem with XP is that it traditionally works with teams of 20 or so people which is not exactly tailored to every big organization. One way to overcome this is to work in smaller teams within the organization.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
1.Design Patterns and Refactoring&amp;quot;, University of Pennsylvania, 2003, webpage: UPenn-Lectures-design-patterns-&lt;br /&gt;
[http://www.cis.upenn.edu/~matuszek/cit591-2003/Lectures/49-design-patterns.ppt]&lt;br /&gt;
&lt;br /&gt;
2.&amp;quot;Extreme Programming&amp;quot;, Computerworld (online), December 2001, webpage: Computerworld-appdev-[http://www.computerworld.com/softwaretopics/software/appdev/story/0,10801,66192,00.html]&lt;br /&gt;
&lt;br /&gt;
== '''Further Reading''' ==&lt;br /&gt;
&lt;br /&gt;
== '''External Links''' ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.extremeprogramming.org A gentle introduction]&lt;br /&gt;
* [[WikiWikiWeb:ExtremeProgramming|Extreme Programming]]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79971</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79971"/>
		<updated>2013-10-08T01:20:08Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[1]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Extreme.gif|right]]&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
Assume that the problem at hand is simple and can be handled easily.Make iterative releases and involve the customer.This way,the customer will be involved and have more control.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
Take account of the changes that are needed to be incorporated and make strategies to do so efficiently.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;br /&gt;
&lt;br /&gt;
Coding&lt;br /&gt;
The customer is always available&lt;br /&gt;
The unit test must be coded first&lt;br /&gt;
Optimization must be done last	&lt;br /&gt;
&lt;br /&gt;
Testing&lt;br /&gt;
All code must have unit test&lt;br /&gt;
Code must pass unit tests before continuing &lt;br /&gt;
Acceptance tests should be run often and tests must be published&lt;br /&gt;
&lt;br /&gt;
== '''Controversial aspects''' ==&lt;br /&gt;
XP has been a topic of great discussion. People who support this programming methodology claim that extreme programming adds flexibility to the process and reduces costs associated with formal meetings. However, critics claim that extreme programming can lead to rework, which may cause costs to increase from what was previously agreed upon.&lt;br /&gt;
&lt;br /&gt;
Change-control boards are a sign that there might be some conflicts in project objectives and constraints between multiple users. Also, XP’s expedited method depends on the programmers being able to assume a unified client viewpoint to avoid time getting wasted in documentation and the programmer can focus on writing good code. &lt;br /&gt;
&lt;br /&gt;
Other controversial aspects include:&lt;br /&gt;
&lt;br /&gt;
* Requirements are expressed incrementally, so there is no requirement specification at the start.&lt;br /&gt;
* Software developers are required to work in pairs and this causes problems when there are two opposite personalities who don’t like to work with each other.&lt;br /&gt;
* Requirements are expressed as acceptance tests rather than documents.&lt;br /&gt;
* There is just one customer representative which can cause a single point of failure&lt;br /&gt;
&lt;br /&gt;
'''Scalability'''&lt;br /&gt;
&lt;br /&gt;
The problem with XP is that it traditionally works with teams of 20 or so people which is not exactly tailored to every big organization. One way to overcome this is to work in smaller teams within the organization.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
1.&amp;quot;Extreme Programming&amp;quot;, Computerworld (online), December 2001, webpage: Computerworld-appdev-[http://www.computerworld.com/softwaretopics/software/appdev/story/0,10801,66192,00.html]&lt;br /&gt;
&lt;br /&gt;
== '''Further Reading''' ==&lt;br /&gt;
&lt;br /&gt;
== '''External Links''' ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.extremeprogramming.org A gentle introduction]&lt;br /&gt;
* [[WikiWikiWeb:ExtremeProgramming|Extreme Programming]]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Extreme.gif&amp;diff=79970</id>
		<title>File:Extreme.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Extreme.gif&amp;diff=79970"/>
		<updated>2013-10-08T01:19:36Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79969</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79969"/>
		<updated>2013-10-08T01:18:58Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[1]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Extreme.png|right]]&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
Assume that the problem at hand is simple and can be handled easily.Make iterative releases and involve the customer.This way,the customer will be involved and have more control.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
Take account of the changes that are needed to be incorporated and make strategies to do so efficiently.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;br /&gt;
&lt;br /&gt;
Coding&lt;br /&gt;
The customer is always available&lt;br /&gt;
The unit test must be coded first&lt;br /&gt;
Optimization must be done last	&lt;br /&gt;
&lt;br /&gt;
Testing&lt;br /&gt;
All code must have unit test&lt;br /&gt;
Code must pass unit tests before continuing &lt;br /&gt;
Acceptance tests should be run often and tests must be published&lt;br /&gt;
&lt;br /&gt;
== '''Controversial aspects''' ==&lt;br /&gt;
XP has been a topic of great discussion. People who support this programming methodology claim that extreme programming adds flexibility to the process and reduces costs associated with formal meetings. However, critics claim that extreme programming can lead to rework, which may cause costs to increase from what was previously agreed upon.&lt;br /&gt;
&lt;br /&gt;
Change-control boards are a sign that there might be some conflicts in project objectives and constraints between multiple users. Also, XP’s expedited method depends on the programmers being able to assume a unified client viewpoint to avoid time getting wasted in documentation and the programmer can focus on writing good code. &lt;br /&gt;
&lt;br /&gt;
Other controversial aspects include:&lt;br /&gt;
&lt;br /&gt;
* Requirements are expressed incrementally, so there is no requirement specification at the start.&lt;br /&gt;
* Software developers are required to work in pairs and this causes problems when there are two opposite personalities who don’t like to work with each other.&lt;br /&gt;
* Requirements are expressed as acceptance tests rather than documents.&lt;br /&gt;
* There is just one customer representative which can cause a single point of failure&lt;br /&gt;
&lt;br /&gt;
'''Scalability'''&lt;br /&gt;
&lt;br /&gt;
The problem with XP is that it traditionally works with teams of 20 or so people which is not exactly tailored to every big organization. One way to overcome this is to work in smaller teams within the organization.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
1.&amp;quot;Extreme Programming&amp;quot;, Computerworld (online), December 2001, webpage: Computerworld-appdev-[http://www.computerworld.com/softwaretopics/software/appdev/story/0,10801,66192,00.html]&lt;br /&gt;
&lt;br /&gt;
== '''Further Reading''' ==&lt;br /&gt;
&lt;br /&gt;
== '''External Links''' ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.extremeprogramming.org A gentle introduction]&lt;br /&gt;
* [[WikiWikiWeb:ExtremeProgramming|Extreme Programming]]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79967</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79967"/>
		<updated>2013-10-08T01:14:34Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[1]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
Assume that the problem at hand is simple and can be handled easily.Make iterative releases and involve the customer.This way,the customer will be involved and have more control.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
Take account of the changes that are needed to be incorporated and make strategies to do so efficiently.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;br /&gt;
&lt;br /&gt;
Coding&lt;br /&gt;
The customer is always available&lt;br /&gt;
The unit test must be coded first&lt;br /&gt;
Optimization must be done last	&lt;br /&gt;
&lt;br /&gt;
Testing&lt;br /&gt;
All code must have unit test&lt;br /&gt;
Code must pass unit tests before continuing &lt;br /&gt;
Acceptance tests should be run often and tests must be published&lt;br /&gt;
&lt;br /&gt;
== '''Controversial aspects''' ==&lt;br /&gt;
XP has been a topic of great discussion. People who support this programming methodology claim that extreme programming adds flexibility to the process and reduces costs associated with formal meetings. However, critics claim that extreme programming can lead to rework, which may cause costs to increase from what was previously agreed upon.&lt;br /&gt;
&lt;br /&gt;
Change-control boards are a sign that there might be some conflicts in project objectives and constraints between multiple users. Also, XP’s expedited method depends on the programmers being able to assume a unified client viewpoint to avoid time getting wasted in documentation and the programmer can focus on writing good code. &lt;br /&gt;
&lt;br /&gt;
Other controversial aspects include:&lt;br /&gt;
&lt;br /&gt;
* Requirements are expressed incrementally, so there is no requirement specification at the start.&lt;br /&gt;
* Software developers are required to work in pairs and this causes problems when there are two opposite personalities who don’t like to work with each other.&lt;br /&gt;
* Requirements are expressed as acceptance tests rather than documents.&lt;br /&gt;
* There is just one customer representative which can cause a single point of failure&lt;br /&gt;
&lt;br /&gt;
'''Scalability'''&lt;br /&gt;
&lt;br /&gt;
The problem with XP is that it traditionally works with teams of 20 or so people which is not exactly tailored to every big organization. One way to overcome this is to work in smaller teams within the organization.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
1.&amp;quot;Extreme Programming&amp;quot;, Computerworld (online), December 2001, webpage: Computerworld-appdev-[http://www.computerworld.com/softwaretopics/software/appdev/story/0,10801,66192,00.html]&lt;br /&gt;
&lt;br /&gt;
== '''Further Reading''' ==&lt;br /&gt;
&lt;br /&gt;
== '''External Links''' ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.extremeprogramming.org A gentle introduction]&lt;br /&gt;
* [[WikiWikiWeb:ExtremeProgramming|Extreme Programming]]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79966</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79966"/>
		<updated>2013-10-08T01:14:22Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[1]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
Assume that the problem at hand is simple and can be handled easily.Make iterative releases and involve the customer.This way,the customer will be involved and have more control.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
Take account of the changes that are needed to be incorporated and make strategies to do so efficiently.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;br /&gt;
&lt;br /&gt;
Coding&lt;br /&gt;
The customer is always available&lt;br /&gt;
The unit test must be coded first&lt;br /&gt;
Optimization must be done last	&lt;br /&gt;
&lt;br /&gt;
Testing&lt;br /&gt;
All code must have unit test&lt;br /&gt;
Code must pass unit tests before continuing &lt;br /&gt;
Acceptance tests should be run often and tests must be published&lt;br /&gt;
&lt;br /&gt;
== '''Controversial aspects''' ==&lt;br /&gt;
XP has been a topic of great discussion. People who support this programming methodology claim that extreme programming adds flexibility to the process and reduces costs associated with formal meetings. However, critics claim that extreme programming can lead to rework, which may cause costs to increase from what was previously agreed upon.&lt;br /&gt;
&lt;br /&gt;
Change-control boards are a sign that there might be some conflicts in project objectives and constraints between multiple users. Also, XP’s expedited method depends on the programmers being able to assume a unified client viewpoint to avoid time getting wasted in documentation and the programmer can focus on writing good code. &lt;br /&gt;
&lt;br /&gt;
Other controversial aspects include:&lt;br /&gt;
&lt;br /&gt;
* Requirements are expressed incrementally, so there is no requirement specification at the start.&lt;br /&gt;
* Software developers are required to work in pairs and this causes problems when there are two opposite personalities who don’t like to work with each other.&lt;br /&gt;
* Requirements are expressed as acceptance tests rather than documents.&lt;br /&gt;
* There is just one customer representative which can cause a single point of failure&lt;br /&gt;
&lt;br /&gt;
'''Scalability'''&lt;br /&gt;
&lt;br /&gt;
The problem with XP is that it traditionally works with teams of 20 or so people which is not exactly tailored to every big organization. One way to overcome this is to work in smaller teams within the organization.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
1.&amp;quot;Extreme Programming&amp;quot;, Computerworld (online), December 2001, webpage: Computerworld-appdev-[[http://www.computerworld.com/softwaretopics/software/appdev/story/0,10801,66192,00.html]&lt;br /&gt;
&lt;br /&gt;
== '''Further Reading''' ==&lt;br /&gt;
&lt;br /&gt;
== '''External Links''' ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.extremeprogramming.org A gentle introduction]&lt;br /&gt;
* [[WikiWikiWeb:ExtremeProgramming|Extreme Programming]]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79965</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79965"/>
		<updated>2013-10-08T01:14:07Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[1]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
Assume that the problem at hand is simple and can be handled easily.Make iterative releases and involve the customer.This way,the customer will be involved and have more control.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
Take account of the changes that are needed to be incorporated and make strategies to do so efficiently.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;br /&gt;
&lt;br /&gt;
Coding&lt;br /&gt;
The customer is always available&lt;br /&gt;
The unit test must be coded first&lt;br /&gt;
Optimization must be done last	&lt;br /&gt;
&lt;br /&gt;
Testing&lt;br /&gt;
All code must have unit test&lt;br /&gt;
Code must pass unit tests before continuing &lt;br /&gt;
Acceptance tests should be run often and tests must be published&lt;br /&gt;
&lt;br /&gt;
== '''Controversial aspects''' ==&lt;br /&gt;
XP has been a topic of great discussion. People who support this programming methodology claim that extreme programming adds flexibility to the process and reduces costs associated with formal meetings. However, critics claim that extreme programming can lead to rework, which may cause costs to increase from what was previously agreed upon.&lt;br /&gt;
&lt;br /&gt;
Change-control boards are a sign that there might be some conflicts in project objectives and constraints between multiple users. Also, XP’s expedited method depends on the programmers being able to assume a unified client viewpoint to avoid time getting wasted in documentation and the programmer can focus on writing good code. &lt;br /&gt;
&lt;br /&gt;
Other controversial aspects include:&lt;br /&gt;
&lt;br /&gt;
* Requirements are expressed incrementally, so there is no requirement specification at the start.&lt;br /&gt;
* Software developers are required to work in pairs and this causes problems when there are two opposite personalities who don’t like to work with each other.&lt;br /&gt;
* Requirements are expressed as acceptance tests rather than documents.&lt;br /&gt;
* There is just one customer representative which can cause a single point of failure&lt;br /&gt;
&lt;br /&gt;
'''Scalability'''&lt;br /&gt;
&lt;br /&gt;
The problem with XP is that it traditionally works with teams of 20 or so people which is not exactly tailored to every big organization. One way to overcome this is to work in smaller teams within the organization.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
1.&amp;quot;Extreme Programming&amp;quot;, Computerworld (online), December 2001, webpage: Computerworld-appdev-9[[http://www.computerworld.com/softwaretopics/software/appdev/story/0,10801,66192,00.html]&lt;br /&gt;
&lt;br /&gt;
== '''Further Reading''' ==&lt;br /&gt;
&lt;br /&gt;
== '''External Links''' ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.extremeprogramming.org A gentle introduction]&lt;br /&gt;
* [[WikiWikiWeb:ExtremeProgramming|Extreme Programming]]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79964</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79964"/>
		<updated>2013-10-08T01:13:05Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[1]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
Assume that the problem at hand is simple and can be handled easily.Make iterative releases and involve the customer.This way,the customer will be involved and have more control.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
Take account of the changes that are needed to be incorporated and make strategies to do so efficiently.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;br /&gt;
&lt;br /&gt;
Coding&lt;br /&gt;
The customer is always available&lt;br /&gt;
The unit test must be coded first&lt;br /&gt;
Optimization must be done last	&lt;br /&gt;
&lt;br /&gt;
Testing&lt;br /&gt;
All code must have unit test&lt;br /&gt;
Code must pass unit tests before continuing &lt;br /&gt;
Acceptance tests should be run often and tests must be published&lt;br /&gt;
&lt;br /&gt;
== '''Controversial aspects''' ==&lt;br /&gt;
XP has been a topic of great discussion. People who support this programming methodology claim that extreme programming adds flexibility to the process and reduces costs associated with formal meetings. However, critics claim that extreme programming can lead to rework, which may cause costs to increase from what was previously agreed upon.&lt;br /&gt;
&lt;br /&gt;
Change-control boards are a sign that there might be some conflicts in project objectives and constraints between multiple users. Also, XP’s expedited method depends on the programmers being able to assume a unified client viewpoint to avoid time getting wasted in documentation and the programmer can focus on writing good code. &lt;br /&gt;
&lt;br /&gt;
Other controversial aspects include:&lt;br /&gt;
&lt;br /&gt;
* Requirements are expressed incrementally, so there is no requirement specification at the start.&lt;br /&gt;
* Software developers are required to work in pairs and this causes problems when there are two opposite personalities who don’t like to work with each other.&lt;br /&gt;
* Requirements are expressed as acceptance tests rather than documents.&lt;br /&gt;
* There is just one customer representative which can cause a single point of failure&lt;br /&gt;
&lt;br /&gt;
'''Scalability'''&lt;br /&gt;
&lt;br /&gt;
The problem with XP is that it traditionally works with teams of 20 or so people which is not exactly tailored to every big organization. One way to overcome this is to work in smaller teams within the organization.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
1.&amp;quot;Extreme Programming&amp;quot;, Computerworld (online), December 2001, webpage: Computerworld-appdev-92&lt;br /&gt;
&lt;br /&gt;
== '''Further Reading''' ==&lt;br /&gt;
&lt;br /&gt;
== '''External Links''' ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.extremeprogramming.org A gentle introduction]&lt;br /&gt;
* [[WikiWikiWeb:ExtremeProgramming|Extreme Programming]]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79963</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79963"/>
		<updated>2013-10-08T01:12:46Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
Assume that the problem at hand is simple and can be handled easily.Make iterative releases and involve the customer.This way,the customer will be involved and have more control.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
Take account of the changes that are needed to be incorporated and make strategies to do so efficiently.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;br /&gt;
&lt;br /&gt;
Coding&lt;br /&gt;
The customer is always available&lt;br /&gt;
The unit test must be coded first&lt;br /&gt;
Optimization must be done last	&lt;br /&gt;
&lt;br /&gt;
Testing&lt;br /&gt;
All code must have unit test&lt;br /&gt;
Code must pass unit tests before continuing &lt;br /&gt;
Acceptance tests should be run often and tests must be published&lt;br /&gt;
&lt;br /&gt;
== '''Controversial aspects''' ==&lt;br /&gt;
XP has been a topic of great discussion. People who support this programming methodology claim that extreme programming adds flexibility to the process and reduces costs associated with formal meetings. However, critics claim that extreme programming can lead to rework, which may cause costs to increase from what was previously agreed upon.&lt;br /&gt;
&lt;br /&gt;
Change-control boards are a sign that there might be some conflicts in project objectives and constraints between multiple users. Also, XP’s expedited method depends on the programmers being able to assume a unified client viewpoint to avoid time getting wasted in documentation and the programmer can focus on writing good code. &lt;br /&gt;
&lt;br /&gt;
Other controversial aspects include:&lt;br /&gt;
&lt;br /&gt;
* Requirements are expressed incrementally, so there is no requirement specification at the start.&lt;br /&gt;
* Software developers are required to work in pairs and this causes problems when there are two opposite personalities who don’t like to work with each other.&lt;br /&gt;
* Requirements are expressed as acceptance tests rather than documents.&lt;br /&gt;
* There is just one customer representative which can cause a single point of failure&lt;br /&gt;
&lt;br /&gt;
'''Scalability'''&lt;br /&gt;
&lt;br /&gt;
The problem with XP is that it traditionally works with teams of 20 or so people which is not exactly tailored to every big organization. One way to overcome this is to work in smaller teams within the organization.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
1.&amp;quot;Extreme Programming&amp;quot;, Computerworld (online), December 2001, webpage: Computerworld-appdev-92&lt;br /&gt;
&lt;br /&gt;
== '''Further Reading''' ==&lt;br /&gt;
&lt;br /&gt;
== '''External Links''' ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.extremeprogramming.org A gentle introduction]&lt;br /&gt;
* [[WikiWikiWeb:ExtremeProgramming|Extreme Programming]]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79962</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79962"/>
		<updated>2013-10-08T01:11:38Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
Assume that the problem at hand is simple and can be handled easily.Make iterative releases and involve the customer.This way,the customer will be involved and have more control.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
Take account of the changes that are needed to be incorporated and make strategies to do so efficiently.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;br /&gt;
&lt;br /&gt;
Coding&lt;br /&gt;
The customer is always available&lt;br /&gt;
The unit test must be coded first&lt;br /&gt;
Optimization must be done last	&lt;br /&gt;
&lt;br /&gt;
Testing&lt;br /&gt;
All code must have unit test&lt;br /&gt;
Code must pass unit tests before continuing &lt;br /&gt;
Acceptance tests should be run often and tests must be published&lt;br /&gt;
&lt;br /&gt;
== '''Controversial aspects''' ==&lt;br /&gt;
XP has been a topic of great discussion. People who support this programming methodology claim that extreme programming adds flexibility to the process and reduces costs associated with formal meetings. However, critics claim that extreme programming can lead to rework, which may cause costs to increase from what was previously agreed upon.&lt;br /&gt;
&lt;br /&gt;
Change-control boards are a sign that there might be some conflicts in project objectives and constraints between multiple users. Also, XP’s expedited method depends on the programmers being able to assume a unified client viewpoint to avoid time getting wasted in documentation and the programmer can focus on writing good code. &lt;br /&gt;
&lt;br /&gt;
Other controversial aspects include:&lt;br /&gt;
&lt;br /&gt;
* Requirements are expressed incrementally, so there is no requirement specification at the start.&lt;br /&gt;
* Software developers are required to work in pairs and this causes problems when there are two opposite personalities who don’t like to work with each other.&lt;br /&gt;
* Requirements are expressed as acceptance tests rather than documents.&lt;br /&gt;
* There is just one customer representative which can cause a single point of failure&lt;br /&gt;
&lt;br /&gt;
'''Scalability'''&lt;br /&gt;
&lt;br /&gt;
The problem with XP is that it traditionally works with teams of 20 or so people which is not exactly tailored to every big organization. One way to overcome this is to work in smaller teams within the organization.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Further Reading''' ==&lt;br /&gt;
&lt;br /&gt;
== '''External Links''' ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.extremeprogramming.org A gentle introduction]&lt;br /&gt;
* [[WikiWikiWeb:ExtremeProgramming|Extreme Programming]]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79961</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79961"/>
		<updated>2013-10-08T01:11:19Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
Assume that the problem at hand is simple and can be handled easily.Make iterative releases and involve the customer.This way,the customer will be involved and have more control.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
Take account of the changes that are needed to be incorporated and make strategies to do so efficiently.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;br /&gt;
&lt;br /&gt;
Coding&lt;br /&gt;
The customer is always available&lt;br /&gt;
The unit test must be coded first&lt;br /&gt;
Optimization must be done last	&lt;br /&gt;
&lt;br /&gt;
Testing&lt;br /&gt;
All code must have unit test&lt;br /&gt;
Code must pass unit tests before continuing &lt;br /&gt;
Acceptance tests should be run often and tests must be published&lt;br /&gt;
&lt;br /&gt;
== '''Controversial aspects''' ==&lt;br /&gt;
XP has been a topic of great discussion. People who support this programming methodology claim that extreme programming adds flexibility to the process and reduces costs associated with formal meetings. However, critics claim that extreme programming can lead to rework, which may cause costs to increase from what was previously agreed upon.&lt;br /&gt;
&lt;br /&gt;
Change-control boards are a sign that there might be some conflicts in project objectives and constraints between multiple users. Also, XP’s expedited method depends on the programmers being able to assume a unified client viewpoint to avoid time getting wasted in documentation and the programmer can focus on writing good code. &lt;br /&gt;
&lt;br /&gt;
Other controversial aspects include:&lt;br /&gt;
&lt;br /&gt;
* Requirements are expressed incrementally, so there is no requirement specification at the start.&lt;br /&gt;
* Software developers are required to work in pairs and this causes problems when there are two opposite personalities who don’t like to work with each other.&lt;br /&gt;
* Requirements are expressed as acceptance tests rather than documents.&lt;br /&gt;
* There is just one customer representative which can cause a single point of failure&lt;br /&gt;
&lt;br /&gt;
'''Scalability'''&lt;br /&gt;
&lt;br /&gt;
The problem with XP is that it traditionally works with teams of 20 or so people which is not exactly tailored to every big organization. One way to overcome this is to work in smaller teams within the organization.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Further Reading''' ==&lt;br /&gt;
&lt;br /&gt;
== '''External Links''' ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.extremeprogramming.org A gentle introduction]&lt;br /&gt;
* [WikiWikiWeb:ExtremeProgramming|Extreme Programming]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79960</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79960"/>
		<updated>2013-10-08T01:10:37Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
Assume that the problem at hand is simple and can be handled easily.Make iterative releases and involve the customer.This way,the customer will be involved and have more control.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
Take account of the changes that are needed to be incorporated and make strategies to do so efficiently.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;br /&gt;
&lt;br /&gt;
Coding&lt;br /&gt;
The customer is always available&lt;br /&gt;
The unit test must be coded first&lt;br /&gt;
Optimization must be done last	&lt;br /&gt;
&lt;br /&gt;
Testing&lt;br /&gt;
All code must have unit test&lt;br /&gt;
Code must pass unit tests before continuing &lt;br /&gt;
Acceptance tests should be run often and tests must be published&lt;br /&gt;
&lt;br /&gt;
== '''Controversial aspects''' ==&lt;br /&gt;
XP has been a topic of great discussion. People who support this programming methodology claim that extreme programming adds flexibility to the process and reduces costs associated with formal meetings. However, critics claim that extreme programming can lead to rework, which may cause costs to increase from what was previously agreed upon.&lt;br /&gt;
&lt;br /&gt;
Change-control boards are a sign that there might be some conflicts in project objectives and constraints between multiple users. Also, XP’s expedited method depends on the programmers being able to assume a unified client viewpoint to avoid time getting wasted in documentation and the programmer can focus on writing good code. &lt;br /&gt;
&lt;br /&gt;
Other controversial aspects include:&lt;br /&gt;
&lt;br /&gt;
* Requirements are expressed incrementally, so there is no requirement specification at the start.&lt;br /&gt;
* Software developers are required to work in pairs and this causes problems when there are two opposite personalities who don’t like to work with each other.&lt;br /&gt;
* Requirements are expressed as acceptance tests rather than documents.&lt;br /&gt;
* There is just one customer representative which can cause a single point of failure&lt;br /&gt;
&lt;br /&gt;
'''Scalability'''&lt;br /&gt;
&lt;br /&gt;
The problem with XP is that it traditionally works with teams of 20 or so people which is not exactly tailored to every big organization. One way to overcome this is to work in smaller teams within the organization.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Further Reading''' ==&lt;br /&gt;
&lt;br /&gt;
== '''External Links''' ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.extremeprogramming.org A gentle introduction]&lt;br /&gt;
* [[WikiWikiWeb:ExtremeProgramming|Extreme Programming]]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79957</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79957"/>
		<updated>2013-10-08T01:09:06Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
Assume that the problem at hand is simple and can be handled easily.Make iterative releases and involve the customer.This way,the customer will be involved and have more control.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
Take account of the changes that are needed to be incorporated and make strategies to do so efficiently.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Further Reading''' ==&lt;br /&gt;
&lt;br /&gt;
== '''External Links''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79952</id>
		<title>CSC/ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79952"/>
		<updated>2013-10-08T01:05:20Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: Created page with &amp;quot;== '''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 ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
Assume that the problem at hand is simple and can be handled easily.Make iterative releases and involve the customer.This way,the customer will be involved and have more control.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
Take account of the changes that are needed to be incorporated and make strategies to do so efficiently.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013&amp;diff=79951</id>
		<title>CSC/ECE 517 Fall 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2013&amp;diff=79951"/>
		<updated>2013-10-08T01:04:42Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[ CSC/ECE 517 Fall 2012/ch1 1w23 ph ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w30 nn]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w21 w]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w01 aj]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w24 nv]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w29 rkld]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w25 aras]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w30 ps]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w19 rj]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w18 bs]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w17 pk]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w22 ss]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w12 vn]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w14 st]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w08 cc]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w10 ga ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w26 as ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w27 ma ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w13 aa ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w11 sv ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w07 d ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w20 gq ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w03 ss ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w28 nm ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w02 pp ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1  1w6 zs ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1  1w04 y ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w05 st ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w09 hs ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w32 av ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w48 x ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w43 av]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w46 ka]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w33 aa]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w35 sa ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w39 as ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w31 vm ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w43 sm ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w44 s ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w47 ka ]]&lt;br /&gt;
* [[ CSC/ECE 517 Fall 2013/ch1 1w34 fs ]]&lt;br /&gt;
* [[ CSC/ECE_517_Fall_2013/ch1_1w40_ao ]]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79943</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79943"/>
		<updated>2013-10-08T00:47:52Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Rules of XP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
Assume that the problem at hand is simple and can be handled easily.Make iterative releases and involve the customer.This way,the customer will be involved and have more control.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
Take account of the changes that are needed to be incorporated and make strategies to do so efficiently.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79941</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79941"/>
		<updated>2013-10-08T00:44:46Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Rules of XP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is something that we get from the reviewers after something is delivered.Feedbacks should be done frequently and periodically.Feedbacks are a means for the customer to give his/her two cents while the development is in it's iterative stages.It can act as a way to give a direction to the development process of the software as per the customization of the customer.The testing perspective for feedback is Unit testing.In which for each iterative development,unit tests are performed to check how the system reacts.A suite can act as a feedback mechanism giving quick feedbacks to every iterative development and the developer can understand that his changes cannot be incorporated and need to be further developed. &lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
This is about treating every problem as if its solution were &amp;quot;extremely simple&amp;quot;. Traditional system development methods say to plan for the future and to code for reusability. Extreme programming rejects these ideas.&lt;br /&gt;
&lt;br /&gt;
The advocates of extreme programming say that making big changes all at once does not work. Extreme programming applies incremental changes: for example, a system might have small releases every three weeks. When many little steps are made, the customer has more control over the development process and the system that is being developed.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
The principle of embracing change is about not working against changes but embracing them. For instance, if at one of the iterative meetings it appears that the customer's requirements have changed dramatically, programmers are to embrace this and plan the new requirements for the next iteration.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79913</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79913"/>
		<updated>2013-10-08T00:01:33Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Rules of XP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment 2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
Principles are a step further than values.Principles are supposed to be more practical and applicable to real situations.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Extreme programming sees feedback as most useful if it is done frequently and promptly. It stresses that minimal delay between an action and its feedback is critical to learning and making changes. Unlike traditional system development methods, contact with the customer occurs in more frequent iterations. The customer has clear insight into the system that is being developed. He or she can give feedback and steer the development as needed. With frequent feedback from the customer, a mistaken design decision made by the developer will be noticed and corrected quickly, before the developer spends much time implementing it.&lt;br /&gt;
&lt;br /&gt;
Unit tests also contribute to the rapid feedback principle. When writing code, running the unit test provides direct feedback as to how the system reacts to the changes one has made. This includes running not only the unit tests that test the developer's code, but running in addition all unit tests against all the software, using an automated process that can be initiated by a single command. That way, If the developer's changes cause a failure in some other portion of the system, that the developer knows little or nothing about, the automated all-unit-test suite will reveal the failure immediately, alerting the developer of the incompatibility of his change with other parts of the system, and the necessity of removing or modifying his change. Under traditional development practices, the absence of an automated, comprehensive unit-test suite meant that such a code change, assumed harmless by the developer, would have been left in place, appearing only during integration testing—or worse, only in production; and determining which code change caused the problem, among all the changes made by all the developers during the weeks or even months previous to integration testing, was a formidable task.&lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
This is about treating every problem as if its solution were &amp;quot;extremely simple&amp;quot;. Traditional system development methods say to plan for the future and to code for reusability. Extreme programming rejects these ideas.&lt;br /&gt;
&lt;br /&gt;
The advocates of extreme programming say that making big changes all at once does not work. Extreme programming applies incremental changes: for example, a system might have small releases every three weeks. When many little steps are made, the customer has more control over the development process and the system that is being developed.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
The principle of embracing change is about not working against changes but embracing them. For instance, if at one of the iterative meetings it appears that the customer's requirements have changed dramatically, programmers are to embrace this and plan the new requirements for the next iteration.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79898</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79898"/>
		<updated>2013-10-07T23:41:05Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Rules of XP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment,2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
&lt;br /&gt;
The principles that form the basis of XP are based on the values just described and are intended to foster decisions in a system development project. The principles are intended to be more concrete than the values and more easily translated to guidance in a practical situation.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Extreme programming sees feedback as most useful if it is done frequently and promptly. It stresses that minimal delay between an action and its feedback is critical to learning and making changes. Unlike traditional system development methods, contact with the customer occurs in more frequent iterations. The customer has clear insight into the system that is being developed. He or she can give feedback and steer the development as needed. With frequent feedback from the customer, a mistaken design decision made by the developer will be noticed and corrected quickly, before the developer spends much time implementing it.&lt;br /&gt;
&lt;br /&gt;
Unit tests also contribute to the rapid feedback principle. When writing code, running the unit test provides direct feedback as to how the system reacts to the changes one has made. This includes running not only the unit tests that test the developer's code, but running in addition all unit tests against all the software, using an automated process that can be initiated by a single command. That way, If the developer's changes cause a failure in some other portion of the system, that the developer knows little or nothing about, the automated all-unit-test suite will reveal the failure immediately, alerting the developer of the incompatibility of his change with other parts of the system, and the necessity of removing or modifying his change. Under traditional development practices, the absence of an automated, comprehensive unit-test suite meant that such a code change, assumed harmless by the developer, would have been left in place, appearing only during integration testing—or worse, only in production; and determining which code change caused the problem, among all the changes made by all the developers during the weeks or even months previous to integration testing, was a formidable task.&lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
&lt;br /&gt;
This is about treating every problem as if its solution were &amp;quot;extremely simple&amp;quot;. Traditional system development methods say to plan for the future and to code for reusability. Extreme programming rejects these ideas.&lt;br /&gt;
&lt;br /&gt;
The advocates of extreme programming say that making big changes all at once does not work. Extreme programming applies incremental changes: for example, a system might have small releases every three weeks. When many little steps are made, the customer has more control over the development process and the system that is being developed.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
&lt;br /&gt;
The principle of embracing change is about not working against changes but embracing them. For instance, if at one of the iterative meetings it appears that the customer's requirements have changed dramatically, programmers are to embrace this and plan the new requirements for the next iteration.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79897</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79897"/>
		<updated>2013-10-07T23:40:26Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Values of XP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment,2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
'''Principles'''&lt;br /&gt;
The principles that form the basis of XP are based on the values just described and are intended to foster decisions in a system development project. The principles are intended to be more concrete than the values and more easily translated to guidance in a practical situation.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
Extreme programming sees feedback as most useful if it is done frequently and promptly. It stresses that minimal delay between an action and its feedback is critical to learning and making changes. Unlike traditional system development methods, contact with the customer occurs in more frequent iterations. The customer has clear insight into the system that is being developed. He or she can give feedback and steer the development as needed. With frequent feedback from the customer, a mistaken design decision made by the developer will be noticed and corrected quickly, before the developer spends much time implementing it.&lt;br /&gt;
&lt;br /&gt;
Unit tests also contribute to the rapid feedback principle. When writing code, running the unit test provides direct feedback as to how the system reacts to the changes one has made. This includes running not only the unit tests that test the developer's code, but running in addition all unit tests against all the software, using an automated process that can be initiated by a single command. That way, If the developer's changes cause a failure in some other portion of the system, that the developer knows little or nothing about, the automated all-unit-test suite will reveal the failure immediately, alerting the developer of the incompatibility of his change with other parts of the system, and the necessity of removing or modifying his change. Under traditional development practices, the absence of an automated, comprehensive unit-test suite meant that such a code change, assumed harmless by the developer, would have been left in place, appearing only during integration testing—or worse, only in production; and determining which code change caused the problem, among all the changes made by all the developers during the weeks or even months previous to integration testing, was a formidable task.&lt;br /&gt;
&lt;br /&gt;
'''Assuming simplicity'''&lt;br /&gt;
This is about treating every problem as if its solution were &amp;quot;extremely simple&amp;quot;. Traditional system development methods say to plan for the future and to code for reusability. Extreme programming rejects these ideas.&lt;br /&gt;
&lt;br /&gt;
The advocates of extreme programming say that making big changes all at once does not work. Extreme programming applies incremental changes: for example, a system might have small releases every three weeks. When many little steps are made, the customer has more control over the development process and the system that is being developed.&lt;br /&gt;
&lt;br /&gt;
'''Embracing change'''&lt;br /&gt;
The principle of embracing change is about not working against changes but embracing them. For instance, if at one of the iterative meetings it appears that the customer's requirements have changed dramatically, programmers are to embrace this and plan the new requirements for the next iteration.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79894</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79894"/>
		<updated>2013-10-07T23:38:22Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Rules of XP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==.&lt;br /&gt;
&lt;br /&gt;
Every software development methodology comes bundled with some rules.In the case of XP,we have rules which were laid down by Don Wells in 1999.There were total 29 rules.XP rules were also proposed by Ken Auer.He proposed two categories 1)Rules of Engagement:Define the environment,2)Rules of play:Define the activities. &lt;br /&gt;
&lt;br /&gt;
Principles[edit]&lt;br /&gt;
The principles that form the basis of XP are based on the values just described and are intended to foster decisions in a system development project. The principles are intended to be more concrete than the values and more easily translated to guidance in a practical situation.&lt;br /&gt;
&lt;br /&gt;
Feedback[edit]&lt;br /&gt;
Extreme programming sees feedback as most useful if it is done frequently and promptly. It stresses that minimal delay between an action and its feedback is critical to learning and making changes. Unlike traditional system development methods, contact with the customer occurs in more frequent iterations. The customer has clear insight into the system that is being developed. He or she can give feedback and steer the development as needed. With frequent feedback from the customer, a mistaken design decision made by the developer will be noticed and corrected quickly, before the developer spends much time implementing it.&lt;br /&gt;
&lt;br /&gt;
Unit tests also contribute to the rapid feedback principle. When writing code, running the unit test provides direct feedback as to how the system reacts to the changes one has made. This includes running not only the unit tests that test the developer's code, but running in addition all unit tests against all the software, using an automated process that can be initiated by a single command. That way, If the developer's changes cause a failure in some other portion of the system, that the developer knows little or nothing about, the automated all-unit-test suite will reveal the failure immediately, alerting the developer of the incompatibility of his change with other parts of the system, and the necessity of removing or modifying his change. Under traditional development practices, the absence of an automated, comprehensive unit-test suite meant that such a code change, assumed harmless by the developer, would have been left in place, appearing only during integration testing—or worse, only in production; and determining which code change caused the problem, among all the changes made by all the developers during the weeks or even months previous to integration testing, was a formidable task.&lt;br /&gt;
&lt;br /&gt;
Assuming simplicity[edit]&lt;br /&gt;
This is about treating every problem as if its solution were &amp;quot;extremely simple&amp;quot;. Traditional system development methods say to plan for the future and to code for reusability. Extreme programming rejects these ideas.&lt;br /&gt;
&lt;br /&gt;
The advocates of extreme programming say that making big changes all at once does not work. Extreme programming applies incremental changes: for example, a system might have small releases every three weeks. When many little steps are made, the customer has more control over the development process and the system that is being developed.&lt;br /&gt;
&lt;br /&gt;
Embracing change[edit]&lt;br /&gt;
The principle of embracing change is about not working against changes but embracing them. For instance, if at one of the iterative meetings it appears that the customer's requirements have changed dramatically, programmers are to embrace this and plan the new requirements for the next iteration.&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79332</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79332"/>
		<updated>2013-10-05T18:32:35Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Values of XP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
Courage is a required thing in Extreme Programming and lies in the fact that code can be refactored as per the requirements.This requires a lot of review for the existing system and making changes to accommodate changes that will come in future.&lt;br /&gt;
Another form of courage can be deciding on when to throw obsolete code away insoite of efforts neeeded to create the code in the first place.&lt;br /&gt;
Corage is the second word for persistence.A coder should be persistent till he gets his problem solved completely.&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
Respect should be given to one0self i.e. self-respect as well as to all members of the team.One should respect his/her own work by looking to create the highest quality and seeking best solution by making use of refactoring as much as possible.&lt;br /&gt;
Nobody should be ignored instead should be encouraged and respected.&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first version of XP rules was published by Don Wells in 1999. There were 29 rules in the categories of planning, managing, designing, coding and testing. Planning, managing and designing are described specifically because XP has been criticized to not support it in the past. &lt;br /&gt;
&lt;br /&gt;
Another version of XP was proposed by Ken Auer. In his opinion, XP was defined by rules and not its practices which tend to be ambiguous. Two categories were defined, “Rules of engagement” and the “Rules of play”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
Extreme programming has 12 practices which are grouped into four areas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79329</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79329"/>
		<updated>2013-10-05T18:14:59Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Values of XP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first version of XP rules was published by Don Wells in 1999. There were 29 rules in the categories of planning, managing, designing, coding and testing. Planning, managing and designing are described specifically because XP has been criticized to not support it in the past. &lt;br /&gt;
&lt;br /&gt;
Another version of XP was proposed by Ken Auer. In his opinion, XP was defined by rules and not its practices which tend to be ambiguous. Two categories were defined, “Rules of engagement” and the “Rules of play”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79328</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79328"/>
		<updated>2013-10-05T18:14:40Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Values of XP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
Feedback is a quintessential part of the Extreme programming methodology.&lt;br /&gt;
Feedback can be from a person or can be from a system.&lt;br /&gt;
e.g.Feedback received on account of writing tests like Unit tests,Performance tests,etc.On the other-hand,feedback from the customer can be obtain after doing functional tests by the customer/testers.This should be planned every one or two weeks.&lt;br /&gt;
Feedback from the team is another form of feedback where the team as a whole reviews each others work and collaborates with the changing requirements of the customers.&lt;br /&gt;
Kent Beck says the following about feedback &amp;quot;Optimism is an occupational hazard of programming. Feedback is the treatment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first version of XP rules was published by Don Wells in 1999. There were 29 rules in the categories of planning, managing, designing, coding and testing. Planning, managing and designing are described specifically because XP has been criticized to not support it in the past. &lt;br /&gt;
&lt;br /&gt;
Another version of XP was proposed by Ken Auer. In his opinion, XP was defined by rules and not its practices which tend to be ambiguous. Two categories were defined, “Rules of engagement” and the “Rules of play”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Practices in XP''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fine scale feedback&lt;br /&gt;
* Pair programming&lt;br /&gt;
* Planning game&lt;br /&gt;
* Test-driven development	&lt;br /&gt;
*  Whole team&lt;br /&gt;
Continuous process&lt;br /&gt;
* Continuous integration&lt;br /&gt;
* Refactoring or design improvement&lt;br /&gt;
* Small releases&lt;br /&gt;
Shared understanding&lt;br /&gt;
* Coding standards&lt;br /&gt;
* Collective code ownership&lt;br /&gt;
* Simple design&lt;br /&gt;
* System metaphor&lt;br /&gt;
Programmer welfare&lt;br /&gt;
* Sustainable pace&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79326</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79326"/>
		<updated>2013-10-05T18:06:11Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Values of XP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
The simplicity in Extreme programming is that it stresses on starting with on the simplest task and reaching short term goals and then taking them to the extreme level as we progress. &lt;br /&gt;
The aim is to focus on the tasks that should be completed in short-term and get done with it.The flaw here is that somethings that are ignored as of today may require more efforts as regards to design as well as implementation changes in the future.The design should be simple as well as the code so that everyone in the team can understand it and work with it.&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Rules of XP''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first version of XP rules was published by Don Wells in 1999. There were 29 rules in the categories of planning, managing, designing, coding and testing. Planning, managing and designing are described specifically because XP has been criticized to not support it in the past. &lt;br /&gt;
&lt;br /&gt;
Another version of XP was proposed by Ken Auer. In his opinion, XP was defined by rules and not its practices which tend to be ambiguous. Two categories were defined, “Rules of engagement” and the “Rules of play”.&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79324</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79324"/>
		<updated>2013-10-05T17:39:42Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Values of XP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79323</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79323"/>
		<updated>2013-10-05T17:39:25Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: /* Values of XP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79322</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79322"/>
		<updated>2013-10-05T17:33:27Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79321</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79321"/>
		<updated>2013-10-05T17:28:54Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;br /&gt;
&lt;br /&gt;
'''Courage'''&lt;br /&gt;
&lt;br /&gt;
'''Respect'''&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79320</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79320"/>
		<updated>2013-10-05T17:28:05Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
''' Goals'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Activities'''&lt;br /&gt;
&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Testing'''&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
&lt;br /&gt;
''' Listening'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
''' Designing'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
stuck. Such a state can be avoided by good software design which is well laid out and is logically sound.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;br /&gt;
'''Communication'''&lt;br /&gt;
&lt;br /&gt;
'''Simplicity'''&lt;br /&gt;
&lt;br /&gt;
'''Feedback'''&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79316</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79316"/>
		<updated>2013-10-05T17:21:45Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;br /&gt;
-Goals&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
-Activities&lt;br /&gt;
XP describes four activities that are done during the software development process. coding, testing, listening and designing.&lt;br /&gt;
-Coding&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
-Testing&lt;br /&gt;
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&lt;br /&gt;
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.&lt;br /&gt;
Acceptance tests verify that the requirements have been understood correctly by the programmers.&lt;br /&gt;
-Listening&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
-Designing&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Values of XP''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79314</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79314"/>
		<updated>2013-10-05T17:18:28Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79313</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79313"/>
		<updated>2013-10-05T15:59:47Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
XP generated significant interest amongst software communities in the late 1990s and early 2000s, seeing adoption in a number of environments radically different from its origins.&lt;br /&gt;
The high discipline required by the original practices often went by the wayside, causing some of these practices, such as those thought too rigid, to be deprecated or reduced, or even left unfinished, on individual sites. For example, the practice of end-of-day integration tests, for a particular project, could be changed to an end-of-week schedule, or simply reduced to mutually agreed dates. Such a more relaxed schedule could avoid people feeling rushed to generate artificial stubs just to pass the end-of-day testing. A less-rigid schedule allows, instead, for some complex features to be more fully developed over a several-day period. However, some level of periodic integration testing can detect groups of people working in non-compatible, tangent efforts before too much work is invested in divergent, wrong directions.&lt;br /&gt;
Meanwhile, other agile development practices have not stood still, and XP is still evolving, assimilating more lessons from experiences in the field, to use other practices. In the second edition of Extreme Programming Explained (November 2004), five years after the first edition, Beck added more values and practices and differentiated between primary and corollary practices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79312</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79312"/>
		<updated>2013-10-05T15:55:17Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb WikiWikiWeb] &lt;br /&gt;
* The XP website itself: &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79311</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79311"/>
		<updated>2013-10-05T15:52:47Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot;and asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* The original Wiki by Cunnigham [http://en.wikipedia.org/wiki/WikiWikiWeb] &lt;br /&gt;
* Various contributors discussed and expanded upon the ideas, and some spin-off methodologies resulted (see agile software development). Also, XP concepts have been explained, for several years, using a hypertext system map on the XP website at &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6), spreading his ideas to a much larger, yet very receptive, audience. Authors in the series went through various aspects attending XP and its practices. The series included a book that was critical of the practices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79310</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79310"/>
		<updated>2013-10-05T15:49:53Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot; [and] asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Various sources for information about this new developing methodology published by the team itself are as follows:&lt;br /&gt;
* Information about the principles and practices behind XP was disseminated to the wider world through discussions on the original Wiki,  Cunningham's WikiWikiWeb. &lt;br /&gt;
* Various contributors discussed and expanded upon the ideas, and some spin-off methodologies resulted (see agile software development). Also, XP concepts have been explained, for several years, using a hypertext system map on the XP website at &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
* Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6), spreading his ideas to a much larger, yet very receptive, audience. Authors in the series went through various aspects attending XP and its practices. The series included a book that was critical of the practices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79309</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79309"/>
		<updated>2013-10-05T15:45:56Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
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,&amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot; [and] asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Information about the principles and practices behind XP was disseminated to the wider world through discussions on the original Wiki, Cunningham's WikiWikiWeb. Various contributors discussed and expanded upon the ideas, and some spin-off methodologies resulted (see agile software development). Also, XP concepts have been explained, for several years, using a hypertext system map on the XP website at &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6), spreading his ideas to a much larger, yet very receptive, audience. Authors in the series went through various aspects attending XP and its practices. The series included a book that was critical of the practices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79308</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79308"/>
		<updated>2013-10-05T15:45:04Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;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, &amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot; [and] asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Information about the principles and practices behind XP was disseminated to the wider world through discussions on the original Wiki, Cunningham's WikiWikiWeb. Various contributors discussed and expanded upon the ideas, and some spin-off methodologies resulted (see agile software development). Also, XP concepts have been explained, for several years, using a hypertext system map on the XP website at &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6), spreading his ideas to a much larger, yet very receptive, audience. Authors in the series went through various aspects attending XP and its practices. The series included a book that was critical of the practices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79307</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79307"/>
		<updated>2013-10-05T15:43:20Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
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.&lt;br /&gt;
Extreme Programming was created by Kent Beck when he was asked to work on the Chrysler Comprehensive Compensation System (C3) payroll project.&lt;br /&gt;
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.&lt;br /&gt;
The exact words of Kent Beck on starting with the development of a new methodology are as follows:[..................]&lt;br /&gt;
&amp;quot;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, &amp;quot;Damn the torpedoes, at least this will make a good article,&amp;quot; [and] asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.&amp;quot;&lt;br /&gt;
Ron Jeffries was also asked to join the project by Beck.He acted as a coach to the project team.&lt;br /&gt;
&lt;br /&gt;
Information about the principles and practices behind XP was disseminated to the wider world through discussions on the original Wiki, Cunningham's WikiWikiWeb. Various contributors discussed and expanded upon the ideas, and some spin-off methodologies resulted (see agile software development). Also, XP concepts have been explained, for several years, using a hypertext system map on the XP website at &amp;quot;http://www.extremeprogramming.org&amp;quot; circa 1999.&lt;br /&gt;
Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN 0-201-61641-6), spreading his ideas to a much larger, yet very receptive, audience. Authors in the series went through various aspects attending XP and its practices. The series included a book that was critical of the practices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79306</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79306"/>
		<updated>2013-10-05T15:21:25Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79305</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79305"/>
		<updated>2013-10-05T15:21:13Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right|50px]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79304</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79304"/>
		<updated>2013-10-05T15:20:51Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79303</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79303"/>
		<updated>2013-10-05T15:20:24Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|right]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79302</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79302"/>
		<updated>2013-10-05T15:19:36Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png|frame]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/XtremeProgramming&amp;diff=79301</id>
		<title>CSC/XtremeProgramming</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/XtremeProgramming&amp;diff=79301"/>
		<updated>2013-10-04T22:58:08Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Extreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
This type of programming methodology was created by Kent Beck when he was working on a project entitled &amp;quot;Chrys;er Comprehensive Compensation System(C3).When he became the project leader in March 1996,he revamped the methodology for this project and also wrote a book on the same entitled &amp;quot;Extreme Programming Explained&amp;quot; in October 1999.The individual practices enlisted in Extreme programming have been around for a long time on their own.Extreme programming just combines all these practices and takes them to the extreme levels.&lt;br /&gt;
 series went through various aspects attending XP and its practices. The series included a book that was critical of the practices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/XtremeProgramming&amp;diff=79300</id>
		<title>CSC/XtremeProgramming</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/XtremeProgramming&amp;diff=79300"/>
		<updated>2013-10-04T22:56:18Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: moved CSC/XtremeProgramming to CSC//ECE 517 Fall 2013/ch1 1w40 ao&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[CSC//ECE 517 Fall 2013/ch1 1w40 ao]]&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79299</id>
		<title>CSC//ECE 517 Fall 2013/ch1 1w40 ao</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC//ECE_517_Fall_2013/ch1_1w40_ao&amp;diff=79299"/>
		<updated>2013-10-04T22:56:18Z</updated>

		<summary type="html">&lt;p&gt;Okdalvi: moved CSC/XtremeProgramming to CSC//ECE 517 Fall 2013/ch1 1w40 ao&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Xtreme Programming''' ==&lt;br /&gt;
&lt;br /&gt;
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 &lt;br /&gt;
different sizes and scale. Frequent releases in short development cycles is one of the major fundamentals of extreme programming similar to agile software development.&lt;br /&gt;
The intention behind this is improved productivity and quality of software and higher customer satisfaction. [[File:Extreme_Programming.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Criticism around agile revolves around drawbacks such as unstable requirements and the lack of documentation as far as the design specification is concerned.&lt;br /&gt;
&lt;br /&gt;
== '''History''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Current State''' ==&lt;br /&gt;
&lt;br /&gt;
== '''Concept''' ==&lt;/div&gt;</summary>
		<author><name>Okdalvi</name></author>
	</entry>
</feed>