Extreme Programming (XP) (English Version) - bytkie/Agiilised-tarkvaraarenduse-meetodikad GitHub Wiki
Extreme Programming (XP) Wiki (English Version)
Theoretical Part
Extreme Programming (XP) is an Agile development methodology aimed at speed and simplicity, based on strict practices and guiding values. XP emphasizes short development cycles, continuous testing, and close collaboration. It focuses on user feedback and frequent releases to allow flexibility and real-time adaptation to customer needs.
History
- Creator: Kent Beck, a leading software development expert.
- Created: In the 1990s, XP emerged to address the need for faster and higher-quality software development, inspired by projects emphasizing tight collaboration and quick changes.
- Agile Method: XP is one of the most popular Agile methodologies, focusing on small iterations, continuous code evolution, and tight teamwork.
Implementation Challenges
- High Discipline Requirement: Demands strict adherence to practices like pair programming, continuous integration, and frequent releases.
- Intensive Communication: Requires close cooperation with the team and client, which can be hard in distributed teams.
- Developer-Focused: XP emphasizes technical excellence but may lack in project management structures, making Scrum or Kanban more suitable for some organizations.
- Unsuitable for Large Projects: Best for small teams (3–10 members); larger teams might struggle with XP's communication needs.
- Hard to Combine with Hybrid Methods: Unlike Scrum or Kanban, XP doesn't integrate easily with hybrid approaches.
When to Use XP
- Small teams with strong technical requirements.
- Projects requiring high code quality.
- Frequently changing requirements.
XP Core Values
- Simplicity – Focus on the simplest effective solution.
- Communication – Open communication among team members.
- Feedback – Constant interaction with the client to adjust quickly.
- Courage – Openness and responsibility in addressing problems.
- Respect – Mutual respect builds trust and shared responsibility.
XP Principles
- Rapid Feedback
- Assumed Simplicity (YAGNI, DRY)
- Incremental Change
- Embrace Change
- Quality Work
5 Phases of XP and Iterative Cycle
- Planning: User stories, estimation, release planning, and spikes.
- Designing: Simple, logical design.
- Coding: Pair programming, coding standards, continuous integration, collective code ownership.
- Testing: Test-Driven Development (TDD), acceptance tests.
- Listening: Constant communication with stakeholders.
12 XP Practices
- Planning Game
- Customer Tests
- Small Releases
- Simple Design
- Pair Programming
- Test-Driven Development (TDD)
- Refactoring
- Collective Code Ownership
- Continuous Integration
- Sustainable Pace
- Metaphor
- Coding Standards
Grouping XP Practices
- Collaboration Practices: Pair Programming, Collective Ownership, Sustainable Pace, Communication
- Code Quality Practices: TDD, Refactoring, Coding Standards, Simple Design
- Project Management Practices: Planning Game, Small Releases, Customer Tests, Metaphor
Refactoring in XP
XP teams use refactoring to deliver clean, valuable code in every iteration, improving structure and readability without changing functionality.
ERD (Entity-Relationship Diagram) in XP
Visual representation of data helps ensure shared understanding from the early phases.
Why ERD?
- Visualizes the structure for all stakeholders
- Helps simplify design
- Aids in refactoring and documentation
ERD Elements
- Entity – Object like User, Order
- Attribute – e.g., name, price
- Relationship – e.g., User places Orders
Example: E-Shop ERD
Entities: Customer, Order, Product, Payment, Category, Stock
Practical Assignment: News Generator
Goal: Create a simple news generator app following XP values.
User Stories:
- User selects category (Tech, Sports, Economy)
- System generates random news with date
- User can add news manually
- User can regenerate the list
Technologies: Python (console app)
Source:
https://www.altexsoft.com/blog/extreme-programming-values-principles-and-practices/