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
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.
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.
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.
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.
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.
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
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
- 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
Agile Project Management Model
- 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.
- How to implement different features or functionalities that will fulfill the vision created in the Envisioning phase.
- Perform iterations: Code Development, Software Development, Testing, and Feedback.
- As you learn, you adapt and change the plan (priorities, ways to work, strategies)
- 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.
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
It derives from Lean Principles and Tools. Its principles include Visualizing Workflow, Limiting work in progress, focusing on the workflow and continuous improvement.
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.
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.
Model Driven Development
MDD leverages graphical models and pre-built application components so that users can visually construct complex applications.
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.
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
Behavior Driven Development
BDD offers precise guidance on organizing the conversation between developers, testers and domain experts.
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.