Agile Principles

ITEC 3870 Software Development II,
Anca Doloc-Mihu and Cengiz Günay

(License: CC BY-SA 4.0)

Prev - Agile Development, Next - Scrum

What is “AGILITY”?

What does it mean to be AGILE?

What is “AGILITY”?

Effective (rapid and adaptive) response to change

Effective (rapid and adaptive) communication among all stakeholders

The CLIENT is part of the TEAM

The TEAM is in control of the work performed

resulting in

rapid, incremental delivery of software

Agile Process

  • User Scenarios are descriptions of what is required (requirements) and drive the entire production process
  • Plans are short-lived and can change frequently
  • Software is developed iteratively and is delivered after each iteration
  • Adapts as changes occur

Agile is based on

4 values and 12 principles

Agile Values

  1. Individuals and interactions over processes and tools
  1. Working software over comprehensive documentation
  1. Customer collaboration over contract negotiation
  1. Responding to change over following a plan

Agile Principles

  1. Satisfy the Customer

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

  1. Welcome Change

Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

  1. Deliver Solutions Frequently

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

Agile Principles

  1. Work Together

Business people and developers must work together daily throughout the project (one team).

  1. Empower & Trust

Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

  1. Face to Face Conversations

The most efficient and effective method of conveying information to and within a development team is face–to–face conversation.

Agile Principles

  1. Working Solutions

Working software solutions are the primary measure of progress.

  1. Sustainable Pace

Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

  1. Technical Excellence

Continuous attention to technical excellence and good design enhances agility (quality).

Agile Principles

  1. Simplicity is Essential

Simplicity – the art of maximizing the amount of work not done – is essential.

  1. Self-organizing Teams

The best architectures, requirements, and designs emerge from self–organizing teams.

  1. Reflect & Adjust

At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Agile means

How to do Agile?

The process molds to the needs of the people and team, not the other way around

There are many Agile process models proposed by various groups…

Agile Modeling

Originally proposed by Scott Ambler

Suggests a set of agile modeling principles:

  • Model with a purpose
  • Use multiple models
  • Travel light – build only what has value
  • Content is more important than representation
  • Know the models and the tools you use to create them
  • Adapt locally to the needs of the agile team

Extreme Programming (XP)

Originally proposed by Kent Beck, and used in industry often in a hybrid format

Extreme Programming (XP)

Planning

  • Begins with the creation of user stories
  • Agile team assesses each story and assigns a cost
  • Stories are grouped to for a deliverable increment
  • A commitment is made on delivery date
  • After the first increment project velocity is used to help define subsequent delivery dates for other increments

Extreme Programming (XP)

Design

  • Follows the KIS principle (KIS = keep it simple)
  • Encourage the use of CRC cards
  • For difficult design problems, suggests the creation of spike solutions —a design prototype
  • Encourages refactoring —an iterative refinement of the internal program design

Extreme Programming (XP)

Coding

  • Recommends the construction of a unit test for a story before coding commences
  • Encourages pair programming

Testing

  • All unit tests are executed daily
  • Acceptance tests are defined by the customer and executed to assess customer visible functionality

Choose your Agile Flavor

  • Various Techniques with differing process maps
  • In reality few people strictly adhere to one method

Our Agile Flavor

  • Extreme Programming with Refactoring adapted to class schedule
  • Tool - Jira
  • Pair Programming highly encouraged
  • 3 iterations with Velocity chart and Burdown chart as restrospectives after each iteration
  • Version Control (Git) is a MUST
  • Branching and Tagging of Releases
  • Unit Testing Absolutely Vital
  • Communication - Weekly Stand-Ups (Scrum)
  • Quality of Released Software:
    • Code needs to be frequently deployed
    • All code must be tested before deployment
    • Design Globally, Code Locally
    • Acceptance Testing is important

Criticisms of Agile Development

Are there any issues with Agile?

Feature focus obscures goals and infrastructure.

Staffing and long term planning problems.

A charismatic movement that generates certification or speaker fees.

Works better for Senior Developers who can operate with more discretion.

Higher Risk of Scope Creep.

Inadequate handing of non-functional details.

Home