2. What is Agile?
Business Agility means
● A company is always in a position to
take account of the market changes.
In Software Development
● The ability to respond to changes –
changes from Requirements,
Technology and People.
5. Embrace Change
The cost of changing a program can be held mostly constant over time
It can be achieved with
•Emphasis on continuous feedback from the customer
•Short iterations
•Design and redesign
•Coding and testing frequently
•Eliminating defects early, thus reducing costs
•Keeping the customer involved throughout the development
•Delivering working product to the customer
8. Communication
Communication plays a major role in the success of a project.
Extreme programming emphasizes continuous and constant communication
among the team members, managers and the customer.
Simplicity
Extreme programming believes in ‘it is better to do a single thing today and pay a
little more tomorrow to change it’ than ‘to do more complicated thing today that
may never be used anyway’.
9. Feedback
Every iteration commitment is taken seriously by delivering a working software.
Unit tests tell the developers the status of the system.
Thus, in Extreme Programming the feedback –
➢ Works as a catalyst for change
➢ Indicates progress
➢ Gives confidence to the developers that they are on the right track
10. Courage
➢Extreme Programming provides courage to the developers in the following way :
➢To focus on only what is required.
➢To communicate and accept feedback.
➢To throw the code away (prototypes).
Respect
➢Respect is a deep value, one that lies below the surface of the other four values in
Extreme Programming.
➢Everyone respects each other as a valued team member.
➢Developers respect the expertise of the customers and vice versa.
➢Management respects the right of the developers to accept the responsibility and
receive authority over their own work.
12. Rapid Feedback
Rapid feedback is to get the feedback, understand it, and put the learning back into
the system as quickly as possible.
Assume Simplicity
‘Assume Simplicity’ means ‘do a good job of solving today's job today and trust your
ability to add complexity in the future where you need it.’
Incremental Change
In Extreme Programming, Incremental Change is applied in many ways.
The design, plan, team changes a little at a time.
Even the adoption of Extreme Programming must be taken in little steps.
13. Embracing Change
The best strategy is the one that preserves the most options while actually solving your
most pressing problem.
Quality Work
Everyone likes doing a good job. They try to produce the quality that they are proud
of. The team-
➢Works well
➢Enjoys the work
➢Feels good in producing a product of value
16. Developer (Extreme Programmer)
Just a programmer who follows the tenets of Extreme Programming.
Customer
Who should know what to programmer, while the developer know how to program.
Coach
Who watches everything.
Manager
Who schedules meetings
Tracker
Who goes around a time or two a week.
Tester
Who implements and runs Functional Tests.
18. Developer Rights
- right to know what is needed.
- right to produce quality work at all times.
- right to ask for and receive help.
- right to accept your responsibilities.
19. Major Responsibilities
- Estimate stories
- Define tasks from stories
- Estimate tasks
- Write unit tests
- Write code to pass the written tests
- Perform unit testing
- Integrate continuously
22. Customer skill
- Writing required stories to the necessary and sufficient detail
- Influencing a project without being able to control it.
- Writing functional tests.
24. Unit Test and Functional Test
- Unit Tests are written from a programmer’s perspective.
- Functional Tests are written from the user’s perspective.
27. 1.Planning Game
- The main planning process
- Is a meeting that occurs once per iteration
- It is too quickly determine the scope of the next release.
28. Release Planning Vs Iteration Planning
Release Planning: Determining what requirements are included in
which near-term releases.
Iteration Planning: Plans the activities and tasks.
29. 2.Short Releases
- Deploy into production quickly.
- Release new versions in very short cycles.
- As small as possible.
30. Advantage
- Achievable in a short cycle
- Contains the most valuable requirements
- Frequent feedback
- A working system
31. 3.Metaphor
Architecture of the system to be built that
It’s the story of how the whole system works.
The oral Architecture of the system to built, that is understandable by everyone
involved in the development.
Advantages:
A quick and easy way to explain the system.
Encourages the common set
32. 4. Simple Design
Keep it simple but always adequate design.
Do as little as needed nothing more.
Delete duplicate logic
Simple design leads to sustain the development speed.
“Design in XP is all-the-time thing”
33. Advantages:
Easier to understand and adaptable to change.
Helps keep programmer on track.
Refactoring and collective ownership is made
possible.
34. 5.Testing (Test driven development):
➢Unit testing is done before
coding.
➢After writing unit tests,
pass for the development to
continue.
➢The result is a system that
is capable of accepting
change.
36. 6.Refactoring
➢Refactoring: “Improving the design
of Existing code”.
➢Removal of Duplication.
➢Increases ”Cohesion” of the code
and lowers the “coupling”.
➢XP practices support each other:
They are stronger together than
separately.
38. 7.PAIR PROGRAMMING
➢ All code is written by two
programmers sitting at one
machine.
➢Pairing is dynamic.
➢The driver has control of
the keyboard and mouse
and creates the
implementation.
➢The navigator watches
the driver’s implementation .
39. ADVANTAGES
➢Pairs complete their tasks faster .
➢Pairs produce higher quality code .
➢Pairs are more focused towards their work .
➢Pairs feel more confident in their work and they can
answer any questions related to their approach .
40. 8.COLLECTIVE OWNERSHIP
➢In Extreme Programming, the entire team takes responsibility for
the whole of the system. Not everyone knows every part equally
well, although everyone knows something about every part.
➢Any engineer can modify any code to produce better quality.
➢The entire team takes responsibility of the whole system.
42. 9.CONTINUOUS INTEGRATION
➢The unit tests have to run 100% both before and after
integration.
➢A simple way to do this is to have a machine dedicated to
integration.
➢ Runs the tests until they pass (100% correct).
➢Continuous integration should happen more frequently
(once or twice a day) .
43. ADVANTAGES
➢Reduces the duration , which is otherwise lengthy .
➢Enables the short releases practice as the time required
before release is minimal .
44. 10.40 – HOUR WEEK
➢Tired developers make more mistakes .
➢If you mess with people’s personal lives , in long run the project will
pay the consequences.
➢Highly skilled senior engineers always suffer of over time and high
pressure .
ADVANTAGE
➢Most developers lose effectiveness after 40 hours
45. 11.On-site Customer
➢A live-user on the team who is available round the clock with the team.
➢A Product Manager is chosen as a representative for the customers.
➢Development Team should have continuous access to the customer representative.
➢Customer blends in with the development team to help and can also focus on other work too.
46. ADVANTAGES
•Customer representative prioritizes the functionalities to the team members.
•On-site Customer helps in rapid feedback of the working system.
•Customer makes sure that what is developed is what is actually asked for.
•Scope decisions for developers are laid out by the Customer.
•Customer answers questions regarding the development of working system.
47. 12.Coding Standards
•Development Team follows a standard for coding and adopts it throughout the project.
•They emphasize on certain rules:
- Communication through code.
•Least amount of work possible.
- “Once and only once” rule i.e., no inclusion of duplicate code.
•Voluntary adoption by whole team.
•Emphasizes more on code familiarity than specifics of standards.
48. Advantages
•Coding standards reduces refactoring of others code, as the code in the system looks familiar to
all the team as though written by a single individual.
•Coding Standards helps in shared understanding between the team as they follow same standards.
•It gives the team a clear and unambiguous code.
•It helps in error detection easily.
49. Success in Industry
Rapid development.
Immediate responsiveness to the customer’s
changing requirements.
Focus on low defect rates.
System returning constant and consistent
value to the customer.
High customer satisfaction.
Reduced costs.
Team cohesion and employee satisfaction.
CONCLUSION