Skip to content
Related Articles
Open in App
Not now

Related Articles

Software Engineering | Agile Development Models

Improve Article
Save Article
  • Difficulty Level : Easy
  • Last Updated : 02 Feb, 2023
Improve Article
Save Article

In earlier days Iterative Waterfall model was very popular to complete a project. But nowadays developers face various problems while using it to develop software. The main difficulties included handling customer change requests during project development and the high cost and time required to incorporate these changes. To overcome these drawbacks of the Waterfall model, in the mid-1990s the Agile Software Development model was proposed. 

The Agile model was primarily designed to help a project adapt to change requests quickly. So, the main aim of the Agile model is to facilitate quick project completion. To accomplish this task agility is required. Agility is achieved by fitting the process to the project and removing activities that may not be essential for a specific project. Also, anything that is waste of time and effort is avoided. 

Actually Agile model refers to a group of development processes. These processes share some basic characteristics but do have certain subtle differences among themselves. 

Agile SDLC models: 

  • Crystal: Crystal Agile methodology places a strong emphasis on fostering effective communication and collaboration among team members, as well as taking into account the human elements that are crucial for a successful development process. This methodology is particularly beneficial for projects with a high degree of uncertainty, where requirements tend to change frequently.
  • Atern: This methodology is tailored for projects with moderate to high uncertainty, where requirements are prone to change frequently. Its clear-cut roles and responsibilities focus on delivering working software in short time frames, and governance practices set it apart and make it an effective approach for teams and projects. 
  • Feature-driven development: This approach is implemented by utilizing a series of techniques like creating feature lists, conducting model evaluations, and implementing a design-by-feature method to meet its goal. This methodology is particularly effective in ensuring that the end product is delivered in a timely manner and that it aligns with the requirements of the customer.
  • Scrum: This methodology serves as a framework for tackling complex projects and ensuring their successful completion. It is led by a Scrum Master, who oversees the process, and a Product Owner, who establishes the priorities. The Development Team, accountable for delivering the software, is another key player.
  • Extreme programming (XP): It uses specific practices like pair programming, continuous integration, and test-driven development to achieve these goals. Extreme programming is ideal for projects that have high levels of uncertainty and require frequent changes, as it allows for quick adaptation to new requirements and feedback.
  • Lean development: It is rooted in the principles of Lean Manufacturing and aims to streamline the process by identifying and removing unnecessary steps and activities. This is achieved through practices such as continuous improvement, visual management, and value stream mapping, which helps in identifying areas of improvement and implementing changes accordingly. 
  • Unified process: Unified Process is a methodology that can be tailored to the specific needs of any given project. It combines elements of both waterfall and Agile methodologies, allowing for an iterative and incremental approach to development. This means that the UP is characterized by a series of iterations, each of which results in a working product increment, allowing for continuous improvement and delivery of value to the customer.

All Agile methodologies discussed above share the same core values and principles, but they may differ in their implementation and specific practices. Agile development requires a high degree of collaboration and communication among team members, as well as a willingness to adapt to changing requirements and feedback from customers.

In the Agile model, the requirements are decomposed into many small parts that can be incrementally developed. The Agile model adopts Iterative development. Each incremental part is developed over an iteration. Each iteration is intended to be small and easily manageable and can be completed within a couple of weeks only. At a time one iteration is planned, developed, and deployed to the customers. Long-term plans are not made. 

The agile model is a combination of iterative and incremental process models. The steps involve in agile SDLC models are: 

  • Requirement gathering
  • Requirement Analysis
  • Design
  • Coding
  • Unit testing
  • Acceptance testing

The time to complete an iteration is known as a Time Box. Time-box refers to the maximum amount of time needed to deliver an iteration to customers. So, the end date for an iteration does not change. However, the development team can decide to reduce the delivered functionality during a Time-box if necessary to deliver it on time. The central principle of the Agile model is the delivery of an increment to the customer after each Time-box. 

Principles of Agile model: 

  • To establish close contact with the customer during development and to gain a clear understanding of various requirements, each Agile project usually includes a customer representative on the team. At the end of each iteration stakeholders and the customer representative review, the progress made and re-evaluate the requirements.
  • The agile model relies on working software deployment rather than comprehensive documentation.
  • Frequent delivery of incremental versions of the software to the customer representative in intervals of a few weeks.
  • Requirement change requests from the customer are encouraged and efficiently incorporated.
  • It emphasizes having efficient team members and enhancing communications among them is given more importance. It is realized that enhanced communication among the development team members can be achieved through face-to-face communication rather than through the exchange of formal documents.
  • It is recommended that the development team size should be kept small (5 to 9 people) to help the team members meaningfully engage in face-to-face communication and have a collaborative work environment.
  • The agile development process usually deploys Pair Programming. In Pair programming, two programmers work together at one workstation. One does coding while the other reviews the code as it is typed in. The two programmers switch their roles every hour or so.

Advantages:  

  • Working through Pair programming produces well-written compact programs which have fewer errors as compared to programmers working alone.
  • It reduces the total development time of the whole project.
  • Agile development emphasizes face-to-face communication among team members, leading to better collaboration and understanding of project goals.
  • Customer representatives get the idea of updated software products after each iteration. So, it is easy for him to change any requirement if needed.
  • Agile development puts the customer at the center of the development process, ensuring that the end product meets their needs.

Disadvantages:  

  • The lack of formal documents creates confusion and important decisions taken during different phases can be misinterpreted at any time by different team members.
  • Agile development models often involve working in short sprints, which can make it difficult to plan and forecast project timelines and deliverables. This can lead to delays in the project and can make it difficult to accurately estimate the costs and resources needed for the project.
  •  Agile development models require a high degree of expertise from team members, as they need to be able to adapt to changing requirements and work in an iterative environment. This can be challenging for teams that are not experienced in agile development practices and can lead to delays and difficulties in the project.
  • Due to the absence of proper documentation, when the project completes and the developers are assigned to another project, maintenance of the developed project can become a problem.
My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!