570 likes | 1.33k Views
Agile Software Development. Junjie Hu 07/04/2014. The Agile Tide in the Industry. 2. Outline. What is agile software development? Two agile methods Scrum For process management Extreme programming (XP) For coding Conclusion. Agile Software Development .
E N D
Agile Software Development Junjie Hu 07/04/2014
Outline • What is agile software development? • Two agile methods • Scrum • For process management • Extreme programming (XP) • For coding • Conclusion
Agile Software Development Rapid, incremental delivery of software Manifesto for Agile Software Development • A statement of values • Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan http://www.agilemanifesto.org
Outline • What is agile software development? • Two agile methods • Scrum • For process management • Extreme programming (XP) • For coding • Conclusion
Agile Methods Scrum Extreme programming (XP) Adaptive software development (ASD) Dynamic system development method (DSDM) Feature driven development (FDD) Lean software development (LSD) … Process Coding http://www.agilealliance.org 6
Requirements Churn • Requirements churn • During a project the customers can change their minds about what they want and need • Software development is an empirical, unpredictable and non-repeatable process Frederick P. Brooks, The Mythical Man-Month: Essays on Software Engineering, 1975
Scrum • An agile, lightweight software development framework • Scrum was intended to be for management of software development projects • Accepting that the problem cannot be fully understood or defined • Focusing instead on maximizing the team's ability to deliver quickly and respond to emerging requirements
Definition of Scrum • 橄欖球Rugby術語:前鋒對陣爭球 • A scrum is a way to restart the game after an interruption • The forwards of each side come together in a tight formation and struggle to gain possession of the ball when it is tossed in among them
Waterfall Model vs. Scrum Requirements Design Implementation Verification Rather than doing all of one thing at a time... Time ...Scrum teams do a little of everything all the time Time
Time-boxes • Sprint • Sprint planning • Daily scrum • Sprint demo • Sprint retrospective The Scrum Framework Roles Artifacts • Product owner • Scrum master • Team • Product backlog • Sprint backlog • Burndown chart
As a user, I want to cancel a reservation, so that I don’t have to pay for a room I won’t use. Role: Product Owner • Provide product vision • Define the features of the product as items in the product backlog • Each item is a user story • A short, simple description of a feature told from the perspective of the person who desires the new capability, usually a user or customer of the system • Prioritize features according to business value
Role: Scrum Master • Act as the sheepdog for the team • Responsible for keeping the flock heading in the same direction and keeping the wolves away • Work with the management to remove impediments for the scrum team • Responsible for the scrum process • Ensure that the scrum team understands the scrum values, practices, and rules
Role: The Team • Turn product backlog items into increments of potentially shippable functionality every sprint • 5~9 members • Cross-functional • Team members must have all of the skills necessary to complete the selected product backlog items
Time-boxed Activity: Sprint • Scrum projects make progress in a series of “sprints” • 小步快跑 (iterations) • Product is designed, coded, and tested during the sprint • Ideally, selected work does not change during a Sprint • Typical duration is 2~4 weeks • A constant duration leads to a better rhythm 15
What? • Define sprint goal • Analyze and select product backlog • Estimate sprint backlog in story points • Define time and place for the daily scrum • Determine sprint demo date Time-boxed Activity: Sprint Planning
How Scrum Works 17 17
Time-boxed Activity: Daily Scrum Meeting • Timeboxed at 15 minutes regardless of the team's size • All attendees should stand • The daily standup • Each team member answers three questions • What have you done since yesterday? • What are you planning to do by tomorrow? • Do you have any problems preventing you from accomplishing your goal? • Not for problem solving • Only the team can speak
A Daily Scrum Henrik Kniberg, Scrum and XP from the Trenches, InfoQ Enterprise Software, 2007 Development Series, 2007
Time-boxed Activity: Sprint Demo • All sprints end with a demo • Team presents what it accomplished during the sprint • …and not done • Informal collaboration • Invite stakeholders and management • No slides show • 4-hour time-box for one month sprints
Time-boxed Activity: Sprint Retrospective • Inspect how the last sprint went in regards to people, relationships, process and tools • Identify actionable improvement measures for the team to implement in the next sprint • 3-hour time-box for one month sprints
Visual Management: Make Things Obvious • Sprint info page • Burndown chart • Wall-based taskboard • Defect trend chart • The system anatomy (Ericsson) • Showing the dependencies between capabilities in the system
Burndown Chart • A publicly displayed chart showing the number of tasks remaining for the current sprint
Outline • Agile software development • Agile methods • Scrum • For process management • Extreme programming (XP) • For coding • Conclusion
Extreme Programming (XP) • Coding is the key activity throughout a software product • XP is extreme because commonsense practices taken to extreme levels
XP is Extreme • Since design is good, everybody will design daily • Refactoring • Since code reviews are good, review code all the time • Pair programming • Since testing is good, everybody will test all the time • Testing driven development (TDD) • Since integration testing is important, build andintegrate test several times a day • Continuous integration (CI) • Since simplicity is good, keep the system in the simplest design that supports its current functionality • …
XP Best Practices Simple design Prototype User stories Design Iteration plan Refactoring Coding Planning Pair programming Testing Unit test Release Acceptance test Continuous integration
Outline • What is agile software development? • Two agile methods • Scrum • For process management • Extreme programming (XP) • For coding • Conclusion
Conclusion • Agile software development is a trend • Adapting to quickly changed requirements • Iterative delivery • Scrum for process management • XP for coding