We are living in the golden era of software capabilities. This capable and smart software has been made possible due to framework models such as Agile Methodologies.
Multiple methodologies are inspired by the Agile Framework. We will be learning about each one of them in brief and will also understand their requirements and suitable environments.
History of Software development models
Software development burst open into the scene way back in the early 1900s. Over the years it transformed into a hyper sophisticated form. And today, we are living in the legendary era of software development methodologies.
To understand the hypothesis and principles behind
Agile and other software development methodologies, we need to understand what came before. Let us do a quick review of the history and timeline of software development methodologies.
1910: Henry Gantt and Fredrick Taylor proposed the idea of project management
1916: Henry Foyul introduced the concepts (division of work, unity of command, centralization of discussion)
1927-32: Elton Mayo carried out the Hawthorne Experiment
1956: Waterfall Model proposed by Herbert B Benington
1985: US Department of Defense defined standard approach of Waterfall Method
1986: Spiral Model for Software Development by Barry Boehm
1986: Scrum introduced by Takeuchi and Nanaka
1995: Scrum Methodology by Schwaber and Sutherland
1999: Agile Manifesto was published
2001: Agile Revolution
2009: DevOps approach introduced
Waterfall Model
The Waterfall Method is the first process model in the history of Process management. It was introduced by Hervert B Benington in 1956. It was also the first SDLC Model to be widely used in Software Engineering.
The Waterfall model as the name suggests is divided into several phases, the output of one phase is treated as the input for the next. The stages of the Waterfall model as mentioned below.
Requirement Analysis
Concerned authorities and Project Managers analyze all possible requirements of the system to be developed. They are further documented in a Requirement Specification Document or more commonly known as Product Requirement Document.
System Design:
The specifications from the Requirement Analysis phase guide the system design in this phase. It involves specifying hardware and system requirements and defines the overall system architecture.
Implementation:
The system is developed as mentioned in the system design stage. The system is developed in small programs called units.
Integration and Testing: The units developed are tested for their functionality at this stage. Additionally, the units are also put into integration at this stage.
Deployment:
Once the units pass their testing, they are deployed into the main workflow system. Eventually, they are released into the customer environment and the market.
Maintenance:
Since there are a lot of factors that affect the customer environment, some issues come up in the units released. Maintenance stages include releasing the patches to fix those issues.
Disadvantages of Waterfall Model
The main issue that developers faced with the waterfall model were the non-availability of rendering and revision avenues in the process.
-
No working features/software is produced until late during the product life cycle.
-
There are high amounts of risk involved in the process
-
It is not recommended for object-oriented projects and complex models.
-
It is not recommended for long and ongoing projects,
-
There is no feasible way to measure progress in the waterfall model
-
Once the process has started, it has no room for in-between modifications.
-
There is no way to adjust scope during the life cycle
The Integration serves as a "big-bang at the end of the life cycle. This does not allow the identification of technological or business bottlenecks.
What is Agile?
Agile came as an evolution over the waterfall model. It was introduced through a manifesto in 1999, and it took the world by storm with its efficacy from the year 2001.
Agile is a collection of principles and ideas used in software development and project management. The main focus of agile methodologies remains on creating short workable increments delivering value to their customers. The process leaders continuously Evaluate the requirements, plans, and results throughout the life cycle.
Agile Principles
Agile revolutionized the world in 2001 because it answered every problem that the waterfall model couldn't. The manifesto of agile came with a set of principles that guides the agile methodologies. The principles look very simple and are most effective when it comes to delivering the best outcome in the shortest time possible. Let us look at the list of agile principles.
-
Customer Satisfaction
-
Welcome Change
-
Deliver Frequently
-
Work Together
-
Motivated Team
-
Face to Face
-
Working Software
-
Constant Pace
-
Good Design
-
Simplicity
-
Self Organisation
-
Reflect and Adjust
-
Advantages of Agile
The Agile manifesto is the guiding light of Agile methodologies. The principles mentioned in the manifesto serve as answers to questions during bottlenecks of the life cycle. The advantages of using Agile methodologies are listed below.
Collaboration
Agile enables smooth and flawless collaboration and interaction across client and product teams.
Transparency
Agile has increased transparency and provides a clearer understanding of the project lifecycle.
Predictability
The principles on which agile methodologies function, assure delivery on time. In some cases, the delivery could be done well before time.
Re-Priority
This is one of the major advantages of working with agile. Agile offers room to reprioritize features allowing the clients to ensure maximum project value.
Agile Methodologies
Agile consists of multiple methodologies. We will explain every methodology in brief in this article. In most of the agile methodologies, you will find that the product development projects have been broken down into small achievable tasks.
There is still variation in the approach taken along the entire life cycle of the product, The major Agile methodologies include Extreme Programming, Kanban, Lean, Scrum, Crystal. Let us look at each one of these methodologies and understand the environments suitable for them and what they offer.
Extreme Programming
Extreme Programming is an agile software development framework. It is aimed at producing high-quality software that improves the quality of life for the development team. As the mane of the framework suggests, Extreme Programming is very specific regarding the appropriate practices for software development.
Kanban
Kanban is a Japanese word that roughly translates to a signboard or billboard. Originated from the body shops of Toyota manufacturing plants in Japan, it was quickly adopted by the software developers and project managers due to its effectiveness.
Kanban works on following four principles.
-
Start with what you do now
-
Pursue incremental, evolutionary change
-
Respect the current process, roles, and responsibilities
-
Encourage acts of leadership among all levels
Lean
As the name suggests, Lean methodology aims at removing the clutter around the product life cycle and making the process as lean as possible. This helps put priority on the tasks that deserve it and also speeds up the process of the entire lifecycle.
Scrum
Scrum is also a framework development model that is inspired by Agile principles. Scrum works best for teams of 10 or fewer members. Each member of the team is assigned a task to be completed in a timed box iteration called sprints (shorter than a month). The progress of tasks is assessed by daily meetings of 15 minutes or less known as daily scrums. The completion of the sprint is followed by meeting with the stakeholders to demonstrate the tasks completed.
Crystal
Crystal becomes a little subjective compared to the other framework models we have studied till now. Rather than focus on tools and technologies, Crystal aims at focussing on people and communication between them. Crystal is built on two core beliefs:
-
Teams can find ways on their own to improve and optimize their workflow
-
Since the requirement of each project is unique and different, the decision-making power should be left with the project teams.
What lies Ahead
In simpler terms, Agile methodology is about breaking larger scary tasks into small achievable milestone tasks. While there will be new technologies in the future to replace the current tech, the principles and theories on which project management and frameworks have built on will remain because they are timeless.