Monday, April 19, 2010

The Characteristics of Agile Software Processes

- Yogesh A Sakurikar (yogesh_skr@yahoo.com)


Agile software processes are very popular and is practiced by many software organizations. It helps improving the delivery of the real system into small units and hence increasing the business value.

Lets take a look at the characteristics for Agile software process


  1. Modular
    1. Processes broken down into small activities, these activities are capable of transforming the software vision into reality.
    2. Activities are used as good tools in Agile
  2. Iterative
    1. Agile focuses on shorter cycles for set of activities; with each cycle certain activities will be completed.
    2. Generally these are as small as 4 to 6 weeks
    3. Since 100 % work is not completed, these cycles are repeated.
  3. Adaptive
    1. Risks can be introduced during the cycles (iterations), these needs to be addressed and planned to mitigate.
    2. Agile process helps adding those risks under the logs, which would be then handled either in same cycle or next, based on priority.
    3. Some of the activities can be discarded if the risk turned down.
    4. Activities can be back logged and handle in next cycles
  4. Collaborative
    1. Communication is the vital part of the agile processes
    2. Understanding the process of fitting developed pieces together
    3. All the teams integrate and work closely
  5. Quality of life
    1. Agile processes emphasizes on work balance.
    2. Self-organize teams gives the distinctive feature to achieve work balance
    3. Teams are more alive.
  6. Convergent
    1. As the iterations repeated, the system becomes closer to reality
    2. Teams have more control over the success with repeated increments.
  7. Parsimony
    1. Minimum number of activities per cycle to minimize risks
    2. By minimizing the risks, developers can deliver quality system.
  8. Incremental
    1. Agile does not build whole system at once, instead breaks it down in small cycles with manageable set of activities.
    2. The partitions of nontrivial system increments which may be developed concurrently at different times.
    3. Each piece unit tested independently
    4. With each piece completes unit test, integrated into system.
  9. Time Bound
    1. Small cycles are good for software developments
    2. Each cycle has a time span (around 4 – 6 weeks)
    3. All the activities are not taken; instead activities which can be done within the fixed pan will be taken to achieve the goals.
    4. Functionalities might be reduced to manageable limit of the cycle, rescheduled for next cycle if needed.
  10. Inverted Pyramid
    1. Developers are empowered; they self-organize to accomplish the task at hand.
    2. Coaches and team leaders work for the team; they are in charge of resolving the issues that the developers can't solve for themselves.
  11. Better Liberty
    1. People in an Agile Software project feel more liberated
  12. Constant Learning and knowledge sharing
    1. People in an Agile Software project are constantly learning, and sharing knowledge, in an ad hoc way, because by definition agility is based on continuous short feedback cycles of inspection

No comments: