Software Engineering basics - Agile Methodologies
Agile Methodologies
Definition:
Agile is a software development approach that emphasizes iterative development, flexibility, and collaboration. Instead of planning the entire project upfront, Agile focuses on continuous delivery of small, working increments of software and responding quickly to change.
Think of it like baking a cake in stages—you test and improve each layer as you go, instead of waiting until the end to see if it works.
Key Principles of Agile
Agile is based on the Agile Manifesto, which emphasizes:
-
Individuals and interactions over processes and tools
-
Working software over comprehensive documentation
-
Customer collaboration over contract negotiation
-
Responding to change over following a plan
Other important ideas:
-
Iterative development cycles (short sprints)
-
Continuous feedback from stakeholders
-
Adaptive planning based on real progress
Popular Agile Frameworks
-
Scrum
-
Organizes work into time-boxed iterations called sprints (usually 2–4 weeks).
-
Roles: Product Owner, Scrum Master, Development Team
-
Artifacts: Product Backlog, Sprint Backlog, Increment
-
Meetings: Daily Stand-up, Sprint Planning, Sprint Review, Retrospective
-
-
Kanban
-
Focuses on visualizing workflow using a Kanban board.
-
Emphasizes continuous delivery and limiting work in progress (WIP).
-
No fixed iterations; work is pulled as capacity allows.
-
-
Extreme Programming (XP)
-
Emphasizes technical practices like Test-Driven Development (TDD), pair programming, and continuous integration.
-
-
Lean Software Development
-
Focuses on eliminating waste, optimizing the value stream, and improving efficiency.
-
Benefits of Agile
-
Flexibility: Easy to adapt to changing requirements
-
Faster Delivery: Working software is delivered incrementally
-
Customer Satisfaction: Frequent feedback ensures the product meets needs
-
Improved Collaboration: Teams and stakeholders work closely
-
Higher Quality: Continuous testing and integration catch defects early
Key Terms to Remember
-
Sprint: A short development cycle
-
Backlog: List of tasks or features to implement
-
Daily Stand-up: Quick team sync meeting
-
Increment: Working software produced at the end of a sprint