Skip to content

Agile Model

Agile software development is defined by light, nimble, and active processes designed to fit the specific needs of a project while avoiding time-wasting activities. It was proposed in the mid-1990s to overcome the shortcomings of the Waterfall model, specifically to help projects adapt to frequent change requests. It involves breaking a project into smaller parts and adjusting to changing requirements.


1. The Agile Manifesto and Core Principles

The ideology of Agile is centered on four key values:

  • Individuals and interactions over processes and tools.
  • Working software over comprehensive documentation.
  • Customer collaboration over contract negotiation.
  • Responding to change over following a plan.

Primary Principles:

  • Incremental Progress: Progress is measured by the incremental release of working software every few weeks.
  • Communication: Face-to-face communication is prioritized over written documentation. To facilitate this, teams often share a single office space.
  • Team Composition: Teams are kept small, typically 5 to 9 people, making the model ideal for smaller projects.
  • Requirements Management: Requirements are decomposed into small parts developed over 1–4 weeks. They are prioritized in a "stack" and can be added, removed, or reprioritized at any time.

Advantages

  • Focus on customer value - Agile places a high priority on providing customer with value by attending to their requirements and preferences. Agile guarantees that the important features are implemented first
  • Enhanced Team Morale
  • Early and Continuous Delivery

Disadvantages

  • Dependency on Customer Availability
  • Dependency on Team Dynamics
  • Increased Overhead

2. Principal Agile Techniques

  • User Stories: Simple descriptions of required functionality, used instead of complex use cases.
  • Metaphors: A common vision proposed by developers to describe how the system works.
  • Spike: A simple program written to explore potential solutions to a problem.
  • Refactoring: Restructuring existing code to improve efficiency or structure without changing its external behavior.
  • Agile Documentation: Teams are encouraged to "travel light," keeping documents concise and focusing on information that is unlikely to change.

3. Extreme Programming (XP)

Proposed by Kent Beck in 1999, XP takes best practices to "extreme" levels (e.g., if code review is good, do it all the time via pair programming).

  • Four Core Values: Communication, Simplicity (build for today), Feedback, and Courage (willingness to discard code).
  • Key Practices:
    • Test-Driven Development (TDD): Writing unit tests before writing the actual code.
    • Pair Programming: Two programmers working at one machine.
    • Continuous Integration: Building and testing the system several times a day.
    • Collective Ownership: Anyone can change any part of the code at any time.
    • On-site Customer: A user is a full-time part of the development team to answer questions.
    • 40-Hour Week: Avoiding developer burnout as a rule.

Advantages

  • Customer-approved results
  • Improved code quality
  • Flexibility and Adaptability
  • Reduced Risk
  • Higher Efficiency

Disadvantages

  • High Customer involvement
  • High costs
  • Lack of documentation
  • Time consuming

4. The Scrum Framework

Scrum is an agile process where development progresses through a series of month-long "sprints". Pasted image 20260423231709.png - Roles: - Product Owner: Represents customer interests and prioritizes the product backlog. - Scrum Master: Facilitates the process, removes impediments, and buffers the team from outside interference. - Development Team: A self-organizing, cross-functional group of 5 to 10 people. - Ceremonies (Meetings): - Sprint Planning: Negotiating which backlog items will be completed in the next sprint. - Daily Scrum: A 15-minute daily stand-up to discuss progress (What did I do yesterday? What will I do today? What are my obstacles?). - Sprint Review: An informal demo of new features at the end of a sprint. - Artifacts: - Product Backlog: A prioritized list of all desired work. - Sprint Backlog: A subset of items selected for the current sprint. - Burndown Charts: Visual representations of "work done" versus time remaining (available for sprints, releases, or the whole product). (Sprint, Release, Product)


5. Comparisons and Shortcomings

  • Waterfall vs. Agile: Waterfall measures progress through artifacts (plans, documents); Agile measures progress through working versions of the product. Agile can be viewed as using the Waterfall model on a very small scale within each iteration.
  • RAD vs. Agile: Rapid Application Development (RAD) relies on "quick-and-dirty" prototypes; Agile emphasizes systematic development of incremental features.
  • Shortcomings:
    • Requires highly skilled personnel.
    • Hard to manage "feature creep" and quantify exact costs/time.
    • Lack of formal documentation can lead to maintenance difficulties once the original team disperses.
    • Short iterations can sometimes inhibit a necessary long-term perspective.
Feature Waterfall Agile
Approach Linear Iterative
Flexibility Rigid Flexible
Customer Role Final Review Constant involvement
Team Structure Specialized Cross-functional