CSC/ECE 517 Fall 2012/ch2a 2w5 dp: Difference between revisions
Line 49: | Line 49: | ||
=== Best Practices === | === Best Practices === | ||
These are some of | 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 | *Common coding guidelines | ||
*Refactoring | *Refactoring |
Revision as of 04:04, 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:
- Organizational
- Deliver value and decrease costs to increase return on investment.
- Technical
- Elegant and maintainable code is produced.
- 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.
- Adaptability
- Transparency
- Simplicity
- 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.
- Product - quality code and adequate testing will ensure product functionality after changes have been made.
- Process - practices that allow the team to adapt must be in place.
- 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
References
<references />