Agile is by no means critical of development
methodologies developed in the 1970s and 1980s in response to the chaotic and
unplanned approaches often used in the early days of software. This fast
delivery approach provided a couple of important benefits. First, it enabled
users to get some of the business benefits of the new software faster. Second,
it enabled the software team to get rapid feedback on the software's scope and
direction.
Agile software
development refers to a group of software development methodologies based on
iterative development, where requirements and solutions evolve through
collaboration between self-organizing cross-functional teams. Agile methods or
Agile processes generally promote a disciplined project management process that
encourages frequent inspection and adaptation, a leadership philosophy that
encourages teamwork, self-organization and accountability, a set of engineering
best practices intended to allow for rapid delivery of high-quality software,
and a business approach that aligns development with customer needs and company
goals. Agile development refers to any development
process that is aligned with the concepts of the Agile Manifesto. The Manifesto
was developed by a group fourteen leading figures in the software industry, and
reflects their experience of what approaches do and do not work for software
development.
A very popular methodology under Agile is Scrum which is a
subset of Agile. It is a lightweight process framework for agile development,
and the most widely-used one. A “process framework” is a particular set of
practices that must be followed in order for a process to be consistent with
the framework. “Lightweight” means that the overhead of the process is kept as
small as possible, to maximize the amount of productive time available for
getting useful work done.
Scrum is a most perplexing and paradoxical process for managing
complex projects. Scrum shows management how to guide a project along its
optimal course , which unfolds as the project proceeds. Under this there is an
iteration of development activities that occur one after the other. The output of
each iteration is the increment of product.
A time box is a maximum duration that has a
specific purpose to achieve, as well as duration, scope, and an agenda to meet
the desired purpose. In any ongoing project we need to know and understand the
goals of the overall project which should be achieved at the end. The project is broken down into sprints. Each
sprint should have one or more objectives which is finished in an iterative
manner one by one.
Scrum process is distinguished
from other agile processes by specific concepts and practices, divided into the
three categories of Roles, Artifacts, and Time Boxes. These and other terms
used in Scrum are defined below. Scrum is most often used to manage complex
software and product development, using iterative and incremental practices.
Scrum significantly increases productivity and reduces time to benefits
relative to classic “waterfall”
processes. Scrum processes enable organizations to adjust smoothly to
rapidly-changing requirements, and produce a product that meets evolving
business goals. An agile Scrum process benefits the organization by helping it
to :
- Increase the quality of the deliverables
- Cope better with change (and expect the changes)
- Provide better estimates while spending less time creating them
- Be more in control of the project schedule and state
· Customer Satisfaction by Rapid, Continuous Delivery of Useful Softwareà All customers and users gets satisfied when developers continuously deliver the value to them with usable software.
· People and Interactions are Emphasized Rather Than Process and Toolsà Agile is focused very heavily around people and the interactions between people, rather than process and tools.
· Continuous Attention to Technical Excellence and Good Designà When working agile the whole work is in shorter iterations and only build what is necessary to satisfy the requirements for that iteration and nothing else. This thing forces to keep designs simple which is very important as simplicity helps developers design testable and therefore more reliable systems. Developers understand, and choose from, many possible technical ways to satisfy business need and these are choices that reflect a craft that balances design, use, and support.
· Regular Adaptation to Changing Circumstances à Customer or business sponsor may change their mind about what is being built. This may be because developers have given them new ideas from the software they delivered in a previous iteration. It may be because the companies priorities have changed or a new regulatory change comes into force. Hence change is a reality of software development, a reality that your software process must reflect.
x
·
Benefits to Customer à Customers find
that the vendor is more responsive to development requests. High-value features
are developed and delivered more quickly with short cycles, than with the
longer cycles favored by classic “waterfall” processes.
·
Benefits to Vendors à Vendors reduce wastage by focusing development effort on
high-value features, and reduce time-to-market relative to waterfall processes
due to decreased overhead and increased efficiency. Improved customer satisfaction
translates to better customer retention and more positive customer references.
·
Benefits to Development Teams à Team members enjoy
development work, and like to see their work used and valued. Scrum benefits
Team members by reducing non-productive work (e.g., writing specifications or
other artifacts that no one uses), and giving them more time to do the work
they enjoy. Team members also know their work is valued, because requirements
are chosen to maximize value to customers.
·
Benefits to Product Managers à Product Managers, who typically fill the Product Owner role,
are responsible for making customers happy by ensuring that development work is
aligned with customer needs. Scrum makes this alignment easier by providing
frequent opportunities to re-prioritize work, to ensure maximum delivery of
value.
·
Benefits to Project Managers à Project Managers (and others) who fill the ScrumMaster role
find that planning and tracking are easier and more concrete, compared to
waterfall processes. The focus on task-level tracking, the use of Burndown
Charts to display daily progress, and the Daily Scrum meetings, all together
give the Project Manager tremendous awareness about the state of the project at
all times. This awareness is key to monitoring the project, and to catching and
addressing issues quickly.
·
Benefits to PMOs and C-Level Executives à Scrum provides
high visibility into the state of a development project, on a daily basis.
External stakeholders, such as C-Level executives and personnel in the Project
Management Office, can use this visibility to plan more affectively, and adjust
their strategies based on more hard information and less speculation.
Apart from the regular benefits Agile has certain
Advantages in the field of Software Development. They are given as below :
Advantages of Agile
Developers like to use the
best techniques for keeping the design under control without excessive work or
rework. Some of these techniques include :
1)
Refactoring : Refactoring is the process of improving the design of
existing code without changing its externally observable behavior. Refactoring
is most often done in the context of Test-Driven Development/Design where
extensive tests and simple design make it easy to refactor safely.
2)
Simple Design : Keeping the design simple and not repeating code helps
developers keep the code maintainable
3) Test Driven
Development
: Test-Driven Development is a way of driving the design of code by writing a
test which expresses what developers intend the code to do, making that test
pass, and continuously refactoring to keep the design as simple as possible.
It is evident from the given points above we can
say that Agile has a very special space and importance in Software Development
environment. There are several reasons behind it that Agile approach is very
rapid and it involves continuous integration at each and every step otherwise
the result/output can be different from expectation. Scrum is a popular project
management framework for agile projects which is being followed in most of the
Software Industries. Scrum methodology uses different measures and metrics
which applies automation and track the progress without going in manual
methods.
Author: Ms.Shweta Shree Sharma
Project Manager
IBM Technologies.