CSC/ECE 517 Fall 2012/ch2a 2w5 dp: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
Line 59: Line 59:


=== Popular Agile Methods ===
=== Popular Agile Methods ===
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects <ref>Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment</ref>.
The following are some of the most common Agile Methods practiced by industry organizations.
==== Extreme Programming ====
==== Scrum ====





Revision as of 19:52, 22 October 2012

Agile Software Development

Why Agile?

James Shore and Shane Warden <ref>Shore, James and Warden, Shane. The Art of Agile Development. O’Reilly Media, Inc., 2008, p. 4.</ref> state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer. He defines success into 3 types:

  1. Organizational
    • Deliver value and decrease costs to increase return on investment.
  2. Technical
    • Elegant and maintainable code is produced.
  3. Personal
    • Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.

The Agile Manifesto

The Agile Manifesto is a set of 12 principles that provide a foundation for agile methodologies.

The core principles of the manifesto are as follows <ref>Manifesto for Agile Software Development http://agilemanifesto.org/ </ref> :

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Values

There are four concepts that represent the main values of Agile software development.

  1. Adaptability
  2. Transparency
  3. Simplicity
  4. Unity

Adaptability

Adaptability is purported to be the most important value <ref>The Agile Leader: Adaptability

http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue</ref> of Agile methodologies.

This value forces teams to plan for inevitable change in a mindful manner.

The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.

  • "Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage."
  • "At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly."

There are three components in Adaptability <ref>Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile</ref> These three components must ALL be open to change in order to have a fully adaptable agile environment.

  1. Product - quality code and adequate testing will ensure product functionality after changes have been made.
  2. Process - practices that allow the team to adapt must be in place.
  3. People - developers, management, and stakeholders must have the proper attitude that is accepting of change.


Transparency

Simplicity

Unity

Best Practices

These are some of today's most common Agile practices <ref>Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/</ref>. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems <ref>Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/</ref>.

  • Common coding guidelines
  • Refactoring
  • Regression testing
  • Continuous integration
  • Test driven development
  • Active stakeholder participation
  • Pair programming

Popular Agile Methods

Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects <ref>Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment</ref>.

The following are some of the most common Agile Methods practiced by industry organizations.

Extreme Programming

Scrum

References

<references />