miércoles, 30 de marzo de 2011

Doce principios para Modelos Agiles de Desarrollo

What does Agile development mean?

In 1995, Steven L. Goldman, Roger N. Nagel, and Kenneth Preiss, the authors of Agile Competitors and Virtual Organizations (Van Nostrand Reinhold, New York), offered this definition of agility:
"Agility is dynamic, context-specific, aggressively change embracing, and growth-oriented. It is not about improving efficiency, cutting costs, or battening down the business hatches to ride out fearsome competitive “storms.” It is about succeeding and about winning: about succeeding in emerging competitive arenas, and about winning profits, market share, and customers in the very center of the competitive storms many companies now fear."
This book was about manufacturing, but the definition of agility applies equally to today’s software development environment.

The origin: Agile Software Manifesto


Although it started years before, the agile movement officially began with the creation of the Agile Manifesto in February 2001 (Beck 2001). This manifesto was written and signed by seventeen “lightweight methodologists” providing a list of value statements:
" We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value
  • individuals and interactions over processes and tools,
  • working software over comprehensive documentation,
  • customer collaboration over contract negotiation,
  • responding to change over following a plan.
That is, while there is value in the items on the right, we value the items on the left more."
Processes, tools, documentation, contracts, and plans are useful. But when push comes to shove—and it usually does—something must give, and we need to be clear about what stays and what gives.
Relying on interactions between individuals facilitates sharing information and changing the process quickly when it needs changing.
Using working software allows us to measure how fast we actually produce results and provides quick feedback. Frequent interaction between individuals compensates for minimizing documentation.
Customer collaboration means that all players—the sponsor, customer, user, and developer—are on the same team. Merging their different experiences and expertise with goodwill allows the combined group to change directions quickly so they can produce more appropriate results and less expensive designs. Contracts or project charters with the customers are necessary, but without collaboration, they are insufficient.
Working through producing a plan drives the team members to think through their project and its contingencies. The plan itself usually goes out of date within just a few days. Afterward, rather than focusing on the outdated plan, it is important to deal with the changing realities.

The basis: The 12  Principles

To help people to gain a better understanding of what agile software development is all about, the members of the Agile Alliance refined the philosophies captured in their manifesto into a collection of twelve principles.  These principles are:
  1. The highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development. Agile process es harness change for the customer's competitive advantage.
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. Working software is the primary measure of progress.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity--the art of maximizing the amount of work not done--is essential.
  11. The best architectures, requirements, and designs emerge from self-organizing teams.
  12. Introspection – at regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

The Agile Umbrella: The Agile development methodologies

So Agile development refers to a group of software development best practices or methodologies that are based on similar principles (the 12 Agile principles).
Agile methodologies generally promote:
  • A project management process encouraging frequent inspection and adaptation
  • A leadership philosophy to encourage teamwork, self-organization and accountability
  • A set of engineering best practices to allow rapid delivery of high-quality software
  • A business approach aligning development and customer needs and company goals










Under the Agile umbrella lie a number of different techniques for development, modeling, and project management to reach the same objective of improving project’s response to changing environment during the development:
  1. Scrum
  2. eXtreme Programming
  3. Lean Software Development
  4. Kanban
  5. Crystal
  6. Feature Driven Development
  7. Dynamic Systems Development Method
  8. Adaptive Software Development
  9. Pragmatic Programming
This methods are described on the Which are the different agile methods? section as well as practical and in depth information of some of them (Scrum, XP) on Agile in Practice.

References:

  1. Definition: Agile Development - The Agile Executive

No hay comentarios:

Publicar un comentario