Articles

Introduction to Agile Software Development

agile-dev-cycle

Working in Agile mode became a golden standard throughout the past few decades for many leading companies in several different sectors of the market.

In fact, several branches and methodologies of Agile exist for every working environment.

In this article you will learn the basic concepts of Agile in Software Development context. Moreover, we will introduce you to the most commonly used Agile methodologies in today’s Information Technology Business.

First, there was a linear approach. The working process was divided in several predefined steps, executed one after another.

Linear Process Model

agile-linear-process-model

Work is following this plan through distinct and complete project phases. Each phase needs to be completed before moving to the next.

The classic example is Waterfall Development Model.

agile-waterfall-model

While it seems to be well organized, this workflow lacks of flexibility.

  • You cannot deliver a project until it is completely done.
  • In case of any error or change, you must restart all from beginning.

To overcome those problems, the software developers invented iterative and incremental approach back in 1957, enhanced with adaptive software development in 1970-s.

Iterative Process Model

You use actual data gathered as project work is performed, introducing or changing elements as you go, usually performing work in cycles to create the end result.

agile-iterative-model

In Agile development mode, each increment of project is divided in Requirement, Design, Development, Testing, and Delivery.

Thus, you complete one piece at a time and deliver each piece.

Incremental Model

The focus in Agile development is to deliver the highest priority items first, which are more important to your clients.

For example, in first iteration, you might build minimum features required for you product, such as Account Logon functionality.

agile-incremental-logon

Once that feature is successfully tested, you proceed with additional options such as Forgot Password functionality. With each iteration, you are adding incrementally different features and robustness to your product.

Another characteristic of Agile Project Management, is that you identify issues early in development process, thanks to the testing after each iteration.

agile-incremental-model

Additionally, at each iteration you are also getting the stakeholders feedback, which you incorporate into next iteration. This makes handling changes a lot easier.

Manifesto for Agile Software Development

During the software developers meeting in 2001 a golden rule for Agile Software
Development was published. It contains four main concepts and twelve principles.

4 Main Concepts

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

12 Principles

  • Satisfy the customer
  • Welcome change
  • Deliver software frequently
  • Work together
  • Motivate individuals
  • Use face-to-face communication
  • Working software equals progress
  • Constant pace
  • Technical excellence
  • Simplicity
  • Self-organizing
  • Reflection

Agile Project Management Model

agile-project-management-model
  1. To envision what the product is going to be.
    What value you should deliver to your customer.
    What is the vision for overall project or product.
  2. How to implement different features or functionalities that will fulfill the vision created in the Envisioning phase.
  3. Perform iterations: Code Development, Software Development, Testing, and Feedback.
  4. As you learn, you adapt and change the plan (priorities, ways to work, strategies)
  5. To close the specific iteration or a whole project.

Various Agile Methodologies

For each project’s type it exists a specific methodology to manage it more efficiently. Let us view some of them briefly.

XP (Extreme Programming)

This Software Engineering Centric Model focuses on ongoing rapid software delivery through quick short releases, with one-week iteration. Each iteration results a production ready code.

agile-xp

Lean Principles and Tools

They do not prescribe specific development method but instead provide streamlining for development process.

The guidelines are driven by 7 principles:

  • Eliminate waste
  • Build quality in
  • Create knowledge
  • Deliver commitment
  • Deliver fast
  • Respect People
  • Optimize the whole
agile-lean-principles

Kanban

It derives from Lean Principles and Tools.

Its principles include Visualizing Workflow, Limiting work in progress, focusing on the workflow and continuous improvement.

agile-kanban

Crystal Methodologies

Named after the crystals of different hardness, they represent development methods created to suit different types of projects depending on their size, complexity and criticality.

agile-crystal

Feature Driven Development

Driven from a client-valued functionality in feature perspective, its main purpose is to deliver tangible, working software repeatedly in a timely manner.

agile-fdd

Dynamic Systems Development Method

It is based on the philosophy “that any project must be aligned to clearly defined strategic goals and focus upon early delivery of real benefits to the business.”

DSDM is vendor-independent, covers the entire life-cycle of a project and provides best practice guidance for on-time, in-budget delivery of projects, with proven scalability to address projects of all sizes and for any business sector.

agile-dsdm

Model Driven Development

MDD leverages graphical models and pre-built application components so that users can visually construct complex applications.

agile-mdd

Disciplined Agile Delivery

DAD is a people-first, learning-oriented hybrid agile approach. It has a risk-value delivery lifecycle, it is goal-driven, enterprise aware, and scalable.

It promotes a goal-based, rather than a prescriptive strategy, that enables teams to choose their way of working.

agile-dad

Test Driven Development

TDD is a process that relies on the repetition of a very short development cycle:
to write an (initially failing) automated test case that defines a desired improvement or new function to produce the minimum amount of code to pass that test to refactor the new code to acceptable standards.

agile-tdd

Behavior Driven Development

BDD offers precise guidance on organizing the conversation between developers, testers and domain experts.

agile-bdd

SCRUM Framework

The most commonly used model in IT businesses.
It utilizes the iterative incremental approach, which allows predictability and better risk management. Consists of iterations named Sprints that are typically from 1 to 4 weeks in length.

Before each sprint, the team agrees on what work items they will complete within the coarse of the sprint.

At the end of the sprint the goal is to have some kind of increment being inspected and adapted, gaining feedback from stakeholders.

Scrum includes 4 events that provide opportunities to inspect and adapt:

  • Sprint Planning: opportunity to reorder the requirements backlog.
  • Daily Scrum: 15 minutes daily stand-up meeting where each member is informs the
    team on what has been done, what is going to be done, and what are the roadblocks or problems experienced.
  • Sprint Review: happens at the end of a scrum and allows to demonstrate the work to stakeholders and product owner.
  • Sprint Retrospective: team meeting at the end of a project to discuss what went well, what did not go well, and what actions to take to improve as a team.