Agile Technologies                                   22MCA424
Agile
              Technologies
                     Subject Code:22MCA424
                         SRINIVAS V
                      Asst. Professor, BIT
1                                        Srinivas V Asst. Professor, BIT
Agile Technologies                                              22MCA424
                      Module-1
Agile Software Development is an iterative and incremental approach
to software development that emphasizes the importance of delivering
a working product quickly and frequently.
It is based on the Agile Manifesto, a set of principles for software
development that prioritize individuals and interactions, working
software, customer collaboration, and responding to changes.
Agile Software Development is a software methodology that values
flexibility, collaboration, and customer satisfaction.
Agile 4 values are:
The values of the Agile Manifesto are:
    1. Individuals and Interactions over processes and tools.
    2. Working software over comprehensive documentation
    3. Customer collaboration over contract negotiation
    4. Responding to change over following a plan
1                                                   Srinivas V Asst. Professor, BIT
Agile Technologies                                             22MCA424
Why Agile?:
Agile development is popular. Its benefits- even the ability to release
software more frequently.
Understanding Success:
The traditional idea of success is delivery on time, on budget, and
according to specification.
Standish provides some classic definitions.
Successful
“ Completed on time, on budget, with all features and functions as
originally specified”.
Challenged
“ Completed and operational but over budget, over the time estimate,
fewer features and functions than originally specified”.
Impaired
    “Cancelled at some point during the development cycle”.
Behind Deadlines:
There has to be more to success than meeting deadlines… but to what?
I loved the challenge of programming. When I got a program to work, it
was a major victory. My definition of success centered on Personal
rewards.
1                                                  Srinivas V Asst. Professor, BIT
Agile Technologies                                          22MCA424
As I gained experience, my software become more complicated and I
often lost track of how it worked. I had to abandon some programs
before they were finished. I began to believe that maintainability was
the key to success- an idea that was confirmed as I entered the
workforce and began working with teams of other programmers. I
prided myself on producing elegant, maintainable code. Success meant
technical excellence.
In the project teams were part of larger ecosystem involving dozens,
hundreds, or even thousands of people. In fact, for the people funding
work, the value of the software had to exceed its cost. Success meant
delivering value to the organization.
Organizational Success:
What do organizations value?
1                                               Srinivas V Asst. Professor, BIT
Agile Technologies                                            22MCA424
Although some projects’ value comes directly from sales, there’s more
to organizational value than revenue. Project provide value in many
ways, and you can’t always measure that value in dollars and cents.
Aside from revenue and cost savings, sources of value include:
. Competitive differentiation
    Brand Projection
    Enhanced Customer loyalty
. Satisfying regulatory requirements
    Original research
    Strategic information
Enter Agility
Agile development focuses on achieving personal, technical, and
organizational success.
Organizational Success:
Agile methods achieve organizational success by focusing on delivering
value and decreasing costs. This directly translates to increased return
on investment. Agile methods also set expectations early in the project,
so if your project won’t be organizational success, you’ll find out early
enough to cancel it before your organization has spent much money.
1                                                 Srinivas V Asst. Professor, BIT
Agile Technologies                                            22MCA424
Specially, agile teams increase value by including business experts and
by focusing development efforts on the core value that the project
provides for the organization. Agile projects release their most valuable
features first and release new versions frequently, which dramatically
increases value.
Agile teams decreases costs as well. They do this partly by technical
excellence; the best agile projects generate only a few bugs per month.
Technical Success:
Extreme Programming, the agile method focus on achieving technical
success. XP programmers work together, which helps them keep track
of the details necessary for great work and ensures that at least two
people review every piece of code.
Programmers continuously integrate their code, which enables the
team to release the software whenever it makes business sense. The
whole team focuses on finishing each feature completely before
starting the next, which prevents unexpected delays.
Extreme Programming includes advance technical practices that lead to
technical excellence. The most well-known practice is test driven
development.
Personal Success:
Executives and senior management.
1                                                 Srinivas V Asst. Professor, BIT
Agile Technologies                                             22MCA424
  They will appreciate the team’s focus on providing a solid return on
investment and the software’s longevity.
Users, stakeholders, domain experts, and product managers.
     They will appreciate their ability to influence the direction of
software development. The team’s focus on delivering useful and
valuable software, and increased delivery frequency.
Project and Product Managers:
    They will appreciate their ability to change direction as business
needs change, the team’s ability to make and meet commitments, and
improved stakeholder satisfaction.
Developers:
      They will appreciate their improved quality life resulting from
increased technical quality, greater influence over estimates and
schedules, and team autonomy.
Testers:
    They will appreciate their integration as first-class members of the
team, their ability to influence quality at all stages of the project, and
more challenging , less repetitious work.
Agile Methods
Agile Methods are processes that support the agile philosophy. Agile
methods consists of individual elements called practices. Practice
include using version control, setting coding standards, and giving
weekly demo to your stakeholders.
1                                                  Srinivas V Asst. Professor, BIT
Agile Technologies                                      22MCA424
Agile Methods are:
    1. Agile Unified Process.
    2. Behavior Driven Development (BDD)
    3. Crystal Clear
    4. Dynamic Systems Development Method (DSDM)
    5. Extreme Programming (XP)
    6. Feature Driven Development (FDD)
    7. Kanban
    8. Lean Development
    9. Scrum
1                                           Srinivas V Asst. Professor, BIT
Agile Technologies                                            22MCA424
Practices of Agile Software Development:
Scrum: Scrum is a framework for agile software development that
involves iterative cycles called sprints, daily stand-up meetings, and a
product backlog that is prioritized by the customer.
Kanban: Kanban is a visual system that helps teams manage their work
and improve their processes. It involves using a board with columns to
represent different stages of the development process, and cards or
sticky notes to represent work items.
Continuous Integration: continuous integration is the practice of
frequently merging code changes into the shared repository, which
1                                                 Srinivas V Asst. Professor, BIT
Agile Technologies                                         22MCA424
helps to identify and resolve conflicts early in the development
process.
Test-Driven Development: Test-Driven Development (TDD) is a
development practice that involves writing automated tests before
writing code. This helps to ensure that the code meets the
requirements and reduce the likelihood of defects.
Pair-Programming: Pair Programming involves two developers working
together on the same code. This helps to improve code quality, share
knowledge, and reduce the likelihood of defects.
Agile Principles:
1. Our highest priority is to satisfy the client through early and
   continuous delivery of valuable computer software.
1                                              Srinivas V Asst. Professor, BIT
Agile Technologies                                           22MCA424
2. Welcome dynamical necessities, even late in development. Agile
   processes harness modification for the customer’s competitive
   advantage.
3. Deliver operating computer software often, from a pair of weeks to a
   couple of months, with a preference to the shorter timescale.
4. Business individuals and developers should work along daily
   throughout the project.
5. The build comes around actuated people. Offer them the setting and
   support they have, and trust them to urge the task done.
6. The foremost economical and effective methodology of
   conveyancing info to and among a development team is face-to-face
   speech.
7. Working computer software is the primary live of progress.
8. Agile processes promote property development. The sponsors,
   developers, and users got to be able to maintain a relentless pace
   indefinitely.
9. Continuous attention to technical excellence and smart style
enhances nimbleness.
10. Simplicity- the art of maximizing the number of work not done – is
essential.
11. The most effective architectures, necessities, and styles emerge
from self- organizing groups.
12. At regular intervals, the team reflects on a way to become simpler,
then tunes and adjusts its behavior consequently.
Don’t Make Your Own Method:
1                                                Srinivas V Asst. Professor, BIT
Agile Technologies                                             22MCA424
Just as established agile methods combine existing practices, you might
want to create your own agile method by mixing together practices
from various agile methods.
However, creating a brand-new agile method is a bad idea if you’ve
never used agile development before.
Unless you understand those principles intimately-that is, unless
you’ve already mastered the art of agile development-you’re probably
not going to choose the right practices.
The Road to Mastery:
Mastering the art of agile-development requires real-world experience
using a specific, well-defined agile method.
Extreme Programming for this purpose. It has several advantages:
It places a strong emphasis on technical practices in addition to the
more common teamwork and structural practices.
XP has undergone intense scrutiny. There are thousands of pages
explanations, experience reports, and critiques out there. It capabilities
and limitations are very well understood.
I have a lot of experience with XP, which allows me to share insights
and practical tips that will help you apply XP more easily.
To Master the art of agile development- or simply to use XP to be more
successful- follow these steps:
    1. Decide why you want to use agile development. Will it make your
       team and organization more successful? How?
1                                                  Srinivas V Asst. Professor, BIT
Agile Technologies                                              22MCA424
    2. Adopt as many of XP’s practices as you can. XP’s practices are self-
       reinforcing. So it works best when you use all of them together.
    3. Follow the XP practices rigorously and consistently.
       Find A Mentor:
       As you adapt XP to your situation, you’re likely to run into
       problems and challenges. I provide solutions for a wide variety of
       common problems, but you’re still likely to encounter situations
       that I don’t cover. For these situations, you need a mentor: as an
       outside expert who has mastered the art of agile development.
       The hardest part of finding a mentor is finding someone with
       enough experience in agile development.
       Sources to try to include:
       Other groups practicing XP in our organization
       Other Companies practicing XP in your area
       A local XP/Agile user group
       XP/Agile Consultants
       The XP mailing list:
         Extremeprogramming@yahoogroups.com
1                                                   Srinivas V Asst. Professor, BIT
Agile Technologies                                         22MCA424
Understanding XP:
Extreme Programming (XP) is an Agile project management
methodology that targets speed and simplicity with short development
cycles and less documentation.
The XP Team:
1                                              Srinivas V Asst. Professor, BIT
Agile Technologies                                             22MCA424
XP Teams perform nearly every software development activity
simultaneously. Analysis, Design, Coding, Testing and even deployment
occur with rapid frequency.
  XP does it by working in iterations: Week-long increments of work.
Every week, the team does a bit of releasing planning, a bit of design, a
bit of coding, a bit of testing and so forth.
They work on stories: very small features, or part of features, that have
a customer value.
Team software development is different. The same information is
spread out among many members of the team. Different people know:
∙How to design and program the software (programmers, designers,
and architects)
∙Why the software is important (product manager)
∙The rules the software should follow (domain experts)
∙How the software should behave (interaction designers)
∙How the user interface should look (graphic designers)
∙Where defects are likely to hide (testers)
∙How to interact with the rest of the company (project manager)
∙Where to improve work habits (coach)
All of this knowledge is necessary for success. XP acknowledge this
reality by creating cross-functional teams composed of diverse people
who can fulfill all the team’s roles.
1                                                  Srinivas V Asst. Professor, BIT
Agile Technologies               22MCA424
1                    Srinivas V Asst. Professor, BIT