CSC/ECE 517 Fall 2009/wiki3 11 j8: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 19: Line 19:
Also there are may different roles that individuals of the team may take, of which someone may take more than one role.
Also there are may different roles that individuals of the team may take, of which someone may take more than one role.


  * Manager
  * Manager - Manages the team and its resources.
  * Coach  
  * Coach - Ensures everyone is following the extreme program guidelines, usually a programmer. 
  * Tracker  
  * Tracker - One of the programmers, puts together wall charts and progress tracking.
  * Programmer  
  * Programmer  
  * Tester  
  * Tester - Assists in writing tests with the customer and running the tests.
  * Customer
  * Customer - Writes acceptance tests and user stories for the development team.


There are 13 goals and practices of extreme programming:
There are 13 goals and practices of extreme programming:
Line 33: Line 33:
  * Pair programming  
  * Pair programming  
  * Stories (User stories) - Small statements of functionality ordered in priority by the customer.  
  * Stories (User stories) - Small statements of functionality ordered in priority by the customer.  
  * Weekly cycle -  
  * Weekly cycle - At the beginning of the week the customer picks stories to complete during that week
  * Quarterly Cycle
  * Quarterly Cycle - Each yearly quarter should focus on a 'theme' or stories.
  * Slack  
  * Slack - Lower priority stories that can be dropped if time is limited.
  * Ten-minute build
  * Ten-minute build - Ensure the project and its tests can be built and run within 10 minutes.
  * Test-first  
  * Test-first - Every story should have an acceptance test.
  * Continuous Integration
  * Continuous Integration - Code should be checked in several times a day, with unit tests being run all the time.
  * Incremental Design
  * Incremental Design - Design daily at each step.


There are also 11 secondary practices which are considered somewhat optional.  These will not be discussed here.   
There are also 11 secondary practices which are considered somewhat optional.  These will not be discussed here.   
User stories are written
Code unit tests first
Pair programming
Emphasis on CRC crds during designs
http://www.extremeprogramming.org




Line 79: Line 71:


=== Dynamic Systems Development Method (DSDM) ===
=== Dynamic Systems Development Method (DSDM) ===
Project lifestyle:
Project lifestyle:
feasibility study,   
feasibility study,   
Line 86: Line 79:
implementation.
implementation.


http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method
 




=== Crystal ===
=== Crystal ===
Crystal methodologies are a range of methodologies that consist of varying degrees of agile development, for example Crystal Clear is the most agile and Crystal Red is the least.  These different sub-methodologies are designed to accomodate different team sizes as well.  Crystal Clear for example, is to be used with eight developers or less and should have incremental releases of at most every four months.  Crystal Orange is designed to be used with twenty to fourty developers and should have a duration of no longer than two years.
3  priorities [ safety (in project outcome), efficiency, habitability (developers can live with crystal)]
3  priorities [ safety (in project outcome), efficiency, habitability (developers can live with crystal)]


http://martinfowler.com/articles/newMethodology.html#Crystal
 




=== Feature Drive Development (FDD) ===
=== Feature Drive Development (FDD) ===
model-driven short-iteration process composed of 5 activities.   
 
Model-driven short-iteration process composed of 5 activities.   


Activities:
Activities:
  Develop Overall Model - Walkthroughs of different models are done and presented for peer review.   
Develop Overall Model - Walkthroughs of different models are done and presented for peer review.   
  Build Feature List - The result of the modeling stage is used to gather a list of features.  Domain is split into subject areas which contain business activities.  Max feature time is two weeks.
Build Feature List - The result of the modeling stage is used to gather a list of features.  Domain is split into subject areas which contain business activities.  Max feature time is two weeks.
  Plan by Feature - development plan from feature list
  Plan by Feature - development plan from feature list
  Design by Feature - A set of features that can be done in two weeks is sselected.  The design is done at the class level.
  Design by Feature - A set of features that can be done in two weeks is sselected.  The design is done at the class level.
Line 106: Line 103:


Milestones  
Milestones  
  Six milestones per feature that are completed sequentially.  Percentage of each milestone is kept track o.   
  Six milestones per feature that are completed sequentially.  Percentage of each milestone is kept track of.   




Line 113: Line 110:
=== Agile Modeling (AM) ===
=== Agile Modeling (AM) ===
=== Agile Unified Process (AUP) ===
=== Agile Unified Process (AUP) ===
== Major Differences ==
All of these methodologies are very similar and you have to look very close to spot the differences aside from nomenclature.  Generally the only differences from any of these methods are the lengths of the iteration.  Each method also generally emphasises some aspect of software development that the others do not.  For example, Extreme Programming places an emphasis on paired programming and CRC cards, while none of the others do so.  This does not mean you cannot use these techniques with the other methods, they simply do not place an emphasis on them.   
==References==
http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf
http://en.wikipedia.org/wiki/Extreme_Programming
http://martinfowler.com/articles/newMethodology.html#Crystal
http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method

Revision as of 19:24, 22 November 2009

Agile Development

Agile development is a relatively new software development method that is becoming increasingly popular in the software industry. These methods promote smaller development iterations and much quicker stable builds of a product. Typically iterations can last between one and three weeks, compared with a normal 9 month or longer waterfall model.

There are many different agile methodologies, the most popular of which Extreme Programing. This page attempts to compare the different agile methods with that of Extreme Programming.


Extreme Programming (XP)

Several types of documentation are used for planning and design purposes:

* User story cards
* Task List
* CRC Cards
* Customer Acceptance Tests
* Visible Wall Graphs

Also there are may different roles that individuals of the team may take, of which someone may take more than one role.

* Manager - Manages the team and its resources. 
* Coach - Ensures everyone is following the extreme program guidelines, usually a programmer.  
* Tracker - One of the programmers, puts together wall charts and progress tracking.
* Programmer 
* Tester - Assists in writing tests with the customer and running the tests.
* Customer - Writes acceptance tests and user stories for the development team.

There are 13 goals and practices of extreme programming:

* Sitting together - The entire team sits in an open space
* Whole team - Include everyone necessary to success.  
* Informative workspace - Include signs around the workspace to indicate progress.
* Energized Work - Do not overextend members for a long period of time. 
* Pair programming 
* Stories (User stories) - Small statements of functionality ordered in priority by the customer. 
* Weekly cycle - At the beginning of the week the customer picks stories to complete during that week
* Quarterly Cycle - Each yearly quarter should focus on a 'theme' or stories.
* Slack - Lower priority stories that can be dropped if time is limited.
* Ten-minute build - Ensure the project and its tests can be built and run within 10 minutes.
* Test-first - Every story should have an acceptance test.
* Continuous Integration - Code should be checked in several times a day, with unit tests being run all the time. 
* Incremental Design - Design daily at each step. 

There are also 11 secondary practices which are considered somewhat optional. These will not be discussed here.


Adaptive Software Development (ASD)

Strong emphasis on Dynamic programming languages speculate, collaborate, and learn cycles. http://en.wikipedia.org/wiki/Adaptive_Software_Development


Scrum

Places emphasis on different roles (Chicken/Pig)

  ScrumMaster
  Product Owner
  Team
  Stakeholders

Daily scrum meetings Sprint review (at end) sprint retrospective (at end) Spring planning meeting (at begining) frequent stackholder meetings

Items Product Backlog Sprint Backlog


two to four week 'sprints'

Dynamic Systems Development Method (DSDM)

Project lifestyle: feasibility study, business study, functional model iteration, design and build iteration, and implementation.



Crystal

Crystal methodologies are a range of methodologies that consist of varying degrees of agile development, for example Crystal Clear is the most agile and Crystal Red is the least. These different sub-methodologies are designed to accomodate different team sizes as well. Crystal Clear for example, is to be used with eight developers or less and should have incremental releases of at most every four months. Crystal Orange is designed to be used with twenty to fourty developers and should have a duration of no longer than two years.

3 priorities [ safety (in project outcome), efficiency, habitability (developers can live with crystal)]



Feature Drive Development (FDD)

Model-driven short-iteration process composed of 5 activities.

Activities:

Develop Overall Model - Walkthroughs of different models are done and presented for peer review.  
Build Feature List - The result of the modeling stage is used to gather a list of features.  Domain is split into subject areas which contain business activities.  Max feature time is two weeks.
Plan by Feature - development plan from feature list
Design by Feature - A set of features that can be done in two weeks is sselected.  The design is done at the class level.
Build by features - each of the selected features is built.  Unit tests and code inspecition a must.  

Milestones

Six milestones per feature that are completed sequentially.  Percentage of each milestone is kept track of.  


Lean Software Development (LSD)

Agile Modeling (AM)

Agile Unified Process (AUP)

Major Differences

All of these methodologies are very similar and you have to look very close to spot the differences aside from nomenclature. Generally the only differences from any of these methods are the lengths of the iteration. Each method also generally emphasises some aspect of software development that the others do not. For example, Extreme Programming places an emphasis on paired programming and CRC cards, while none of the others do so. This does not mean you cannot use these techniques with the other methods, they simply do not place an emphasis on them.

References

http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf http://en.wikipedia.org/wiki/Extreme_Programming http://martinfowler.com/articles/newMethodology.html#Crystal http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method