Agile Methodology & Programming
Click here to load reader
Embed Size (px)
Transcript of Agile Methodology & Programming
Agile Methodology & ProgrammingRic HoltJuly 2009
Reaction to Pure Waterfall Model
Around 1990, writing and discussion of more fine grained and more adaptive methodologies.Need for faster development, notably when spec is not well known and teams are small.
Agile Programming [Wikipedia]Development methodology based onIterative developmentCollaborationSelf-organizing teamsGoal: New release at end of each interactionIdeally: face-to-face team interactionsIdeal team size: 7 +/- 1Daily meetings/interactions, perhaps with client
Definition of the term manifestoA public declaration of principles, policies, or intentions, especially of a political nature.
Agile Software Development = Agile Manifesto Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
Principles behind the Agile Manifesto
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. Business people and developers must work together daily throughout the project. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. Working software is the primary measure of progress. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. Continuous attention to technical excellence and good design enhances agility. Simplicity--the art of maximizing the amount of work not done--is essential. The best architectures, requirements, and designs emerge from self-organizing teams. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Extreme ProgrammingA software methodologyA type of agile programmingHas short development cycles (called boxes) & releasesAdvocates: pair programming, ongoing unit testing, flat management structure, frequent communication among team & with customer
Possible drawbacks of extreme programming [Beck 1996]Lack of overall specification(In)ability to scale up to large projects
The game of rugby --- similar to American footballScrum. Packs of opposing players push against each other for possession of the ballOnce a team gets the ball, it attempts to sprint to the goal line.
The rugby scrum
The rugby sprintwesleying.blogspot.com/2009/03/mens-club-rugb..
Scrum Development Scrum: incremental framework for managing complex work (such as new product development) commonly used with agile software development.
Three major roles in scrumScrumMaster, who maintains the processes (typically in lieu of a project manager); Product Owner, who represents the stakeholders; and Team, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc.
Daily Scrum (15 minute meeting)What have you done since yesterday? What are you planning to do by today? Do you have any problems preventing you from accomplishing your goal?
Sprint Planning Meeting Plan next 15-30 daysSelect what work is to be done Prepare the Sprint Backlog that details the time it will take to do that work, with the entire team Identify and communicate how much of the work is likely to be done during the current sprint Eight hour limit
Sprint Review MeetingReview the work that was completed and not completed Present the completed work to the stakeholders (a.k.a. "the demo") Incomplete work cannot be demonstrated Four hour time limit
Sprint Retrospective All team members reflect on the past sprint. Make continuous process improvement. Two main questions are asked in the sprint retrospective: What went well during the sprint? What could be improved in the next sprint? Three hour time limit