Subscribe by Email


Showing posts with label XP. Show all posts
Showing posts with label XP. Show all posts

Tuesday, May 29, 2012

When should Extreme Programming be used?


Extreme programming or XP as it is commonly called as has been known to be a very effective and reliable agile software development methodology having its foundation laid up on the principles of agile development. 
The first ever project that made use of extreme programming was done in the year of 1996 in the month of March. The project was quite successful and since then many companies of different sizes began using the extreme programming software development methodology for developing their software products all over the world. 

The extreme programming works out successfully every time since it stresses the satisfaction of the customers. The extreme programming does not makes promises that it will deliver the software with all the possible ways you expect it rather it delivers the software product with all the features that you require the most. 
The developers are empowered in a way to confidently respond to the ever changing needs of the customers in whichever stage of the development cycle required. 

How Extreme Programming improves the quality of software?


5 ways have been defined in which the extreme programming helps in improving the quality of the software and its productivity:
1.     Communication
2.     Simplicity
3.     Feedback
4.     Courage and
5.     Respect

When the Extreme Programming should be used?


- A software development process does not suit for all the types of the software projects.
- Extreme programming must be employed for the complex projects which require a clean and simple design void of any bombastic jargon. 
- The simple rules of the extreme programming make it easy to be implemented in most of the software projects.
- Extreme programming elements individually do not make any sense but do make sense when put together. 
- These elements and rule may seem to be very awkward at first but they are based up on sound principles and are guided by sound rules. 
- The extreme programming makes the whole development process very collaborative and works well with the projects in which the active participation of the customer is required. 
- In extreme programming once the product team work is achieved, its rules can be modified to fit the requirements of the company. 
- The activities which show less productivity are trimmed to reduce the budget of the development process. 
- The need for extreme programming grew out of the demands for short productive cycles which could satisfy the rapidly changing requirements of the industry. 
- The extreme programming has always attracted controversy whenever an environment different from its original one has been used. 
- The extreme programming demands for high discipline and hence some of the practices involved in the extreme programming are thought to be very rigid to be reduced or left unfinished. 
- But the extreme programming works according to a very relaxed schedule which can be designed by the developers. 
- This prevents frustration and creation of stubs to pass the end of day testing. 
- Thought the schedule is very lenient, a periodic integration is always required. 
- It is needed to detect the work being done in non compatible efforts before too much of the efforts are wasted in the wrong directions.

However, apart from all these positive there are a few negative aspects of the extreme programming which should always be kept in mind before you implement it for the development of your software project. 
- It lacks structure and documentation and requires senior level developers. 
- It calls for frequent meetings with a great exposure to the customers. 
- You can even land in much difficult contractual negotiations. 


What are the elements and rules of extreme programming?


Since the advent of extreme programming as a very popular iterative and incremental development process, it has been used for continually making quality software products and increasing the responsiveness to the ever changing needs and requirements of the customers and clients. 
Being an agile software development process it involves releasing of the software product in the form of “frequent releases” with all the short development cycles. It employs other techniques like the time boxing technique. 
The whole of the extreme programming has been aimed at increasing the productivity of the development cycle. Throughout the development cycles so many check points are introduced where the changes in the customer requirements or any other new requirements can be successfully and easily be included in the software development cycle. 
There are certain elements and rules of the extreme programming that we are going to discuss in this article. 

Elements of the Extreme Programming


  1. Programming in pairs
  2. Extensive code reviews
  3. Subjecting the code to unit testing
  4. Pair negotiation
  5. Avoiding programming the features that are presently not required by the software system or application.
  6. Stand up meetings
  7. Acceptance tests
  8. Flat management structure
  9. Iteration plan
  10. Simplicity of the code
  11. Clarity of the code
  12. Release planning
  13. Expecting changes in the requirements of the customers and clients.
  14. Frequent and effective communication among all the stake holders and the customers.
The process no doubt has got a lot of criticism because of the following problems:
  1. Unstable requirements
  2. Non documented compromises of the user conflicts
  3. Lack of an overall documentation or specification

Rules of Extreme Programming


The rules that are followed by the extreme programming, were first stated in the year of 1999 by Don Wells at the official web site of the extreme programming. In total there are 29 rules that have been stated under different categories as mentioned below:
  1. Planning
  2. Managing
  3. Designing
  4. Coding and
  5. Testing
1. Planning:
 (i) Writing the user stories
(ii)  Creation of the release schedule
(iii) Making frequent releases
(iv)  Dividing the project into iterations
 (v)   Iteration planning
2. Managing:
 (i)  Providing a open work space
(ii)  Setting a sustainable pace
(iii) Stand up meeting
(iv) Measuring the project velocity
 (v)  Moving people around
(vi)  Fixing XP
3. Designing:
 (i)  Simplicity
(ii)  System metaphor
(iii) Using CRC cards
(iv)  Creating spike solutions
 (v)   Re-factoring
4. Coding:
 (i) All time customer availability
(ii) Agreeing with the standards
(iii) Coding the unit test first
(iv)  Pair programming
 (v)  Frequent integration
(vi)  Using collective ownership
5. Testing:
 (i)  Unit tests
(ii)  Code must pass all unit tests
(iii) Acceptance tests


The first three categories are carried out explicitly since it was claimed by the critics that these are not supported by the extreme programming. 

Another set of rules was kept forward by the Ken Auer in the agile universe in the year of 2003. Ken Auer thought that the extreme programming is some what defined by its rules rather than being defined by its practices since they are subjected to ambiguity and variation. He had set out the rules under two different categories as mentioned below:
  1. Rules of engagement: Rules under this category are known to dictate the environment in which the software development is carried out effectively.
  2. Rules of play: Rules under this category are meant for defining all the activities whether be minor or major and rules that define the frame work for the development of the software under the rules of engagement.


Monday, May 28, 2012

What are strengths and weaknesses of Extreme Programming - XP?


The extreme programming is bound with some strengths and weaknesses that we are going to discuss in this article. Extreme programming was brought in to use during the era of nineteen’s. At that time it came to be recognized as one of the best agile software development practices and still holds the same reputation despite arguable views of its many critics.
Many different scale companies like small scale companies and large scale companies have been benefited by the use of this agile methodology i.e., the extreme programming. Over the years the extreme programming has guaranteed the customer satisfaction and has proved itself also. The software were delivered exactly they were required to be.

Benefits & Advantages of Extreme Programming


- The developers and programmers as well as the customers are empowered by the extreme programming so that everyone can confidently play up its part no matter at what stage the development process is. 
- The extreme programming has been well known for the spirit of team work it inculcates in the development environment. 
- Extreme programming as we know is an agile software development process based up on the releasing the software product frequently with every iteration of the development cycle. 
- Many other techniques like time boxing are also incorporated with the extreme programming to together make up a very efficient software development process.
- The extreme programming contributes greatly in the improvement of the productivity of the software.
- It also contributes in the introduction of the check points that facilitate the incorporation of the changes or modifications in the requirements at all the phases of the development. 
Customer is given a lot of empowerment in extreme programming. 
- This is so because it lies in the discipline of the extreme programming to maintain frequent and most possible effective communication with the customer. 
- Extreme programming as the term itself suggests that the process involves the beneficial elements operating at their extreme level.

All these positive points of the extreme programming are its strength. All these plus points make the extreme programming popular among its users.

Weaknesses & Drawbacks of Extreme Programming


Now let us discuss some of the weaknesses of the extreme programming since every process has some pros and cons. Critics have pointed out many potential drawbacks such as:
     1. Unstable requirements
     2. The user conflicts are not documented
     3. Extreme programming lacks an overall design specification

- The extreme programming has always been under arguments due to the above mentioned weak points.
- It has been claimed by the critics of the extreme programming that having a customer aboard can be a source of stress to some developers and programmers.
- Some have also mentioned this as a factor that can lead to micro management i.e., the whole development process will be governed by the customer who literally does not have any proper technical knowledge.
- In some cases, the requirements are expressed as automated acceptance tests instead of being expressed as specification documents. 
- In such cases, the retrieving of the requirements takes place through incremental.
- Some even believe that the extreme programming is meant for the senior developers only and that the developers with less experience or less knowledge cannot handle it.
- The lack of the detailed requirements documentation can sometimes lead to what is called the scope creep.  


Who benefits from extreme programming and how?


Extreme programming has been benefitting almost every one since its advent! Here in this article we are going to see who is benefited most from the extreme programming.
It enables the users to give sufficient feedback so that it can be further improved up on. It gets the whole team sticking around the project at hand and regulates effective development of the software. 

In extreme programming, whoever contributes in the development is considered to be an integral part of the whole team. The customer is considered to be the business representative here. The business representative is supposed to sit with the tem in their working hours and work along with them.
Very simple practices like planning and tracking are used to make decisions on what should be done in the next iteration and when it will be complete. The team is driven by the business values and the software is released in a series of small fully integrated releases only when they have passed some customer defined tests.
In extreme programming, the code is obsessively tested by the extreme programmers and developers who work together in pairs making an effort to continually improve the design satisfying the current development conditions. 
With extreme programming, the entire system can be kept in an integrated and running condition. The whole of the production code is written in pairs and worked up on together. The code is written in such a way that every one is able to easily grab the logic that has been implemented. 

Core Practices in Extreme Programming


The below mentioned are the core practices involved in extreme programming:
      1.   Whole team
      2.   Planning game
      3.   Small releases
      4.   Customer tests
      5.   Simple design
      6.   Pair programming
      7.   Test driven development
      8.   Design improvement
      9.   Continuous integration
     10.  Collective code ownership
     11.  Coding standard
     12.  Metaphor
     13.  Sustainable pace

Who all are benefited from extreme programming?


- By looking at these core practices one can easily see that the extreme programming takes care of all the aspects of the programming as well as of all the stake holders who are involved in the development process. 
- With the extreme programming the developers and the customers are able to see the exact picture of the software system or application and its work flow. 
- All the team members of an extreme programming team sit together and work up on the problem. 
It is beneficial for the whole development process to have a customer who is a real end user. 
- The main purpose of the customers is to define the customer acceptance tests which are then used to define the requirements and specifications of the system or application. 
- On the other hand the manager is considered to be responsible for the management of the external communication and the coordinating activities. 
- The contribution of every team member of the extreme programming team is unique in its own way and is the best that can be provided. 
- As such it is not necessary that only individuals with expert skills! But whatever they contribute is something special out of their abilities and skills. 

Two questions are taken care of in the extreme programming as mentioned below:
      1. What will be accomplished at the end of the due date of the software project?
      2. What is to be done in the next iteration?

These two questions are addressed by the following two activities:
      1. Release planning and
      2. Iteration planning

Above all,  the one that is benefited the most is the customer and after this comes the number of other stake holders. 


Sunday, May 27, 2012

What are the common mistakes and misunderstandings in extreme programming?


The extreme programming saw its first use in the year of 1996 when it was declared as an agile software development process. Because of its down to earth and effective rules it gradually gained wide popularity among the programmers and developers and is still on the edge of the evolution. It has been observed to be quite successful with all the kinds of companies’ whether small scale or large scale. The extreme programming facilitates the daily communication between the customers and the developers so that they are aware of the changing requirements of the customers.

The extreme programming though being so popular has always attracted controversy due to some mistakes and misunderstandings regarding its usage and concepts. In this article we are going to discuss about these common mistakes and misunderstandings regarding the extreme programming. 

Misunderstanding # 1:
- Some people have a misunderstanding regarding the flexibility of the extreme programming development process.
- They think that having an on- site customer making changes in the requirements can cause the team costly re-work and the project may expand beyond its scope and of course budget.
- The extreme programming is dependent to some extent up on an assumed unified client’s point of view so that the programmer faces no difficulty in programming rather than on documentation. 
- The same situation arises when many organizations compete to get the shares of the projects.

Misunderstanding # 2:
- One other misunderstanding regarding the extreme programming is that the requirements are considered not to be expressed as specific documents but as the automated acceptance tests. 
- In extreme programming all the requirements are not retrieved in advance like in other development processes but they are obtained one by one in successive iterations and increments. 

Misunderstanding # 3:
- Another misunderstanding is that the programmers and developers are required to work in pairs compulsorily. 
- It is not so but it depends up on the situation, budget and quality level of the software project required. 
- If the time is less for testing of the code, then it is always advisable that the programming is carried out in pairs. 

Mistake # 1:
- Another mistake that is made by the developers is that they carry out most of the activities on fly in extreme programming. 
- This follows from the idea that the simplest necessary feature is implemented first and later the complex features are added if required.
Most of the people fear that such kind of activities can later force the team to re design the whole program. 
Some think that having an on- site customer can cause a lot of stress to the development team and micro management may take place with the customer who basically does not have any knowledge of the technology dictating the whole development process. 

All the aspects of the extreme programming are considered to be chained together. Even if one of them gets loosen then the whole programming will be spoiled. It is believed by most of us that extreme programming is carried out by small team consisting of around 10 members! But this is not so, the size of the team can be expanded as required by the project but it should always be the minimum possible number. 
Another alternative here will be to break down the project in to smaller divisions and also divide the team as per the project divisions to keep the discipline of the extreme programming. 
Most of the people view the extreme programming as a rigid process which is absolutely wrong! The extreme programming does allow modifications in its rules but on the condition that its spirit is not violated.
 


State the values that underlie the attitude and practices of a healthy XP project?


The date of 6th March, 1996 saw the first use of the extreme programming or XP as it is commonly known as for the development of a software project. Eventually, it gained so much of popularity that no one ever had thought of despite its so many critics. It came to be known as one of the best agile software development practices. 
But what was the reason behind its popularity?
The credit of the popularity of extreme programming among the software developers is given to the values underlying the attitude of the extreme programming. Therefore this article is dedicated to the values that underlie the attitude and practices of a healthy XP project.

Values that underline the attitude & practices of XP



Value # 1:
- The extreme programming has its way of handling projects of all sizes i.e., whether large or small or medium. 

Value # 2:
- The first value that underlies the attitude and practices of a healthy XP project is that it takes care of the customer satisfaction.
- The extreme programming has been able to deliver the product exactly as the customer wants since years.
The extreme programming has proved itself when it comes to empowering the programmers and developers to easily catch up with the requirements of the customers which are always changing even in the later phases of the software development life cycle or SDLC.

Value # 3:
Another positive aspect of the extreme programming is that it emphasizes team work. 
- It provides equality to all the team members i.e., managers, developers, programmers and so on. 
It regulates the collaboration among the team.
- With the extreme programming a simple yet effective environment is created for the development of the project which does not just accelerate the rate of development but also increases the productivity of the whole team.
- The teams are thus imparted the quality of self organization.
- A constant communication is maintained among the team members and their fellow customers. 
- There are 5 ways in which a project is affected by the extreme programming for the good:
  1. Communication
  2. Simplicity
  3. Feedback
  4. Courage and
  5. Respect
Value # 4:
Since the very beginning of the development process, the design is tested and continuous feedback is obtained. 
- This facilitates the early delivery of the software product to the customer with the desired changes incorporated in to it. 

Value # 5:
- The success of the project depends largely up on the individual contributions of the team members which also deepen their respect for each other.
- This enables the extreme programming team to respond with courage to the changing requirements.

More About These Rules


- These rules may appear to be naive for the first time to someone but they are quite effective and sound. 
- During the course of the development of the project one will eventually realize that these values or rules define the goal of the whole process. 
- These rules can be changed to some extent according to the requirements of the organization.
- The customers enjoy the privilege of being a part of the development process and the developers and programmers contribute to their fullest even if they are not so experienced. 
- The communications and the relationships are managed by the managers. 

All the above mentioned 5 values maintain the discipline of the extreme programming and keep the whole team together. 
With the extreme programming the whole system can be kept under a running condition and integrated. The code is written by the programmers in pair (pair programming) and the code is written in such a way that everybody is able to understand it and suggest for making improvements to it. 


Facebook activity