Agile Software Development

Compiled By Srinivasaragavan Devanathan
Listen to this Article



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:

  • One of the fundamental priorities is to satisfy the customer through the early and continuous delivery of valuable software.
  • It welcomes changing requirements, even late in development.
  • Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shortest timescale.
  • Build projects around motivated individuals. Give them the environment and the support they need, and trust them to get the job done.
  • Working software is the primary measure of progress.
  • Simplicity. The art of maximizing the amount of work not done is essential.
  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

Development in Agile

A brief overview of how development occurs in Agile philosophy:

  • In Agile development, Design and Implementation are considered to be the central activities in the software process.
  • The design and implementation phase also incorporate other activities such as requirements elicitation and testing.
  • In an agile approach, iteration occurs across activities. Therefore, the requirements and the design are developed together rather than separately.
  • The allocation of requirements and the design planning and development as executed in a series of increments. The ability to run different phases in parallel gives Agile Development an extra level of flexibility.
  • An agile process focuses more on code development rather than documentation.

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:

  • Requirement analysis and gathering – 1.5 Months
  • Design of System – 2 Months
  • Coding phase – 4 Months
  • System Integration and Testing – 2 Months
  • User Acceptance Testing – 5 Weeks


Team B, Agile Methodology, as follows:

  • As the prescriptions of the Agile Methodology, the project was broken up into several 
  • short iterations of the same duration.
  • At the end of each iteration, a working product with a new feature must be delivered.
  • Instead of spending 1.5 months on requirements gathering, They will decide the core features required in the product and decide which of these features can be developed in the first iteration.
  • Based on priority, any remaining features that cannot be delivered in the first iteration will be delivered in the subsequent iteration.
  • At the end of the first iterations, the team will deliver working software with the basic core features.

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:

  • Deployment of software is quicker and thus helps increase the customer's trust.
  • Can better adapt to changing requirements and respond faster rapidly.
  • Helps in getting immediate feedback which can be used to improve the software in the next increment.
  • People – Not Process. People and interactions are given a higher priority rather than process and tools.
  • Continuous attention to technical excellence and good design.

Disadvantages:

  • In case of large software projects, it is difficult to assess the effort required at the initial stages of the software development life cycle.
  • The Agile Development is more code-focused and produces less documentation.
  • Agile development is heavily dependent on the inputs of the customer.
  • Face to Face communication is more complex in large-scale organizations.
  • Only senior programmers can make the required decisions during the development process. Hence it's difficult for new programmers to adapt to the environment.

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://www.geeksforgeeks.org

https://en.wikipedia.org/wiki/Agile software development