Agile Software Development
Agile methods are incremental development methods in which the increments are small and, typically, new releases of the system are created and made available to customers every two or three weeks
Covering why rapid development became critical, why stable requirements are hard to achieve, the four values of the Agile Manifesto, the five principles of agile methods, what agile methods are best suited for, and how agile minimises documentation
Covering the practical difficulties of applying agile principles, the contract problem, time-based contracts and their risks, agile and software maintenance (maintainability, team continuity, customer involvement), and the balanced view of agile methods' shortcomings
Covering how agile and plan-driven approaches differ in their treatment of design/implementation, how iteration works in each, whether plan-driven can support incremental delivery, the documentation spike, and the ten factors for choosing between the two approaches
Covering XP's origin, the XP release cycle, requirements as user stories, key XP practices, the on-site customer, story cards and the planning game, release deadline handling, XP's rejection of designing for change, refactoring, and which practices are most commonly adopted in practice
Covering XP's four key testing features, test-first development, the benefits of writing tests before code, customer role in acceptance testing, automated testing frameworks, three reasons test-first doesn't guarantee thorough testing, build acceptance rules, and how user stories relate to tasks and test cases
Covering what pair programming is, its three advantages, egoless programming, pair programming vs formal code inspections, how pair programming supports refactoring, productivity findings from both student and experienced programmer studies, the critical value of knowledge sharing, and the dynamic nature of pair assignment
Covering why plan-driven management doesn't suit agile, Scrum's focus and scope, the three Scrum phases, sprints, the product backlog, the Scrum master role, team isolation during sprints, daily stand-up meetings, five advantages of Scrum, and Scrum's original co-located team design versus distributed development
