Agile Development

13 posts

Agile Development Methodology Wiki

Agile Development Methodology Wiki

Agile development methodology wiki illustrates how Agile is the opposite of traditional waterfall projects where you make a detailed plan and implement the plan. Making detailed plans is an efficient way of approaching projects when it is clear what the end product. When you are not, you need to accept it will take multiple iterations to create the desired end product. That is where Agile methodology has a clear advantage over traditional project management. Agile accepts there will be changes and pro-actively accepts this in their methodologies. Agile is not a new concept and can be traced back to 1957, in the early 1990’s a number of software development methodologies were being used by software teams such as DSDM 1995, Scrum 1996, Crystal & XP 1996, FDD 1997. Even though these were all created before the existence of “Agile” they were the basis for Agile as we know it. In 2001 a group of methodology and software experts who used these methodologies came together to create a unified Agile Manifesto.

The Agile Development Methodology four 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

12 Principles behind the Agile Manifesto:

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. Working software is the primary measure of progress.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity–the art of maximizing the amount of work not done–is essential.
  11. The best architectures, requirements, and designs emerge from self-organizing teams.
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.

Agile development methodology was originally created for software projects but can be applicable to any knowledge work/project. Below is a great TedTalk where Bernie Schroeder discuss “failing fast” and iterating for creating a business.

[wpdevart_youtube]nWgL4oxbGpI[/wpdevart_youtube]

For software development there are multiple Agile methodologies which is what people will more than likely associate with Agile.

Agile Development Methodology Wiki

Scrum Agile Development Methodology Wiki

Scrum is one of the most popular Agile methodologies as it has been widely adapted in recent years. It is an iterative an incremental agile software development framework. Scrum is based on planning work for a 2-3 week sprints where the team deliver an increment after each sprint. The team would meet every morning at a daily stand-up where only Engineers give updates on what they did/plan on doing and any blockers. A Scrum team will typically consist of a Product Owner (Business) who prioritizes the backlog and provides business feedback, Scrum Master (Agile Coach) who ensures Scrum is implemented correctly and removers any blockers, and Engineers who choose what is done in iterations and complete the actual work.

Scrum Practices

  • Backlog Refinement/Grooming
  • Sprint Planning
  • The Sprint
  • Daily Scrum/Stand-Up
  • Sprint Review/Demo
  • Sprint Retrospective

More Information on Scrum development methodology and Scrum Master responsibilities check out our detailed post on Scrum Methodology.

lean software development

Lean Software Development

Lean Software Development method was originally created by Mary and Tom Poppendicks but is heavily based on Lean Manufacturing mainly by Japanese company Toyota. It focuses on lean, or simple and efficient methods, to deliver value to the customer and continuously improving the “value stream”.

Lean Software Development Principles

  • Eliminate Waste
  • Empower the team
  • Deliver fast
  • Optimize the whole
  • Build quality in
  • Defer decisions
  • Amplify Learningkanban board

More information on Mary and Tom Poppendicks website The Lean Mindset.

Kanban methodology promotes continuous collaboration within the team and continuous improving the workflow. Kanban originally came from the concept of Lean and is best known for the Kanban board which can be seen below.

Kanban 3 Principles

Rule #1: Visual Workflow
Rule #2: Limit Work in Process (WIP)
Rule #3: Measure and Improve
More information can be found on our post about Kanban and Leans relationship and history.

Feature-Driven Development (FDD)

Feature-Driven Development (FDD)

The first of these is Feature Driven Development (FDD). FDD is based on an agile iterative-driven method, where the length and contents of each iteration/release is based on delivering a complete business feature.  It begins with establishing an overall model shape and then a series of 2 week iterations, finally delivering a feature. A typical software development would follow the following process:

Build Overall Model
Build feature list
Implementation of Features

Plan by Feature
Design by Feature
Build by Feature
*Iteration length non determined is based on requirements

FDD 8 Practices

  • Domain object modelling
  • Develop by feature
  • Class ownership
  • Feature Teams
  • Inspections
  • Regular build schedules
  • Configuration Management
  • Reporting visibility of results

More information on Feature-Driven Development dedicated website http://www.featuredrivendevelopment.com/.

xp practicesAgile Development Methodology Wiki

Extreme Programming (XP)

XP is a disciplined approach to delivering software quickly and continuously. It uses a numerous feedback loops starting with Pair Programming to Release Planning as depicted in the below image. XP works in iterations usually of 1-3 weeks and the team would work with the business very closely. We have written a detailed post going through the complete history and practices on XP Agile Development Methodology here.Extreme Programming (XP) Development Methodology

XP 12 Development Methodology Principles

  1. Planning Games
  2. Small Releases
  3. Metaphors
  4. Simple Design
  5. Testing
  6. Pair Programming
  7. Re-factoring
  8. Collective Code Ownership
  9. Continuous Integration
  10. 40-hour Work Week
  11. On-Site Customer/Whole Team
  12. Coding Standards

More information on XP on the official website http://www.extremeprogramming.org.

crystal software development

Crystal Agile Development Methodology

Crystal delivery methods is one of the most lightweight out of all Agile development methodologies. Crystal process usually would consist of defining an initial Project Charter, followed by iterative releases containing multiple development releases with an implementation and reflective workshop for each release.

Crsytal Practices

  • Frequent delivery
  • Constant communication
  • Reflective Improvements
  • Freedom to speak
  • Focus
  • Easy access to experts
  • Productive technical environment
  • Scale based on team/dollars spent/business criticality

Status of development defined as one of the following: Clear – Yellow – Orange – Red
Estimating Size: 0-8 10-20 20-50 50-100
Critically: Comfort Discretionary Essential

More information on Crystal Development Methodology check out its creators website Alistair Cockburn.

Dynamic Systems Development Method (DSDM)

Dynamic Systems Development Method (DSDM)

DSDM dates back to 1994 and was previously known Rapid Application Development (RAD). RAD evolved into a unstructured approach and as a result the DSDM Consortium was created with 9 core principles. These principles centre around empowered teams, frequent delivery, business need/value and stakeholder engagement. DSDM primarily concern is to apply the 80/20 rule where the team tries to focus on 80% of the system in 20% of the time. Requirement prioritization uses the MoSCoW rules and all critical work must be completed in a DSDM project.

DSDM 9 Principle’s

  • Active user involvement
  • Empowered Teams
  • Frequent Delivery
  • Fitness for business use
  • Iterative development
  • All decisions can be changed
  • High level requirements only
  • Integrated testing
  • Collaboration & cooperation

More information check out the official DSDM Consortium website here.

Agile Tools & Techniques