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

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
The most popular Agile methodology is Extreme Programming (XP). However, there are many other agile process models that have been proposed and used in industry, such as--Compare these methodologies, telling how they are different from XP, and assessing their strengths and weaknesses.
== Extreme Programming (XP) ==


== Agile Development ==
Extreme Programming is one of the most popular agile methodologies.  This type of development features frequent small releases


Agile software development is a collection of processes and development methodologies that emphasize small iterative cycles that allow for a more dynamic evolution of the software.  Unlike the waterfall model, whereby each iteration of development may last nine months or longer, iterations in agile models typically only last a few weeks. 


Some benefits of Agile development include:
* Complete iteration every 1 - 3 weeks
* Complete release with every iteration


  * The ability to change requirements through time.
Several types of documentation are used for planning and design purposes:
  * It is much easier to scope the required resources for a task since the task is much smaller
 
  * Having a functional piece of software at the end of each iteration.
* 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
* Coach
* Tracker
* Programmer
* Tester
* Customer
 
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 -
* Quarterly Cycle
* Slack
* Ten-minute build
* Test-first
* Continuous Integration
* Incremental Design
 
There are also 11 secondary practices which are considered somewhat optional.  These will not be discussed here.


While there are many different Agile Development forms, they are all very similar and usually only have a few differences.


== Extreme Programming ==
Frequent small releases (Every week or two)
Complete iteration (Every 1 - 3 weeks)
User stories are written
User stories are written
Code unit tests first
Code unit tests first

Revision as of 03:13, 19 November 2009

Extreme Programming (XP)

Extreme Programming is one of the most popular agile methodologies. This type of development features frequent small releases


* Complete iteration every 1 - 3 weeks
* Complete release with every iteration

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
* Coach 
* Tracker 
* Programmer 
* Tester 
* Customer

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 - 
* Quarterly Cycle
* Slack 
* Ten-minute build
* Test-first 
* Continuous Integration
* Incremental Design

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


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.

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


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)

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 o.  


Lean Software Development (LSD)

Agile Modeling (AM)

Agile Unified Process (AUP)