Agile Development introduction

What is agile development?

Agile development is a common framework for iterative and incremental development. Some of commonly used agile practices can be listed as XP (extreme programming), Scrum and Crystal. We will mainly focused on Scrum. Even though may have different viewpoints of agile development they all follow "Agile Manifesto".

In simple terms, agile development is a set of principles that can be used to incremental and iterative development of a product. Comparing to other development methodologies, this support changeability and integrity of the product. One can develop the more optimal solution using agile development frameworks. 

Agile Manifesto

  • Individuals and Interactions over processes and tools
  • Working Software over comprehensive documentation
  • Customer Collaboration over contract negotiation
  • Responding to Change over following a plan


    Individuals and interactions
    Self-organization and motivation are important, such as co-location and pair programming are highly considered.

    Working software
    Prototyping and skeletons are used instead of documentations and report writing. Agile development more focused on the software itself than documentations.

    Customer collaboration
    In each cycle the the customer gives feedback and suggestions. Customer requirements also tend to change overtime. Since this is a iterative approach they will be handled effectively the support of customer.

    Responding to change
    Agile software development methods are focused on quick responses to change and continuous development.

    "The Agile movement is not anti-methodology, in fact many of us want to restore credibility to the word methodology. We want to restore a balance. We embrace modeling, but not in order to file some diagram in a dusty corporate repository. We embrace documentation, but not hundreds of pages of never-maintained and rarely-used tomes. We plan, but recognize the limits of planning in a turbulent environment. Those who would brand proponents of XP or SCRUM or any of the other Agile Methodologies as "hackers" are ignorant of both the methodologies and the original definition of the term hacker."
    — Jim Highsmith, History: The Agile Manifesto

     12 principles of agile development

    Following are the main principles that considered in any agile development process.
  1. Customer satisfaction by early and continuous delivery of valuable software
  2. Welcome changing requirements, even in late development
  3. Working software is delivered frequently (weeks rather than months)
  4. Close, daily cooperation between business people and developers
  5. Projects are built around motivated individuals, who should be trusted
  6. Face-to-face conversation is the best form of communication (co-location)
  7. Working software is the principal measure of progress
  8. Sustainable development, able to maintain a constant pace
  9. Continuous attention to technical excellence and good design
  10. Simplicity—the art of maximizing the amount of work not done—is essential
  11. Best architectures, requirements, and designs emerge from self-organizing teams
  12. Regularly, the team reflects on how to become more effective, and adjusts accordingly.

 

Agile practices in summary

Following practices are used to carry on development process. They may be prioritized more or less according to the particular development method and development organization.
  •    Acceptance test-driven development (ATDD)
  •     Agile modeling
  •     Agile testing
  •     Backlogs (Product and Sprint)
  •     Behavior-driven development (BDD)
  •     Business analyst designer method (BADM)
  •     Continuous integration (CI)
  •     Cross-functional team
  •     Domain-driven design (DDD)
  •     Information radiators (scrum board, task board, visual management board, burndown chart)
  •     Iterative and incremental development (IID)
  •     Pair programming
  •     Planning poker
  •     Refactoring
  •     Retrospective
  •     Scrum events (sprint planning, daily scrum, sprint review and retrospective)
  •     Story-driven modeling
  •     Test-driven development (TDD)
  •     Timeboxing
  •     User story
  •     User story mapping
  •     Velocity tracking

References

https://en.wikipedia.org/wiki/Agile_software_development

Comments

  1. Hi,

    Its a Great article according my issues i read your blog and i got information through your article and specially thanks for sharing your article i will use @ here laravel development

    Regards,

    Daniel

    ReplyDelete

Post a Comment