Lecture 3-Agile, XP, US, and UAT

Introduction to Agile Methodology

  • Presented by: Masud Rahman, PhD, Assistant Professor, Faculty of Computer Science, Dalhousie University

  • Contact: masud.rahman@dal.ca

Historical Context of Software Development Models

  • Waterfall Model (1970)

  • V Model (1980s)

  • Prototyping Model (1975)

  • Spiral Model (1986)

  • Recap from Lecture 2: Focus on plan-driven development and rapid software development.

Case Study: Software Project Management

  • Homework Q1:

    • Scenario: Working on a software project with novel technologies where early deliverable is crucial.

    • Suggested Process Model: Evaluate accordingly based on the project requirements and the client's willingness to collaborate.

Rapid Software Development Characteristics

  • Essence of Rapid Development:

    • Quick Development

    • Frequent Delivery

    • Working Software

  • Scenario: Impact of COVID-19 on online shopping and delivery.

  • Businesses, such as Walmart/Superstore, face rapid requirement changes, necessitating quick software development in small, frequent iterations.

Overview of Agile Methodology

  • Lecture 3 Topics:

    • Agile methods

    • Agile development technique

    • Agile project management

  • What is Agile?

    • Agile emphasizes adaptability and swift responsiveness to change.

Agile Manifesto

  • Origin: Formed by 17 experts in 2001 at a ski resort in Utah.

  • Core Philosophy:

    • Shift focus from traditional processes to fostering direct communication and iterative progress.

  • Values (More Important / Less Important):

    • Individuals & interactions / Processes & tools

    • Working software / Comprehensive documentation

    • Customer collaboration / Contract negotiation

    • Responding to change / Following a plan

Agile Principles Behind the Manifesto

  • Influential figures in Agile principles include:

    • Robert Martin (Test-Driven Development)

    • Martin Fowler (Refactoring)

    • Kent Beck (Extreme Programming)

Key Agile Principles (1-4)

  1. Customer satisfaction is the highest priority.

  2. Changes in requirements are welcome, even late in development.

  3. Deliver working software frequently, with a preference for the shorter timescale.

  4. Business stakeholders and developers must collaborate daily throughout the project.

Key Agile Principles (5-12)

  1. Build projects around motivated individuals.

  2. The most efficient method of conveying information is face-to-face conversation.

  3. Working software is the primary measure of progress.

  4. Agile processes promote sustainable development.

  5. Continuous attention to technical excellence and good design enhances agility.

  6. Simplicity is essential.

  7. The best architectures, requirements, and designs emerge from self-organizing teams.

  8. The team reflects on how to become more effective and adjusts accordingly.

Applicability of Agile Methods

  • Ideal for small to medium-sized products, like mobile applications.

  • Customized software requires strong collaboration from customers.

  • Suitable for safety-critical systems, provided there's limited regulatory impact.

Problems with Agile Methods

  • Generally not suitable for maintenance of existing software products.

  • Typically caters to co-located teams rather than distributed ones.

  • Issues with documentation reliability can arise, leading to gaps in continuity should key developers leave.

  • Conflict with traditional contractual obligations concerning project expenses and timelines.

Agile Statistics from Stack Overflow

  • Agile Methodologies Usage:

    • Total Respondents: 58,981

    • Agile: 85.4%

    • Scrum: 62.7%

    • Kanban: 35.2%

  • Popular approaches include pair programming, extreme programming, and formal standards like ISO 9001.

Tiny Quiz Challenge: Assessing Understanding

  • Key questions touching on Agile concepts, practices and principles.

Agile Development Technique: eXtreme Programming (XP)

  • Originated by Kent Beck in 1996.

  • Core Practice Elements:

    • Iterative development with daily builds.

    • Testing every build and delivering bi-weekly.

  • When to Use:

    • When requirements are likely to change frequently.

    • In high-risk projects using untested technologies.

    • In small and co-located teams.

XP Practices: Core Principles

  1. Incremental planning

  2. Small releases

  3. Simple design

  4. Test-first development

  5. Refactoring

  6. Pair programming

  7. Collective ownership

  8. Continuous integration

  9. Sustainable pace

  10. On-site customer collaboration

Themes in XP Practices

  • Fine-grained feedback: Achieved through techniques like pair programming and Test-Driven Development (TDD).

  • Continuous process: Incorporates continuous integration and design improvements.

  • Shared understanding: Focus on coding standards and collective ownership.

  • Programmer’s wellbeing: Emphasizes a sustainable work pace with minimal crunch time.

Highlights from User Stories

  • User Story Format: "As a <type of user>, I want to <requirement> so that <rationale>"

  • Good user stories should encompass the INVEST criteria: Independent, Negotiable, Valuable, Estimable, Small, Testable.

Three C’s of a User Story

  1. Card: Brief description of the requirement and priority.

  2. Conversation: Engagement with stakeholders to explore value.

  3. Confirmation: Defined acceptance tests confirm completion.

User Stories and Acceptance Tests

  • Acceptance tests outline conditions for user scenarios to ascertain proper functionality.

  • Each test translates into specific engineering tasks to ensure clarity and precision in development.

Homework and Further Reading Recommendations

  • Further exploration of course material and Agile principles can be found through key texts and resources mentioned.

Conclusion and Next Steps

  • Summary of Agile methodologies, principles, and key practices: Agile Manifesto, XP, User Stories.

  • Next lecture scheduled for Jan 20, 2025.