Subscribe by Email


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. 


Saturday, May 26, 2012

Some detail about usage of work products in extreme programming?


Extreme programming or XP gained popularity as one of the most effective agile software development practices in the late nineteen’s. This methodology came in to existence for the purpose of the implementation of the software projects using the 12 predefined practices.

These practices are a refinement of the best practices of the software engineering. The whole process is intended in making improvements to the quality of the software system and its ability to respond to the needs of the customer. 

The frequent releases of the software system or application are regulated by the iterations or the short development cycles. There are certain elements of the extreme programming which include:
    1. Pair programming
    2. Extensive code reviews
    3. Unit testing of the whole code
    4. Avoiding programming of the features and functionalities that are not required at the moment.
    5. Keeping a flat maintenance structure.
    6. Maintaining clarity as well as the simplicity in the code.
    7. Expecting changes in the requirements of the customers.

The above mentioned elements make the whole development process all better. During Kent Beck’s work on his C3 (Chrysler comprehensive compensation system) pay roll project, he developed this agile software development methodology. 

Extreme is nothing but as the name suggests, a process of implementing the best practices of the software engineering to the highest levels possible. Extreme programming has always been surrounded by a lot of buzz regarding the environments in which it was used and is being used. 
Its practices always demands high discipline making them appear to be so rigid. On the other hand if an approach is quite flexible and less rigid, schedule makes it easy to incorporate complex features in to a fully developed software system or application. 
The practice continuously integrating the whole software system helps a big deal in keeping the whole development on the right track. With its 4 activities (namely coding, testing, listening and designing) the extreme programming is aimed at achieving the below mentioned goals:
  1. Organize the people to produce software products with high quality and productivity.
  2. Reduce the cost of the changes in the customers’ requirements with the multiple short development cycles.
  3. Define changes as the natural and desirable aspect of the software projects.

About Work products in Extreme Programming


This article is focused up on the work products of the extreme programming. In one research it was found that the extreme programming helped in many of the projects in reducing the costs and time to market the software products and improved the productivity.  
- Describing the work products of a software methodology helps in checking out the problems of the interpretation.
- Extreme programming is not a small methodology therefore it involves a large number of intermediate work products. 
- But to say as a whole, the work products are quite necessary.
- People who are just beginning with the extreme programming need to know what are actually acceptable work products. 
- The stake holders need to know what they are entitled to ask for. 
- Three work products are mentioned that are typical to an extreme programming development process. 
- The number of the work products depends on how they are counted. 
- In the extreme programming the work products are distributed across the roles i.e., to say they are light. They are:
  1. System architecture
  2. Common domain model
  3. Screen drafts
There are dozens of the work products and doing each of them might be a hectic work! But on the other hand if you skip out many of them your project will lose its visibility as well as its alignment.
- You cannot pick some core work products since even lose of one product can hamper the whole project development. 


What are the core practices of extreme programming?


Over the time the extreme programming has proved itself to be a great helping hand as an agile practice in improving the overall quality and productivity of the software products according to the ever changing requirements of the customer.
Being an agile practice it frequently releases software products with the short development cycle which is achieved through time boxing. During the whole process several check points are introduced in to the development cycle where the new customer requirements can be easily incorporated in to the software system.


Elements of Extreme Programming


There are several elements of the extreme programming like:
1. Pair programming
2. Extensive code review
3. Unit testing
4. Maintain simplicity and clarity of the code
5. Providing a flat management structure and so on.


Values of Extreme Programming


The extreme programming is guided by values, rules and principles! There are 5 values namely:
1. Communication
2. Simplicity
3. Feedback
4. Courage
5. Respect


Principles of Extreme Programming


The rules of the extreme programming govern its all time activities. Three basic principles have been defined for the extreme programming as mentioned below:
1. Feedback
2. Assuming simplicity
3. Embracing change


core Practices of Extreme Programming


The extreme programming is said to be composed of 12 practices which is what we going to discuss in this article. The 12 practices have been grouped into sets of four:

1. Fine Scale Feedback: This area involves 4 following practices:
(a) Programming in pairs: This agile practice involves 2 programmers working side by side one of which is a driver and other is an observer. The driver is suppose to type in the code while the observer holds the duty to review each line of the code typed.

(b) Planning game: This is the most important practice in the extreme programming. The game here is the name given to a meeting that is held once for every iteration of the development process with the purpose of guiding the product in to delivery. It has 2 parts:
- Release planning: It has 3 phases:
    + Exploration phase
    + Commitment phase
    + Steering phase
- Iteration planning: It too has got the same phases as the release planning.

(c) Test driven development or TDD: This is another agile practice relying on the iterative and incremental approach and refactoring of the code for improving its overall design.

(d) Whole team: Extreme programming forces the need of the customer availability at all the times for questions.

2. Continuous Process: This process is constituted of the following 3 practices:

(a) Continuous integration: In extreme programming it is required that only the latest version of the software system or application is worked up on.  The current version of the software that is available with the different team members must be uploaded to the code repository in every few hours since this avoids delays in the project cycle.

(b) Design improvement or re-factoring of the code: Since only the required functionalities are implemented, this may cause the system to hang. This may require dual maintenance then. In such cases changes in one part of the program affect the other parts of the code. At such times the refactoring of the code is needed.

(c) Small releases: The software is delivered via the frequent releases of the live functionalities. With these small releases the customers gains the confident about the progress of the development and the concept of the “whole team” is also maintained. The customer as well is able to come up with the suggestions regarding the development of the software.

3. Shared Understanding: This involves the following 4 practices:
(a) Coding standards
(b) Collective code ownership
(c) System metaphor
(d) Simple design

4. Programmer Welfare: It involves development at a “sustainable pace”.


Friday, May 25, 2012

Explain Extreme Programming XP life cycle?


XP or extreme programming is one of the best agile software development practices ever known since the advent of the agile software development concept. This agile software development methodology was developed with the intention of making improvements in the quality of the software product and responsiveness to the ever changing requirements of the customer. 

Being an agile software development methodology, it involves the frequent releases of the software product in short development cycles (this methodology is called time boxing). This type of methodology is intended to improve the overall productivity and also helps in introducing the check points where new customer requirements can be carefully adopted. 

Elements of Extreme Programming


There are certain elements of the extreme programming few of which are as mentioned below:
  1. Programming in pairs.
  2. Extensive code review.
  3. Unit testing of the whole software code.
  4. Avoid programming of the functionality and features until there is an actual need of them.
  5. Provides a flat management structure.
  6. Maintains simplicity.
  7. Maintains the clarity of the code.
  8. Expects the changes in the requirements of the customers with the passage of time for the better understanding of the problem.
  9. Maintains frequent and effective communication with the programmers, developers and customers.
This article discusses the life cycle of the extreme programming. In the nineteen’s there was a lot of fuss regarding the extreme programming since the environments being adopted for it were quite different from those that were used earlier. 
All the practices of the extreme programming require high discipline making the observers think that the practices are too rigid and should be left unfinished or reduced on the individual sites. 

Extreme Programming Life Cycle


- Simplest example would be of reducing the practice of integration tests to some mutually agreed dates. 
- This helps greatly in coping with the rush of generation of the artificial stubs converting the whole hard process in to a relaxing schedule.
- In this way it will be easy to develop the complex features over a period of certain number of days. 
- Such an approach also helps in investing the development process checking whether or not it is following the right track or not. 
This development methodology is evolving further till date acquiring an assimilation of various experiences in the field of software engineering. 
- First step in this process is setting up the goals.
- The primary goal is to organize people to produce software productively and with higher quality. 
Another goal is to minimize the budget of both the money and the time by making use of multiple short development cycles.  
- After goals come the activities. There are four main activities have been defined:

1. Coding: It has been argued over and over that the code forms the most important part of the software development process since no code means no working project.
2. Testing: In testing phase also the XP follows the same philosophy i.e., “if a little can do this much good! More can do much better!” Two types of tests are carried out namely unit and acceptance tests.
3. Listening: This stage involves listening to the customer’s needs and understand what business logic is required.
4. Designing: It involves creating a design structure so that the dependencies withing the program can be avoided.


Facebook activity