AgileProgramming/xp: Difference between revisions

From Cheaha
Jump to navigation Jump to search
 
(14 intermediate revisions by 2 users not shown)
Line 1: Line 1:
__FORCETOC__
__FORCETOC__
== AGILE METHODOLOGY ==
== [http://en.wikipedia.org/wiki/Agile_software_development AGILE METHODOLOGY] ==


=== What is Agile Methodology? ===
=== What is Agile Methodology? ===
   
   
[http://en.wikipedia.org/wiki/Agile_software_development]
* Group of software development methodologies
* Group of software development methodologies
* Project management process
* Project management process
* Set of engineering best practices
* Set of engineering best practices
* Business approach
* Business approach


Agile methodology aims to deliver high quality software which meets the customer's needs and company goals rapidly.
Agile methodology aims to deliver high quality software which meets the customer's needs and company goals rapidly.
Line 14: Line 13:
=== History ===
=== History ===


* Seventeen professionals, consisting of experts in programming, CTO's, founders of software consulting firms such as Martin Fowler – ThoughtWorks , Dave Thomas,  Andrew Hunt (co-authors of The Pragmatic Programmers), Ron Jeffries – propietor of Xprogramming.com and others, got together on February 11-13, 2001 at the Snowbird Ski Resort in Utah  
* Seventeen professionals, consisting of experts in programming, CTO's, founders of software consulting firms such as Martin Fowler – ThoughtWorks, Dave Thomas,  Andrew Hunt (co-authors of The Pragmatic Programmers), Ron Jeffries – propietor of [http://www.xprogramming.com XProgramming.com] and others, got together on February 11-13, 2001 at the Snowbird Ski Resort in Utah  
* The agenda was to develop  a 'lightweight'  process as an alternative to documentation driven, heavyweight software development processes (Waterfall, Cowboy coding)
* The Snowbird meet also consisted of representatives from some of the existing software methodologies such as Extreme Programming, Adaptive Software Development, Crystal, and SCRUM
* The Snowbird meet consisted of representatives from some of the existing software methodologies such as Extreme Programming, Adaptive Software Development, Crystal, and SCRUM
* Their agenda was to develop  a 'lightweight'  process as an alternative to documentation driven, heavyweight software development processes (Waterfall, Cowboy coding)
* Result of the Snowbird meet – The Agile Manifesto<ref>[http://www.agilemanifesto.org]</ref> and the Agile Alliance<ref>[http://www.agilealliance.com/home]</ref>
* Result of the Snowbird meet – [http://www.agilemanifesto.org The Agile Manifesto] and the [http://www.agilealliance.com/home Agile Alliance]
* Agile Manifesto values
* Agile Manifesto values
** '''Individuals and interactions''' over processes and tools  
** '''Individuals and interactions''' over processes and tools  
** '''Working software''' over comprehensive documentation  
** '''Working software''' over comprehensive documentation  
** '''Customer collaboration''' over contract negotiation  
** '''Customer collaboration''' over contract negotiation  
** '''Responding to change''' over following a plan  
** '''Responding to change''' over following a plan


=== What are Agile Manifesto practices? ===
=== What are Agile Manifesto practices? ===


* Customer satisfaction by rapid, continuous delivery of useful software
* Customer satisfaction by rapid, continuous delivery of useful software
* Working software is delivered frequently (weeks rather than months)
* Working software is delivered frequently (weeks rather than months)
* Working software is the principal measure of progress
* Working software is the principal measure of progress
* Even late changes in requirements are welcomed
* Even late changes in requirements are welcomed
* Close, daily cooperation between business people and developers
* Close, daily cooperation between business people and developers
* Face-to-face conversation is the best form of communication (Co-location)
* Face-to-face conversation is the best form of communication (Co-location)
* Projects are built around motivated individuals, who should be trusted
* Projects are built around motivated individuals, who should be trusted
* Continuous attention to technical excellence and good design
* Continuous attention to technical excellence and good design
* Simplicity
* Simplicity
* Self-organizing teams
* Self-organizing teams
* Regular adaptation to changing circumstances
* Regular adaptation to changing circumstances


=== What are existing Agile Methodologies? ===
=== What are existing Agile Methodologies? ===


* Extreme Programming
* Extreme Programming
* Scrum
* Scrum
* Crystal Clear
* Crystal Clear
* Feature Driven Development
* Feature Driven Development
* Dynamic Systems Development Method (DSDM)
* Dynamic Systems Development Method (DSDM)


== EXTREME PROGRAMMING ==
== EXTREME PROGRAMMING ==


Extreme programming is a deliberate and disciplined approach to software development.  Previously successful and effective methods have been emphasized to the “extreme,” while unproductive activities have been reduced as much as possible.
'''How to begin with XP?'''  Start by striving for user involvement.  Always have user presence within the development team. Put tests in place.  The better tests you have, the faster and more effectively you will move.  Include refactoring, which lets you begin with simple designs and grow them as needed.  Pair programming provides built-in reviews and learning, and can help you spread the XP practices within a team.  Pairs are switched often.
'''Stand up meeting''' every morning is used to communicate problems, solutions, and promote team focus. Everyone stands up in a circle to avoid long discussions.  Each person states what they did yesterday, what they plan to do today, and what, if anything, is holding them up.
'''User stories''' –
* Written by the customer, focus on customer needs
* Cards are moved around to create release plan.
* About three sentences of text.
* Used to create time estimates for release planning meeting.
* Used instead of big requirements document.
* Drive the creation of acceptance tests
* How much development time to implement a story?  Longer than 3 weeks means you need    to break the story down further. Less than 1 week and you are at too detailed a level, combine some stories.
'''Release planning meeting''' creates release plan laying out overall project.   
'''Release plan''' is used to create iteration plans for each iteration.  Release often - small releases to customer.
'''Iteration planning meeting''' at the beginning of each iteration.  Individual iterations are planned in detail just before each iteration begins and not in advance.
Each '''iteration''' is 1-3 weeks long.
Use '''CRC cards''' (Class, Responsibilities, and Collaboration) for design sessions, with everyone moving the cards around. Forces us away from procedure-oriented toward object-oriented.
A '''spike solution''' is a very simple program to explore potential solutions. Build a system which only addresses the problem under examination.  Expect to throw it away.
'''Unit tests''' are created early and each class is tested. 
'''Acceptance tests''' verify that the user story has been correctly implemented. 
The '''rules must be followed''' until the team has changed them. All  developers know exactly what to expect from each other, and having a set of rules is the only way to set these expectations.  At meetings, talk about what is working and what is not, and fix XP.


== References ==
== References ==


{{reflist|2}}
http://www.xprogramming.com/xpmag/whatisxp.htm#test
 
http://extremeprogramming.org
 
http://extremeprogramming.org/map/project.html - Clickable diagram of XP components
 
http://www.xp123.com/xplor/xp9912/index.shtml
 
http://www.xp123.com/xplor/xp0206a/index.shtml  - Metaphors for XP components

Latest revision as of 15:25, 28 October 2008

AGILE METHODOLOGY

What is Agile Methodology?

  • Group of software development methodologies
  • Project management process
  • Set of engineering best practices
  • Business approach

Agile methodology aims to deliver high quality software which meets the customer's needs and company goals rapidly.

History

  • Seventeen professionals, consisting of experts in programming, CTO's, founders of software consulting firms such as Martin Fowler – ThoughtWorks, Dave Thomas, Andrew Hunt (co-authors of The Pragmatic Programmers), Ron Jeffries – propietor of XProgramming.com and others, got together on February 11-13, 2001 at the Snowbird Ski Resort in Utah
  • The Snowbird meet also consisted of representatives from some of the existing software methodologies such as Extreme Programming, Adaptive Software Development, Crystal, and SCRUM
  • Their agenda was to develop a 'lightweight' process as an alternative to documentation driven, heavyweight software development processes (Waterfall, Cowboy coding)
  • Result of the Snowbird meet – The Agile Manifesto and the Agile Alliance
  • Agile Manifesto values
    • Individuals and interactions over processes and tools
    • Working software over comprehensive documentation
    • Customer collaboration over contract negotiation
    • Responding to change over following a plan

What are Agile Manifesto practices?

  • Customer satisfaction by rapid, continuous delivery of useful software
  • Working software is delivered frequently (weeks rather than months)
  • Working software is the principal measure of progress
  • Even late changes in requirements are welcomed
  • Close, daily cooperation between business people and developers
  • Face-to-face conversation is the best form of communication (Co-location)
  • Projects are built around motivated individuals, who should be trusted
  • Continuous attention to technical excellence and good design
  • Simplicity
  • Self-organizing teams
  • Regular adaptation to changing circumstances

What are existing Agile Methodologies?

  • Extreme Programming
  • Scrum
  • Crystal Clear
  • Feature Driven Development
  • Dynamic Systems Development Method (DSDM)

EXTREME PROGRAMMING

Extreme programming is a deliberate and disciplined approach to software development. Previously successful and effective methods have been emphasized to the “extreme,” while unproductive activities have been reduced as much as possible.

How to begin with XP? Start by striving for user involvement. Always have user presence within the development team. Put tests in place. The better tests you have, the faster and more effectively you will move. Include refactoring, which lets you begin with simple designs and grow them as needed. Pair programming provides built-in reviews and learning, and can help you spread the XP practices within a team. Pairs are switched often.

Stand up meeting every morning is used to communicate problems, solutions, and promote team focus. Everyone stands up in a circle to avoid long discussions. Each person states what they did yesterday, what they plan to do today, and what, if anything, is holding them up.

User stories

  • Written by the customer, focus on customer needs
  • Cards are moved around to create release plan.
  • About three sentences of text.
  • Used to create time estimates for release planning meeting.
  • Used instead of big requirements document.
  • Drive the creation of acceptance tests
  • How much development time to implement a story? Longer than 3 weeks means you need to break the story down further. Less than 1 week and you are at too detailed a level, combine some stories.

Release planning meeting creates release plan laying out overall project.

Release plan is used to create iteration plans for each iteration. Release often - small releases to customer.

Iteration planning meeting at the beginning of each iteration. Individual iterations are planned in detail just before each iteration begins and not in advance.

Each iteration is 1-3 weeks long.

Use CRC cards (Class, Responsibilities, and Collaboration) for design sessions, with everyone moving the cards around. Forces us away from procedure-oriented toward object-oriented.

A spike solution is a very simple program to explore potential solutions. Build a system which only addresses the problem under examination. Expect to throw it away.

Unit tests are created early and each class is tested.

Acceptance tests verify that the user story has been correctly implemented.

The rules must be followed until the team has changed them. All developers know exactly what to expect from each other, and having a set of rules is the only way to set these expectations. At meetings, talk about what is working and what is not, and fix XP.

References

http://www.xprogramming.com/xpmag/whatisxp.htm#test

http://extremeprogramming.org

http://extremeprogramming.org/map/project.html - Clickable diagram of XP components

http://www.xp123.com/xplor/xp9912/index.shtml

http://www.xp123.com/xplor/xp0206a/index.shtml - Metaphors for XP components