What is “AGILITY”?
What does it mean to be AGILE?
What is “AGILITY”?
Effective (rapid and adaptive) response to change
Effective (rapid and adaptive) communication among all stakeholders
The CLIENT is part of the TEAM
The TEAM is in control of the work performed
resulting in
rapid, incremental delivery of software
Agile Process
- User Scenarios are descriptions of what is required (requirements) and drive the entire production process
- Plans are short-lived and can change frequently
- Software is developed iteratively and is delivered after each iteration
Agile is based on
4 values and
12 principlesAgile 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
Agile Principles
- Satisfy the Customer
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome Change
Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver Solutions Frequently
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Agile Principles (cont.)
- Work Together
Business people and developers must work together daily throughout the project (one team).
- Empower & Trust
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- Face to Face Conversations
The most efficient and effective method of conveying information to and within a development team is face–to–face conversation.
Agile Principles (cont.)
- Working Solutions
Working software solutions are the primary measure of progress.
- Sustainable Pace
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Technical Excellence
Continuous attention to technical excellence and good design enhances agility (quality).
Agile Principles (cont.)
- Simplicity is Essential
Simplicity – the art of maximizing the amount of work not done – is essential.
- Self-organizing Teams
The best architectures, requirements, and designs emerge from self–organizing teams.
- Reflect & Adjust
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Agile means
How to be Agile?
The process molds to the needs of the people and team, not the other way around
There are many Agile process models proposed by various groups…
Agile Modeling
Originally proposed by Scott Ambler
Suggests a set of agile modeling principles:
- Model with a purpose
- Use multiple models
- Travel light – build only what has value
- Content is more important than representation
- Know the models and the tools you use to create them
- Adapt locally to the needs of the agile team
Extreme Programming (XP)
Originally proposed by Kent Beck, and used in industry often in a hybrid format
Extreme Programming (XP)
Planning
- Begins with the creation of user stories
- Agile team assesses each story and assigns a cost
- Stories are grouped to for a deliverable increment
- A commitment is made on delivery date
- After the first increment project velocity is used to help define subsequent delivery dates for other increments
Extreme Programming (XP)
Design
- Follows the KIS principle (KIS = keep it simple)
- Encourage the use of CRC cards
- For difficult design problems, suggests the creation of spike solutions —a design prototype
- Encourages refactoring —an iterative refinement of the internal program design
Extreme Programming (XP)
Coding
- Recommends the construction of a unit test for a story before coding commences
- Encourages pair programming
Testing
- All unit tests are executed daily
- Acceptance tests are defined by the customer and executed to assess customer visible functionality
Choose your Agile Flavor
- Various Techniques with differing process maps
- In reality few people strictly adhere to one method
Our Agile Flavor
- Extreme Programming with Refactoring adapted to class schedule
- Tool - Jira
- Pair Programming highly encouraged
- 3 iterations with Velocity chart and Burdown chart as restrospectives after each iteration
- Version Control (Git) is a MUST
- Branching and Tagging of Releases
- Unit Testing Absolutely Vital
- Communication - Weekly Stand-Ups (Scrum)
- Quality of Released Software:
- Code needs to be frequently deployed
- All code must be tested before deployment
- Design Globally, Code Locally
- Acceptance Testing is important
Agile explained with cars
Criticisms of Agile Development
Are there any issues with Agile?
Feature focus obscures goals and infrastructure.
Staffing and long term planning problems.
A charismatic movement that generates certification or speaker fees.
Works better for Senior Developers who can operate with more discretion.
Higher Risk of Scope Creep.
Inadequate handing of non-functional details.
Prev - Agile Development, Next - Scrum