You are on page 1of 10

Abstract

This paper gives you a brief introduction of what Agile software development is and explains 2-3

Agile methods. It also

Introduction: Global market is rapidly changing and most of the rapid changes are happening due

to new disruptive technologies. In this scenario, companies must respond to these changes at a

rapid pace. In the context of India, Information Technology has become an integral part of

growth and the country is best preferred outsourcing destination. Hence agility has become a

necessity in IT industry now.

In the above paragraph, we have described the need for agile methodologies from the perspective

of external environment. There are other internal factors that mandate such as:

• 40% of the features requested at the start of project are not being used by end-users!

– Is it good RoI?

– Is it my fault?

• Have you heard this - “I know a better way to implement it, but can't do it as the design is

already signed-off!”?

• All good ideas don’t just come at the beginning of the development cycle

• A rigid, change-resistant process will tend to produce mediocre products


– Customers may get what they first ask for, but is it what they really want once

they see the product begin to emerge?

So, the question is how to respond to these rapid changing requirements during software
development.

• In the late 1990s several methodologies began to get increasing public attention. Each had a
different combination of old ideas, new ideas, and transmuted old ideas.

• But they all emphasized

– close collaboration between the programmer team and business experts;

– face-to-face communication (as more efficient than written documentation);

– frequent delivery of new deployable business value;

– tight, self-organizing teams; and

– ways to craft the code and the team so that the inevitable change in requirements
does not turn into a crisis

Agile Methods:

• Scrum

• Extreme Programming (XP)

• Dynamic System Development Method (DSDM)

• Feature-Driven Development (FDD)

• Crystal Methods

• Lean Development (LD)

• Adaptive Software Development (ASD)

• Rational Unified Process (RUP)


The Spiral
The Waterfall - - Iterate
Iterative Development
to to
Straight Incorporate
the TargetFeedback
- Getting Better all The Time

Sequential/phased approach Perform analysis until you think


Simplest/fastest you are ready
Analyze the problem, design the Design until you think you are
solution, implement the code, ready
integrate if necessary and then Code the design until ready/If any
deploy. Done. problems are found, feed them
Attraction is it’s simplicity - to back/Perform another iteration to
know how long the project takes, improve
add up the time required for each Test the code/If any problems are
phase found, start another iteration of the
coding
First iteration - 90% analysis, Integrate and deploy/Feed back
10% design any problems you encounter
Second iteration - 30% analysis, The later a defect is found, higher
50% design 20% coding the cost to fix it
Third iteration - 10% analysis,
30% design, 70% coding
Fourth iteration - 10% design,
50% coding, 40% testing and
bug fixing
Fifth iteration - 50% testing and
bug fixing, 30% integration, 20%
deployment
Iterative Development with Agile Software Development -
Incremental Delivery - Growing Software Extremely Incremental
First, go through several iterations Decide on the length of
of analysis and design until we are incremental releases and internal
sure that these phases are and external releases/All
complete increments are of same length
Select the content and schedule of Gather initial list of
the increments to be requirements/New requirements
developed/Let the increments be can be added at any time
A,B and C to be delivered to the Before the start of each increment,
user in this order users prioritize requirements and
For increment A, iterate through all assign them to releases
the required phases until the Requirements are analyzed and
software can be released/Minimum broken into small micro increments
rework on analysis, design that can be fully implemented in a
For increment B, iterate through all day or less during each increment
the required phases until the Developers analyze, design, code,
What is Agile?
software can be released/No test, integrate and deploy
rework
“Agile is an on analysis,
iterative design (evolutionary) approach
and incremental iteratively. These development
to software iterations are
which is
For increment C, iterate through all short and quick to maximize
performed in a highly collaborative manner with "just enough" ceremony that produces high the
the software
quality requiredwhich
phases
meetsuntil the
the changing needs of itsfeedback
stakeholders”
software can be released/No
rework
- Scott on IBM
Ambler, analysis, design

Manifesto for Agile Development

• Agile community 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

Principles behind Agile Manifesto:

• Continuous and early Delivery of Valuable software

• Welcome changing requirements, even late in development. Agile processes harness


change for the customer's competitive advantage

• Working software is the primary measure of progress


• Deliver working software frequently, from a couple of weeks to a couple of months, with
a preference to the shorter timescale

• Business people and developers must work together daily throughout the project

• Build projects around motivated individuals. Give them the environment and support they
need, and trust them to get the job done

• The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation

• Agile processes promote sustainable development. The sponsors, developers, and users
should be able to maintain a constant pace indefinitely

• Continuous attention to technical excellence and good design enhances agility

• Simplicity--the art of maximizing the amount of work not done--is essential

• The best architectures, requirements, and designs emerge from self-organizing teams

• At regular intervals, the team reflects on how to become more effective, then tunes and
adjusts its behavior accordingly

Some of the underlying aspects which are necessary for Agile Development are:

• Collaboration

• Trust and Commitment

• Flexibility

• Organizational support

• Motivated individuals

• Innovation

Few Agile Methodologies:

• SCRUM is also an Agile Development framework, which concentrates particularly on


how to manage tasks within a team-based development environment.

• XP (eXtreme Programming) is a more radical Agile methodology, focusing on the


software development process and addressing the analysis, development and test phases
with novel approaches aimed at making a substantial difference to the quality of the end
product.
• DSDM is probably the original Agile Development method. DSDM was around before
the term Agile Development was even invented, but is absolutely based on all the
principles we’ve come to know as Agile Development.

Scrum:

In a typical SCRUM meeting, Only pigs are allowed to speak!

• Scrum is a framework for developing complex products and systems. It is grounded in


empirical process control theory*. Scrum employs an iterative, incremental approach to
optimize predictability and control risk. Within each iteration, Scrum employs self-
organizing, crossfunctional teams to optimize flexibility and productivity.

• Scrum follows Principles of Agile Manifesto.

Scrum Project life Cycle:


Some of the clients who use Scrum are:

Microsoft, Yahoo!, Google, Electronic Arts, High Moon Studios, Lockheed Martin

Some of the projects where Scrum is used are: Commercial software, In-house development,
Contract development, Fixed-price projects, Financial applications, ISO 9001-certified
applications

eXtreme Programming (XP)

What is extreme programming?

It is a deliberate and disciplined approach to software development.

• Extreme Programming is a software development methodology based on values of simplicity,


communication, feedback, and courage.

• The goal of this method is to achieve high customer satisfaction index and the method is based
on people collaboration approach.

Benefits of XP:

• Emphasizes team spirit, which include managers, customers and developers dedicated to
delivering a quality software.
• Implements a simple and effective way to enable groupware style of development.

• Binds the entire team in the presence of simple practices with regular feedback, to enable the
team to know where they are heading and to tune these practices to their situations.

Different Phases of XP:

Planning:

• User stories are written.

• Release planning creates the schedule.

• Make frequent small releases.

• The Project Velocity is measured.

• The project is divided into iterations.

Coding:

• The customer is always available.

• Code must be written to agreed standards.

• Code the unit test first.

• All production code is pair programmed.

• Only one pair integrates code at a time.

• Integrate often.

• Use collective code ownership.

• Leave optimization till last.

• No overtime.

Designing:

• Simplicity.

• Choose a system metaphor.

• Create spike solutions to reduce risk.

• No functionality is added early.


• Refactor whenever and wherever possible.

Testing:

• All code must have unit tests.

• All code must pass all unit tests before it can be released.

• When a bug is found tests are created.

• Acceptance tests are run often and the score is published.

Scrum and XP:

Scrum focuses on management and organization practices while XP focuses mostly on actual
programming practices. That’s why they work well together – they address different areas and
complement each other.

Summary:

Agile methodology is an effective way to develop software in an environment, where:

• Requirements change rapidly.


• Customer is involved in the process.

• High productivity and high product quality is required.

References:
Mike Cohn, Mountain Goat Software

• http://www.scrumalliance.org Scrum Alliance

• http://www.agilealliance.org Agile Alliance

• http://agilemanifesto.org Agile Manifesto

• http://www.scrumprimer.com Scrum Primer

• http://www.controlchaos.com Ken Schwaber

• http://www.scrum-master.com/ Scrum Resources

• https://knowmax.ultimatix.net/sites/agile-cop TCS KNOWMAX

• Awareness - Agile Software Development Using Scrum.ppt

Rajesh Rathod (126860)

• Agile / Scrum - Concepts and Best Practices Rajesh Rathod (126860)

• Book: Agile Software Development with Scrum Ken Schwaber

• Book: Agile Project Management with Scrum Ken Schwaber

• Scrum and XP from the Trenches Henrik Kniberg

• SCRUM 59 minutes Giovanni Asproni

You might also like