# Agile Model

Agile development has emerged in response to the ‘ad-hoc’ reality of many software development projects. This approach places emphasis on the team developing the system rather than following the pre-defined structured development stages. Agile methods remove the need for detailed requirements and complex design documentation. Rather, they encourage cooperation and teamwork.&#x20;

Agile methods are particularly well suited to user-centred software development and software applications that are modified regularly such that they evolve and are updated over time. Many mobile apps are developed using this approach. This can be seen in the frequency of updates and the nature of app development itself.

<figure><img src="https://115028830-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhF2chp1dcxIJhlOQSKVq%2Fuploads%2Fw3QrYFO9ZUB3ueJrzGyN%2Fimage.png?alt=media&#x26;token=b115a4b0-804b-46db-8b8a-89fff1680e9a" alt="" width="375"><figcaption><p>The Agile Method - a more iterative approach to development</p></figcaption></figure>

Agile development is characterised by small teams of developer. It is preferable for one team member to be a knowledgeable and experienced user. Small teams are better able to share ideas and work on solutions together. Larger teams tend to break into smaller groups – for agile methods to be a success everyone must be an equal member with a clear shared purpose. Often the team members are multi-skilled so all are actively contributing.&#x20;

Typical characteristics of an agile software development approach include:&#x20;

* **Agility:** Speed of getting a working solution to market or to users. Basic functionality is included initially so operational software can be released as soon as possible.&#x20;
* **Adaptive:** Interaction within the team and users which allows the solution to be selectively refined throughout the development process.&#x20;
* **Progressive:** Working versions of the software are regularly delivered. Each version adds the next most important functions.&#x20;
* **Collaborative:** The development team and clients collaborate closely throughout the development. Often a client representative or user is part of the team. The needs and ongoing feedback of the client and users drives the direction of the development.

{% embed url="https://www.youtube.com/watch?t=129s&v=zi7uGg6FVM4" %}
Agile Explained with Burgers
{% endembed %}



### When is the Agile approach appropriate?

Agile thrives in industries where **flexibility, rapid iteration, and customer feedback** are essential. These projects often have **evolving requirements**, and Agile allows teams to adjust as they learn more.

The following factors are likely to lead to an Agile approach:

* **Requirements change frequently**, and teams need flexibility.
* **Fast feedback loops** allow for continuous improvement.
* **Time-to-market is critical**, and teams release small updates quickly.
* **User-centered development**, where features evolve based on customer feedback.



### **Example: Developing a Ride-Sharing App**

**Scenario:** A company is developing a **ride-sharing app** that allows users to book rides, track drivers, and make payments.

**Why Agile?**

* **Evolving Requirements** – User needs and market trends shift rapidly, requiring adaptability.
* **User Feedback-Driven** – Features like pricing models and ride options can be refined based on real-world data.
* **Fast, Incremental Releases** – The app can launch with essential functions and improve over time.

**Agile Process (Sprint-Based Development):**

1. **Requirements Definition (Sprint 0)** – The team gathers high-level needs:
   * Users must request rides and see driver availability.
   * Drivers need an interface to accept rides.
2. **Determining Specifications (Sprint 1)** – The team defines a **Minimum Viable Product (MVP)**:
   * Basic ride request and driver-matching system.
   * GPS tracking for riders and drivers.
   * Simple cash-based payment option (no digital payments yet).
3. **Design (Sprint 2)** – Designers create wireframes for the rider and driver apps, ensuring an intuitive user interface.
4. **Development (Sprint 3-5)** – Developers work on key features in **short sprints**:
   * **Sprint 3**: Build the ride request and driver-matching system.
   * **Sprint 4**: Integrate GPS tracking for real-time location updates.
   * **Sprint 5**: Implement a simple rating system for drivers and riders.
5. **Integration (Sprint 6)** – The app is tested with a small group of users (beta testing in one city), gathering feedback for improvements.
6. **Testing and Debugging (Sprint 7-8)** – Bugs are fixed, edge cases are tested, and the system is optimised for performance.
7. **Installation (Sprint 9)** – The app is launched in select locations, with marketing efforts focused on driver recruitment.
8. **Maintenance (Ongoing Sprints)** –
   * **Sprint 10**: Add credit card and digital wallet payment options.
   * **Sprint 11**: Introduce surge pricing and ride fare estimation.
   * **Sprint 12+**: Expand to new cities and optimise the matching algorithm based on real-world usage.
