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)
Customer satisfaction is the highest priority.
Changes in requirements are welcome, even late in development.
Deliver working software frequently, with a preference for the shorter timescale.
Business stakeholders and developers must collaborate daily throughout the project.
Key Agile Principles (5-12)
Build projects around motivated individuals.
The most efficient method of conveying information is face-to-face conversation.
Working software is the primary measure of progress.
Agile processes promote sustainable development.
Continuous attention to technical excellence and good design enhances agility.
Simplicity is essential.
The best architectures, requirements, and designs emerge from self-organizing teams.
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
Incremental planning
Small releases
Simple design
Test-first development
Refactoring
Pair programming
Collective ownership
Continuous integration
Sustainable pace
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
Card: Brief description of the requirement and priority.
Conversation: Engagement with stakeholders to explore value.
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.