SE206 - Unit 1: Introduction to Agile Development

Glossary of Terms

A group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.

A formal proclamation of four key values and 12 principles to guide an iterative and people-centric approach to software development. Values include: Individuals and interactions over processes and tools; Working software over comprehensive documentation; Customer collaboration over contract negotiation; Responding to change over following a plan.

A development approach where the software is built and delivered in pieces (increments). Each increment adds more functionality, allowing early feedback and use.

A development approach that cycles through development phases (like requirements, design, implementation, testing) multiple times in short durations (iterations), refining the product with each cycle.

An Agile framework for managing complex projects, typically software development. It uses iterative cycles called Sprints and emphasizes collaboration, self-organization, and frequent delivery.

A team structure, common in Agile, where the team members collectively decide how best to accomplish their work, rather than being directed by a manager outside the team.

A framework defining tasks performed at each step in the software development process. Common phases include Requirements Analysis, Design, Implementation (Coding), Testing, Deployment, and Maintenance.

(In Scrum) A fixed-length iteration (usually 1-4 weeks) during which a potentially shippable product increment is created.

Software development approaches, like the Waterfall model, characterized by sequential phases, extensive upfront planning, and resistance to change once a phase is complete.

A traditional, sequential software development model where progress flows steadily downwards (like a waterfall) through phases like Requirement Gathering, System Analysis, Coding, Testing, Implementation, and Maintenance. It has limited flexibility for changes.

A core principle in Agile, emphasizing the delivery of functional software increments as the primary measure of progress, rather than focusing solely on documentation or phase completion.

An Agile software development framework intended to improve software quality and responsiveness to changing customer requirements. It emphasizes specific engineering practices like pair programming, test-driven development, and continuous integration.

Key Concepts from Unit 1

Traditional SDLC (Waterfall Model)

The Software Development Life Cycle (SDLC) outlines the phases of software creation. The traditional Waterfall Model follows a strict sequence:

  1. Requirement Gathering
  2. System Analysis
  3. Design
  4. Coding
  5. Testing
  6. Implementation
  7. Operations & Maintenance

This model is linear and struggles with changes once a phase is complete.

What is Agile Development?

Agile is a group of software development processes based on:

  • Iterative: Development occurs in repeating cycles (iterations).
  • Incremental: Software is delivered in functional pieces (increments).
  • Self-organizing: Teams manage their own work to achieve goals.

It focuses on flexibility, collaboration, and responding to change.

Agile vs. Traditional Methods

A key difference lies in how they handle project constraints:

  • Traditional (e.g., Waterfall): Features/Functionality are usually Fixed upfront. Time and Resources are flexible (often leading to delays/overruns).
  • Agile: Time (iterations) and Resources (team size) are often Fixed. Functionality is flexible and evolves based on priority and feedback.

This means Agile focuses on delivering the *most valuable* features within a fixed timeframe and budget, while Traditional methods aim to deliver a *fixed set* of features, often at the expense of time and budget predictability.

The Agile Manifesto

Defines the core values guiding Agile development:

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

While there is value in the items on the right, Agile values the items on the left more. This is a declaration of priorities, emphasizing people, functionality, partnership, and flexibility.

Agile Principles (Selected)

The Agile Manifesto is supported by 12 principles. Some key ones include:

  • Highest priority is to satisfy the customer through early and continuous delivery of valuable software. (Deliver value often)
  • Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. (Embrace change)
  • Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. (Frequent delivery)
  • Business people and developers must work together daily throughout the project. (Close collaboration)
  • Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. (Trust individuals)
  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. (Efficient communication)
  • Working software is the primary measure of progress. (Measure by results)
  • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. (Sustainable pace)
  • Simplicity—the art of maximizing the amount of work not done—is essential. (Keep it simple)
  • The best architectures, requirements, and designs emerge from self-organizing teams. (Empower teams)

Agile Characteristics

Key characteristics of Agile development processes:

  • Modularity: The overall process is broken down into smaller, manageable parts (iterations/sprints).
  • Iterative: Development cycles repeat, allowing for refinement and learning with each cycle.
  • Time-bound: Iterations have a fixed duration (typically 1-6 weeks), providing rhythm and predictability.
  • Adaptive: The process can easily adjust to changing requirements, new information, or emergent risks.
  • People-oriented: Emphasis is placed on individuals, their skills, motivation, and interactions.
  • Collaborative: Requires strong communication and teamwork among developers, business people, and customers.

Advantages of Agile

Adopting Agile offers several benefits:

  • Early Realization of Value: Due to the incremental nature, functional parts of the software are delivered early, allowing customers to gain value sooner. Example: A working login system might be delivered in the first few sprints, even if other features are missing.
  • Visibility & Early Issue Identification: Frequent, small releases make the product visible early and continuously, helping identify defects, misunderstandings, or usability issues much sooner than in traditional models. Example: If the search functionality built in sprint 3 isn't performing as expected, it's caught and fixed within that sprint or the next, not months later during a dedicated testing phase.
  • Adaptability to Change: Agile thrives on change. It's built to welcome and incorporate changing requirements throughout the project lifecycle, which is crucial in rapidly evolving markets. Example: If a competitor launches a new feature, an Agile team can quickly pivot to incorporate a similar feature in the next sprint, while a Waterfall team might be stuck on the original, now less competitive, plan.
  • Increased Customer Satisfaction: Through continuous collaboration and frequent delivery of working software, customers are more engaged, see progress regularly, and receive a product that better meets their current needs. Example: A customer seeing a new working feature every two weeks feels more involved and satisfied than waiting a year for the entire product.
  • Building the Right Product: The iterative process with continuous feedback loops ensures that the development stays aligned with customer needs and market demands, reducing the risk of building a product nobody wants. Example: By showing working software every sprint, the team and customer can verify that the features being built are truly valuable and adjust priorities if needed.

Overview of Agile Methodologies

Agile is an umbrella term. Specific methodologies provide frameworks and practices to implement Agile principles. Examples include:

  • Extreme Programming (XP): Known for its engineering practices (pair programming, TDD, continuous integration).
  • Scrum: A lightweight framework focused on team collaboration, accountability, and iterative progress (Sprints).
  • Dynamic Systems Development Method (DSDM): Focuses on continuous user involvement.
  • Feature Driven Development (FDD): Organizes development around "features" that are valuable to the client.
  • Crystal Method: A family of methodologies focusing on communication and human factors.
  • Adaptive Software Development (ASD): Focuses on continuous adaptation to the unpredictable nature of software development.
  • Unified Process (UP) / Agile UP: An iterative and incremental development process framework.
  • Lean Software Development (LSD): Based on principles from lean manufacturing, focusing on eliminating waste and delivering value quickly.

These methods share the core Agile values of promoting development, teamwork, collaboration, and adaptability.

Essay Questions

Fill in the Blank Questions

True/False Questions

Multiple Choice Questions