Is a Mindset
Agile is not a concept but a mindset. As the name suggests, it concentrates on being flexible and dynamic. This methodology also removes the isolation between the phases of software development and encourages the development team to collaborate with the quality analyst(s). It also emphasizes the involvement of customers in building a high-quality product. Here we’ll look at Agile, how it works, and some best practices for this popular software development method.
Generally, Agile methodologies promote a project management process that encourages frequent inspection and adaptation. This leadership philosophy encourages teamwork, self-organization, and accountability. Agile is a set of engineering best practices (allowing for rapid delivery of high-quality software) and a business approach (aligning development with customer needs and goals). The term was introduced in the "Agile Manifesto," published in February of 2001.
Need for agile
In traditional SDLC models, the steps for software development are followed one after the other and usually carried out in isolation. On the contrary, Agile is a time-bound, iterative approach to software delivery that builds software incrementally from the start of the project instead of delivering all at once.
Why Agile? Technology in this current era is progressing faster than ever, forcing global software companies to work in a fast-paced and changing environment. Because these businesses operate in an ever-changing environment, gathering a complete and exhaustive set of software requirements is impossible.
Conventional software models such as Waterfall Methodology depend on completely specifying the requirements, designing, and testing. They are not conducive to rapid software development. Consequently, a conventional software development model fails to deliver the required product. It is where agile software development comes to the rescue. Agile was specially designed to curate the needs of the rapidly changing environment by embracing the idea of incremental development and developing the actual final product.
Agile Principles
Principles of Agile Foundation:
Development in Agile
A brief overview of how development occurs in Agile philosophy:
Example: Let’s go through an example to understand clearly how agile works.
A Software company named ABC wants to make a new web browser for the latest release of its operating system. The deadline for the task is ten months. The company’s head assigned two teams named Team A and Team B for this task. The company head motivates the teams by saying that the first team to develop the browser would get a salary hike and a one-week full-sponsored travel plan. So, with their wild travel fantasies, the two teams set out on the journey of the web browser.
Team A decided to play by the book and choose the Waterfall Methodology for the development. However, after a serious discussion, Team B decided to take a leap of faith and choose Agile as their development model.
Team A, Waterfall Methodology, development plan as follows:
Team B, Agile Methodology, as follows:
Both the teams have put their best efforts into getting the product to a complete stage. But then, out of the blue, due to the rapidly changing environment, the company's head comes up with an entirely new set of features, wants it implemented as quickly as possible, and wants to push out a working model in 2 days.
Team A was now in a fix, they were still in their design phase and did not yet start coding, and they had no working model to display. Moreover, it was practically impossible for them to implement new features because there is no reverting to the old phase in the Waterfall Methodology once you proceed to the next stage. This means they would have to start from square one again. That would incur high costs and a lot of overtime.
THANKS TO AGILE DEVELOPMENT, Team B was ahead of Team A in many aspects. They also had the working product with most of the core requirements since the first increment. And it was a piece of cake for them to add the new requirements. All they had to do was schedule these requirements for the next increment and then implement them.
Advantages and Disadvantages
Advantages:
Disadvantages:
Agile is a framework that defines how software development needs to be carried on. Agile is not a single method. Instead, it represents the various collection of methods and practices that follow the value statements provided in the manifesto. Agile methods and techniques do not promise to solve every problem present in the software industry (No software model ever can). But they sure help to establish a culture and environment where solutions emerge.
References
https://www.geeksforgeeks.org/software-engineering-agile-software-development/
https://en.wikipedia.org/wiki/Agile software development