Presented by Jennifer Bleen, PMP Project Services Practice of Cardinal Solutions Group, Inc. Contact:
Agile Manifesto We are uncovering better ways of developing software by doing it and helping others to do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more
Agile Principles 1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software 2. Welcome changing requirements, even late in development. Agile processes harness change for the customer s competitive advantage 3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter time scale 4. Business people and developers must work together daily throughout the project 5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done 6. The most efficient and effective method of conveying information to and within a development team is face to face conversation 7. Working software is the primary measure of progress 8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely 9. Continuous attention to technical excellence and good design enhances agility 10. Simplicity- the art of maximizing the amount of work not done- is essential 11. The best architectures, requirements, and designs emerge from self-organizing teams 12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly
Agile Methods Adaptive Software Development (ASD) Dynamic Systems Development Method (DSDM) Extreme Programming (XP) Feature Driven Development (FDD) Lean Software Development (LD) Scrum
Extreme Programming An Engineering Framework A collection of software engineering techniques Useful as a repository of techniques Useful as a case study on what works
12 Practices of XP Fine scale feedback Pair Programming Release Planning Unit Tests Continuous process Continuous Integration Refactoring Small Releases Acceptance Tests Shared understanding Coding Standards Collective Ownership Simple Design Metaphor Programmer welfare Sustained Pace Acceptance Tests Sustained Pace Pair Programming Refactoring Coding Standards Customer Collective Ownership Unit Tests Small Releases Simple Design Continous Integration Metaphor Release Planning
Why XP Works The 12 Practices are mutually supporting strengths offset weaknesses. Extreme Programming embraces, rather than fights, change The cost of change remains level, and does not rise exponentially. Extreme Programming fosters partnership and collaboration between development and the business stakeholders. Extreme Programming focuses on delivering business value quickly Automated tests, refactoring and pair programming ensure the delivery of robust, production ready software. Extreme Programming focuses on simplicity and on building for today rather than tomorrow
SCRUM: A Management Method Scrum is geared toward management Emphasizes team emergent behavior Tracks product in 2 levels (product and sprint) Emphasizes people and requires good people
Key components of Scrum Process Roles The Product Owner The Scrum Master The Team Work Product The Product Backlog The Sprint Backlog The Sprint Burndown Product Increment Activities The Sprint Planning The Sprint The Daily Scrum The Sprint Review The Sprint Retrospective
Step 1- Create the Backlog Roles Involved: Product Owner Scrum Master Team Artifacts Involved: Product Backlog
Sample Product Backlog Use excel Number each item for easier reference Product owner prioritizes work Name of each task Team estimates task
Step 2: Expand the backlog into tasks in a sprint planning meeting Roles Involved: Product Owner Scrum Master Team Artifacts Involved: Product Backlog Sprint Backlog
The Sprint Planning Meeting Product Owner describes highest priority features to the Team. Team decides what the can commit to delivering in the Sprint. Both create the Sprint Backlog.
Sample Sprint Backlog Example Heading from product backlog How must work per week for the task What is the task Who is responsible Tasks are detailed from product backlog All tasks MUST be assigned eventually
Step 3: Execute a sprint Roles Involved: Scrum Master Team Artifacts Involved: Product Backlog Sprint Burndown Chart Strict Timebox
The Sprint Strictly 30 consecutive calendar days: Date takes priority over features Sprint Backlog and Sprint Burndown Charts show progress The Product Owner cannot change priorities Sprint results in a demonstrate able result
Step 3A: Hold Daily Meetings Roles Involved: Scrum Master Team Artifacts Involved: Product Backlog Sprint Burn down Chart
Scrum Meetings Meeting Format Daily 15-minutes Stand-up (keep it short) Not for problem solving to id problems Three questions: 1. What did you do yesterday 2. What will you do today? 3. What obstacles are in your way? Management and team are invited Help avoid other unnecessary meetings Only team can talk
The Sprint Burndown Chart Similar to Earned Value Updated as a result of the Scrum meeting
Step 4 - Demonstrate Functionality Roles Involved: Product Owner Scrum Master Team Artifacts Involved: Product Backlog Product Increment
Common Findings and Best Practices It is a good idea to combine parts of Methodologies No out of the box SDLC will work immediately Always tailor Pick pieces that work best Evaluate the process explicitly after each iteration Methodology will not work without acceptance by team Methodology will not work unless aligned with people, project, and corporate behavior
Timebox the Work Create 1 6 week timeboxes Negotiate amount of work in timebox with everyone involved Don t interrupt the timebox Drop functionality rather than slip Avoid burning people out though Estimate for next iteration is counterintuitive If you slipped, make time shorter and do less Eventually you should land on about 4 weeks
Adopt Good Requirements Practices Focus on functionality rather than traditional requirements Use use cases to describe functionality Tie tests to requirements Prioritize and cost requirements Manipulating requirements should have a cost Requirements development is a skill Train and practice for good requirements Make examples of requirements
Grow Software Start with core and add richness to features Don t polish features to completion, grow them Organize around the architecture This is not bolt on software
Create Automated Integration Create a build area for nightly check-in Create a smoke test for nightly build Automate reporting on build and test Must create a culture for this technique
Prefer Visual Models Faster to create, change, absorb visual models Use UML (it s a standard) Apply visual modeling to requirements and business modeling, not just design
Resources Agility and Discipline Made Easy (Kroll and MacIssac) Agile Software Development with SCRUM (Schwaber) Balancing Agility and Discipline (Boehm and Turner) Agile Software Development: Evaluating Methods for your Organization (Koch) Agile Alliance visit http://www.agilealliance.org Columbus XP User Group visit http://www.cardinalsolutions.com/xp/
Contact Information Jennifer Bleen, PMP Principle Consultant, Cardinal Solutions jbleen@cardinalsolutions.com President, XP User Group xpusergroup@yahoo.com