Subscribe by Email


Showing posts with label Extreme Programming. Show all posts
Showing posts with label Extreme Programming. Show all posts

Wednesday, June 6, 2012

List out the differences between extreme programming and scrum?


The scrum development and extreme programming as we all know are two very great and popular agile software development processes. 
The common thing between the two is that both of these are agile processes, but on the other side there are a lot of differences too! 
In this article we are going to discuss the same i.e., what are the differences between extreme programming and scrum? There is no doubt in the fact that the two processes are very well aligned with each other! 
It often happens while following one of these processes that if you been following extreme programming you will feel as if you had been following scrum throughout the development process and vice versa.

Differences between Scrum & Extreme Programming


The differences between the extreme programming and scrum are quite subtle but they are important things which distinguish between the two processes from each other. Below mentioned are some of the differences between the scrum and the extreme programming:

Difference #1:
- The first subtle difference between the two is the duration of the iterations.
- In extreme programming the iterations are usually short i.e., one or two weeks long. 
- On the other hand the scrum iterations are quite long and may range from several weeks to months. The sprint is the name given for the iterations carried out in the scrum methodology.

Difference #2:
- In scrum, any changes during the development process are not supported by the scrum and neither do any changes are allowed in the iterations or sprints. 
- Once the sprint planning meeting is completed and it is decided to deliver a set of product back log items, the plan is not altered till the very end of the sprint. 
- In contrast to scrum, extreme programming iterations are known to be quite flexible since they allow changes to be incorporated in to its iterations. 
- But the changes can be made only if the team has not started working on a particular feature. And also the feature to be changed must be of the equivalent size of the feature that is to be replaced and has not been built up.

Difference #3:
- Extreme programming, has been known to work strictly in the order of the priority assigned to the various features and aspects. 
- These features and functionality had already been prioritized by the customers. 
- The customer is not considered to be the whole owner of the extreme programming product, whereas in the scrum it is do considered. 
- In the scrum development, the features are not prioritized by the customer instead the customers prioritize the product’s back log items.
- It is then the responsibility of the development team to determine the sequence for the development of the back log items. 
- In the extreme programming, the development always starts from the highly prioritized features and functionality.
- In scrum, the developers think that starting from a highly prioritized feature is not always a good option. They think that working up on low priority items makes more sense.

Difference #4:
- Under the concept of the scrum development process, no particular engineering practices have been stated. 
- But the extreme programming does prescribes some engineering practices like the TDD or test driven development, automated testing, simple designing, programming in pairs, refactoring and so on. 
But following the same practices is not always desirable! It is needed that the teams should incorporate their own values.

The above mentioned differences are quite small but they do make considerable set of difference and can have a profound impact on the development team. 
The extreme programming works well when it is not mandated and the teams are left to discover their own practices. Scrum methodology when worked out with time boxed iterations and additional focus can work wonders. 


Sunday, June 3, 2012

What is meant by CRC cards? How they are used in extreme programming?


In its full form the CRC cards are known as “class responsibility collaboration cards” and have been considered to be a brain storming tool in the field of designing of the object oriented software. 
The concept of the class responsibility collaboration i.e. the CRC cards was introduced by the two people: Kent Beck and Ward Cunningham. 

What is written on index cards used in CRC cards?


- These cards find their typical use in the determination of the classes that are needed and also regarding their interaction among themselves. 
- The creation of a typical CRC card is regulated by the use of index cards on which the following 5 basic things are written:
  1. The name of the class.
  2. If applicable its super classes and sub classes.
  3. The responsibilities of the class.
  4. The name of the other classes involved in the collaboration for the fulfilment of the responsibilities.
  5. The name of the author.

What kind of CRC card should be used?


- To keep the complexity levels of the program design at minimum it is recommended that a small card is used. 
- Such a card helps the designer to focus up on the essential requirements of the class and thus preventing the designer from falling unnecessarily in to the details of it. 
- Also, the designer is prevented from getting in to the inner workings at one time when so much of detail holds the chances of becoming probable counter- productive thing. 
- The class responsibility collaborative cards are a means for forcing the designer to keep the class refrained from too many responsibilities.
- Since the cards have the property of portability, hence it becomes easy to lay them out on a table and re arrange them according to the designs discussed by the team members with the other people. 

Method for determining type of card


- A method for determining the types of the cards required is recently becoming very common. 
- The method consists of determining what all cards should be created by reading all the specifications regarding the program that is being designed.
- It also takes in to consideration of each noun as a class and on the other hand each verb as a responsibility of the class or the noun to which it rightly belongs. 
- To be more precise, you will find that the existence of the nouns or the verbs does not calls for a class or responsibility in the program, though it is still considered to be a good point to start with. 

Below we have given an example of the class- responsibility collaboration card’s format so that it becomes easy for you to understand how actually it displays the information:

- Name of the class: super class
- Sub classes: (lists the name of the classes that are derived from this class)
- Responsibilities: list all the responsibilities of the classes and description of the methods being used.
- Collaborations: this lists the relationship of the class to the other classes.

Use of CRC cards in Extreme Programming


- The CRC cards have played a great role in helping the developers design the software system or application as a team. 
- The best thing with the use of the CRC cards is that they allow the developers to break away from the usual monotonous procedure and follow new routines.
With the help of the CRC cards the entire project team is able to give the individual contribution in the development of the software project.
- This further leads to the incorporation of more individual and creative ideas in to the design of the system.
- For every object there is an individual CRC card. 


Saturday, June 2, 2012

What is meant by the term system metaphor? What is its use?


System metaphor- well this is a term which is related to the extreme programming but less known of! What is the system metaphor and what is its use and what is the need? 
We shall be discussing all these aspects of the system metaphor in this article. 

"A system metaphor in the simplest words can be defined as a story that any one includes customers, programmers and managers) can tell reading how a system works".

Reasons why we need to use System Metaphor


There are several reasons for why we need to use the system metaphor.  They have been listed below:
  1. Architecture: The metaphor is consider to shape the software system or application exactly as it is required by us with the help of identifying the key objects and giving suggestions regarding the aspects of their interfaces. The dynamic and the static models of the system are supported by the system.
  2. Shared Vocabulary: A common system of names for the objects and relationships that exist between them are suggested by a system metaphor only and thus it provides a powerful vocabulary for the developers and programming experts. The vocabulary created is shorthand and specialized.
  3. Common Vision: System metaphor comes in to as a very handy tool that helps in enabling all the stake holders to agree up on the working of the software system or application. The key structure of how the problem and the solution have been perceived is provided by the system metaphor itself. Overall, this helps in understanding the working of the system well.
  4. Generativity: A system metaphor by the means of its analogies can get you new ideas regarding the problem and its solution and can further dig out many other important issues.

How to choose a System Metaphor?


- Even though choosing up a proper system metaphor for your system may take some time and efforts, it is the best option that you have for exploring several possibilities just by looking at the system through various views. 
- If by combining two metaphors you are getting the one that is fit for your then go for it. 
- Now what if you come to know that you could have got a better metaphor for your system than what you have already opted for? No need to worry, you can still develop your system in that direction. 
- Such a measure will also help you in achieving a greater understanding of your problems. 
- What if you are not able to think of any good metaphors? 
- There are some naive metaphors always available to your rescue. Below mentioned are some examples of the system metaphors:
  1. Use of a pension tool as a spreadsheet.
  2. Using desktop metaphor for graphical user interface.
  3. Buckets, lines and bins in C3 payroll.
  4. Bills of materials in VCAPS.
  5. A double entry system being used as book keeping and spreadsheet.

More about System Metaphor


- Suppose you sign a contract with a client for developing some software system, what you do next? 
- You search for a good system metaphor that will guide the development of your software system or application.
- A metaphor very well guides the development process of a project. 
- Not any one can choose a good metaphor, it requires skills, practice and of course deep knowledge.
- A system metaphor is nothing but a metaphor having a simple design and some essential qualities that the original needs to have. 


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. 


Facebook activity