Unit-5 Agile 7TH Sem Cse
Unit-5 Agile 7TH Sem Cse
Unit-5 Agile 7TH Sem Cse
Programming
Definition
• Simplicity. Simplicity means ―what is the simplest thing that will work?‖ The
purpose of this is to avoid waste and do only absolutely necessary things such
as keep the design of the system as simple as possible so that it is easier to
maintain, support, and revise. Simplicity also means address only the
requirements that you know about; don’t try to predict the future.
• Develop the simplest product that meets the customer’s needs
Feedback
You need courage to raise organizational issues that reduce your team’s
effectiveness. You need courage to stop doing something that doesn’t work and
try something else. You need courage to accept and act on feedback, even
when it’s difficult to accept. Developers must obtain and value feedback from
the customer, from the system, and from each other.
• XP is based on these
– four values and
– twelve practices
– have been extended various ways since XP’s introduction
• Extreme Programming (XP) takes an ‘extreme’ approach
to iterative development.
– New versions may be built several times per day;
– Increments are delivered to customers approx. every 2 weeks;
– All tests must be run for every build and the build is only
accepted if tests run successfully.
Roles
What should the system do (What features are included and what
do they accomplish)?
How do we know when the system is done (what are our
acceptance criteria)?
How much do we have to spend (what is the available funding,
what is the business case)?
What should we do next (in what order do we deliver these
features)?
The XP Customer is expected to be actively engaged on the
project and ideally becomes part of the team.
In Iteration planning the team will pick up the most valuable items from
the list and break them down into tasks then estimates and a committment
to delivering at the end of the iteration.
Simple Design
In the XP, the team will not do complex or big architecture and designs
upfront; instead the team will start with a simple design and let it emerge
and evolve over a period of iterations. The code is frequently refactored so
that it will be maintainable and free of technical debt. Simple designs
make the 'definition of done' easier.
In XP Developers write the unit test cases before starting the coding.
The team automates the unit tests and it helps during the build and
integration stage. The main benefit of TDD is that programmers
have to only write the code that passes the tests.
These standards must define and agreed before the team starts the
coding.
It will make the code simple to understand and helps detect the
problem or issues quickly and also increases the efficiency of the
software.
Refactoring
Refactoring as the word suggests, is restructuring or reconstructing
existing things. In XP over a period of time the team produces lots
of working code and it increases the complexity and that contributes
technical debt. To avoid this, we should consider the below points,
The pairs of pilots and navigators are also not fixed and they are
frequently swapped, the main benefits of that over a period of time
is that everyone gets to know about the code and functionality of the
whole system.
Collective Code Ownership
By following pair programming practices the XP team always takes collective
ownership of code. Success or failure is a collective effort and there is no
blame game. There is no one key player here, so if there is a bug or issue then
any developer can be called to fix it.
Continuous Integration
If the tests fail, they are fixed then and there, so that any chance of defect
propagation and further problems are avoided with minimum downtime.
The team can use CI tools like Jenkins, shippable, Integrity, Azure DevOps
Pipelines, etc
Small Release
A cross-functional team in XP, releases Minimum Viable Product (MVP)
frequently. Small releases also help to breakdown complex modules in a small
chunk of code. This helps the developer team as well as the on-site customer to
demonstrate the product and focus only on the least amount of work that has the
highest priority.
System Metaphor
• This is majorly connected with the user story, the story must be simple enough
to be easily understood by user and developers and to relate it with code.
• It could be a naming conversion practice used in design and code to have a
shared understanding between teams. For example Order_Food() is easily
explained -- this will be used to order food.
•
• It easy for the team to relate to the functionality of the particular component by
just looking at its name.
•
Onsite Customer
• This is a similar role as Product Owner in Scrum. Onsite
customer plays a major role here and is responsible for crafting
the vision, defining user stories and acceptance criteria, the
definition of done and release planning.
• They are the experts who know the domain or product and know
how to generate a return of investment (ROI) by delivering the
minimum viable product (MVP).
• If the onsite customer role is not full time, the role can be filled
with product managers, product owners, UI-UX designers and
business analysts who are called proxies.
• The word ―on-site‖ implies that the customers or their proxies sit
together with the rest of the team to ensure that communication
flows freely.
Sustainable Pace
• This is a people-centric practice. In XP practices like
TDD, continuous integration and refactoring of code
help to proactively improve the quality and stability of
the working software.
And if one sees problems with the other’s code, then it can be instantly
corrected. You also have fewer chances of having bugs written into
your code. Code reviews are not as proactive as you have to wait until
the code is completed — bugs and all — before somebody could take a
look at and correct it.
Challenges of Pairing
The common problems observed when it comes to pair programming
include the following:
• The pair should be equally engaged and be participative for the
duration of the task. Otherwise, there would be no benefits.
• People who have not tried it may think that it will double the cost
because you are putting two programmers on one project. However,
this is a misconception that needs to be clarified. On top of the fact
that pairing, done right, will only result in 15% slowdowns in terms
of the individual output, it actually speeds up the coding process and
ensures better quality code, which lessens the chances that the
program would have to be redone.
• Pair programming should also be a programming out loud process,
where the pair is verbally detailing what it is doing.
• It’s not something that you can force your team to do. It’s highly
social and interactive, so you should be able to detect pairs that may
have problems with each other, such as clashing personalities or
even problems with personal hygiene.
Extreme Programming team
Despite the fact that even one person can create an XP team; specialists usually
define seven Extreme Programming team roles.
Programmer
His responsibility is to estimate user stories and separate them from technical
tasks. He is also responsible for estimating the time required to finish the
project.
Tester
This employee is responsible for conducting functional tests and informing
the team on their results.
Tracker
This person’s main task is to interview the developers every week and find
out if something in their work goes wrong.
Customer
The customer is the main person in XP. He is the one who writes user stories
and estimates the final and intermediate product.
Coach
His main responsibility is to keep the project extreme. He teaches
other team members how to achieve this goal.
Manager
A very important role in every Extreme Programming team. This
person is responsible for conducting team meetings and making them
effective.
Doomsayer
This role is also extremely important, because this person’s main task
is to follow the progress of the project and avoid problems in its
realization, like not meeting the terms, or other failures.
Extreme Programming - Tools
ExtremePlanner
• ExtremePlanner is a browser-based Agile Project
management solution that is designed specifically
to support Agile methods including Scrum and
Extreme Programming.
• ExtremePlanner concentrates on planning and
tracking the progress of features (or user stories)
that have actual business value to customers.
• www.extremeplanner.com
Project Planning and Tracking System