Assignment 1
Agile Development Methodologies
Three Communities
Project stakeholders (Customers)
Development organization management
Developers
The Agile Manifesto
Indivduals 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.
The 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. Agilel processes harness change for the customer’s competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of monthsm with a preference for the shorter time scale.
From the Agile Alliance: www.agilealliance.com
More Agile Principles
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.
Still more Agile Principles
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development.
9. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
10. Continuous attention to technical excellence and good design enhances agility.
Even more Agile Principles
11. Simplicity – the art of maximizing the amount of work not done – is essential.
12. The best architectures, requirements, and designs emerge from self-organizing teams.
13. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Major Agile Methodologies
Scrum
Extreme Programming
Version of the Unified Process
Evo
Crystal family of methodologies
Scrum
Single team of three to nine
Multiple teams each with three to nine members each.
Representatives from teams meet daily.
Common project room
Daily stand-up meeting
Iteration Is thirty calendar days
Emphasis on empirical rather than defined process.
May be easily combined with other methodologies to provide greater specification of specific activities.
The Scrum Lifecycle
Lifecycle has four phases:
Pre-game
Planning
Staging
The Game
Development
Release
Development may iterate, typically 3 to 8 times.
Called sprints lasting one month each
Scrum Planning
Purpose:
Establish vision
Set expectations
Secure funding and other needed resources
Activities
Write vision
Develop budget
Form initial Product Backlog
Estimate items
Exploratory design and prototypes
Scrum Staging
Purpose:
Identify more requirements
Prioritize for first iteration
Activities
Planning
Exploratory design and prototypes
Scrum Development
Purpose:
Implement a product ready for release
Series of thirty day iterations (Sprints)
Activities:
Sprint planning meeting
Define the Sprint Backlog
Do estimates
Daily Standup meetings
Sprint Review
Scrum Standup Meetings
Fifteen minutes
One team of developers and immediate manager
The manager is silent, but takes notes
Limited to fifteen minutes
Each developer answers three questions:
What did you do yesterday?
What will you do today?
What is limiting your progress?
Scrum Release
Purpose:
Operational deployment
Activities:
Documentation
Training
Preparation of deployment
Marketing & Sales
Scrum Work Products
Product Backlog
Features
Use cases
Enhancements
Defects
technologies
Release Backlog
Subset of product backlog
More Scrum Work Propducts
Backlog graph: estimate of work remaining versus days
Sprint backlog: tasks for the iteration
Each task expected to need 4 to 16 hours of work
Scrum Roles
Customer
One or more business stakeholders
Product Owner
Responsible for creating and prioritizing the Product Backlog
Selects the goals from the Product Backlog for the next Sprint
Along with other stakeholders, reviews the product at the end of each Sprint.
Developer
No specialists
Work on the Sprint Backlog
More Scrum Roles
Management
Scrum Master
Usually developer as well as manager
Reinforces the project and iteration vision and goals
Ensures Scrum values and practices are followed
Mediates between Developers and Management
Listens to progress
Works to remove or ameliorate impediments
Conducts the Daily Standup Meeting
Conducts the Sprint Review
Still More Scrum Roles
Upper management called the Chickens
May observe, but not speak during an iteration
Stand outside the Daily Standup meeting
Developers are called the Pigs,
Scrum Coach
Optional
Helps guide developers in Scrum practices, principles, and philosophy.
Extreme Programming
Four Values:
Communication
Simplicity
Feedback
Courage
Extreme Programming Core Practices
1. Planning Game
2. Small, frequent releases
3. System metaphors
4. Simple design
5. Test-Driven Development
6. Frequent refactoring
More Practices
7. Pair programming
8. Team code ownership
9. Continuous integration
10. Sustainable pace
11. Whole team together
12. Coding Standards
Extreme Programming Lifecycle
Five Phases
Exploration
Purpose:
Write enough well-estimated story cards for first release
Ensure feasibility
Activities
Prototyping
Exploratory proof of technology programming
Story card writing
estimating
More of the Lifecycle
Planning
Purpose:
Agree on date ad stories for first release
Activities
Release Planning Game
Story card writing
Estimating
More of the Lifecycle
Iterations to First Release
Purpose:
Implement a tested product ready for release
Activities
Test-directed development
Iteration Planning Game
Task writing and estimating
Still More of the Lifecycle
Productionizing
Purpose:
Operational deployment
Activities
Documentation
Training
Marketing
Maintenance
Purpose
Enhance, fix, and build major releases
Activities
Iterations of the previous four phases.
Extreme Programming Work Products
Story cards:
Feature requests
Should require 2 to 10 days to implement
More details from customer
CRC Cards:
Class responsibility and collaborator ideas
Sketches
Informal working out of ideas
More Work Products
Task list
Tasks within each story
Should take 1 – 2 days to implement
Vision Graphs
Visual representation of progress
Kept on the wall for all to see
Extreme Programming Roles
Customer
Writes stories
Writes acceptance tests
Selects stories for release and for iteration
Developer
Programmer
Writes unit tests, designs, code
Refactors
Identifies tasks
Estimates tasks
Tester
Helps customer write tests
More Roles
Management
Coach
Process conscience
process customizing
Intervention
Teaching
Tracker
Collect metrics
Inform on progress
Provide feedback on prior estimates
Another Role
Consultant
Coaching
Technical consulting
Lean Software Development Methodology
Some developers view Lean as a successor to Agile.
Others consider Lean an extension of Agile.
Lean Industrial Development was formulated by the Japsnese in the 1950’s.
Lean Software Development is the imperfect adaptation to software.
Lean Guiding Principles
1. Eliminate Waste
DOTWIMP
2. Build quality in
3. Create Knowledge
4. Defer commitment
5. Deliver fast
6. Respect People
7. Optimize the whole
Getting Started with Lean
Version control
Scripted Builds
1. Daily standup
2. Automated testing
3. Continuous integration
4. Short iterations
5. Customer participation
Summary
Agile is a family of methodologies for software development.
Key Aspects of Agile
Self-organizing teams
Informal rather than formal communications
Expects and accommodates change and discovery
Emphasizes self and team evaluation, learning, and improvemen.
Manager encourages and facilitates rather than directs.