Software Engineering and Project Management 21CS61
AGILITY AND COST OF CHANGE
INTRODUCTION:
Agile is a software development methodology to build software incrementally using short
iterations of 1 to 4 weeks so that the development process is aligned with the changing business
needs. An agile team is a nimble(quick to respond) team able to appropriately respond to
changes. Changes in the software being built, changes to the team members, changes because of
new technology, changes of all kinds that may have an impact on the product they build or the
project that creates the product. Support for changes should be built-in everything we do in
software, something we embrace because it is the heart and soul of software. An agile team
recognizes that software is developed by individuals working in teams and that the skills of
these people, their ability to collaborate is at the core for the success of the project.
AGILITY AND THE COST OF CHANGE :
An agile process reduces the cost of change because software is released in increments and
change can be better controlled within an increment. Agility argue that a well-designed agile
process “flattens” the cost of change curve shown in following figure, allowing a software team
to accommodate changes late in a software project without dramatic cost and time impact.
When incremental delivery is coupled with other agile practices such as continuous unit testing
and pair programming, the cost of making a change is attenuated.
Dept. of CSE, EWIT 2023-24 1
Software Engineering and Project Management 21CS61
AGILE PROCESS:
Any agile software process is characterized in a manner that addresses a number of key
assumptions about the majority of software projects: 1. It is difficult to predict in advance
which software requirements will persist and which will change. It is equally difficult to predict
how customer priorities will change as the project proceeds. 2. For many types of software,
design and construction are interleaved. That is, both activities should be performed in tandem
so that design models are proven as they are created. It is difficult to predict how much design
is necessary before construction is used to prove the design. 3. Analysis, design, construction,
and testing are not as predictable.
HUMAN FACTORS:
Agile development focuses on the talents and skills of individuals, molding the process to
specific people and teams.” The key point in this statement is that the process molds to the
needs of the people and team
Competence: In an agile development context, “competence” encompasses innate talent,
specific software- related skills, and overall knowledge of the process that the team has chosen
to apply
Common focus: Although members of the agile team may perform different tasks and bring
different skills to the project.
Collaboration: Software engineering (regardless of process) is about assessing, analyzing,
and using information that is communicated to the software team.
Decision-making ability: Any good software team (including agile teams) must be allowed
the freedom to control its own destiny
Fuzzy problem-solving ability: Software managers must recognize that the agile team will
continually have to deal with ambiguity and will continually be buffeted by change.
Mutual trust and respect: The agile team must become what DeMarco and Lister call a
“jelled” team.
Self-organization: In the context of agile development, self-organization implies three things:
(1)the agile team organizes itself for the work to be done,
(2)the team organizes the process to best accommodate its local environment,
(3) the team organizes the work schedule to best achieve delivery of the software increment.
Self-organization has a number of technical benefits, but more importantly, it serves to improve
collaboration and boost team morale.
Dept. of CSE, EWIT 2023-24 2
Software Engineering and Project Management 21CS61
AGILITY PRINCIPLES:
Agility principles for those who want to achieve agility:
1. Our highest priority is to satisfy the customer through early and continuous delivery of
valuable software.
2. Welcome changing requirements, even late in development. Agile processes harness change
for the customer’s competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a
preference to the shorter timescale.
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support they
need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, developers, and users
should be able to maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good design enhances agility. [Link]
—the art of maximizing the amount of work not done—is essential.
11. The best architectures, requirements, and designs emerge from self– organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and
adjusts its behavior accordingly.
Dept. of CSE, EWIT 2023-24 3
Software Engineering and Project Management 21CS61
AGILE PROCESS MODELS:
Agile process models have been proposed and are in use across the industry. Among the most
common are:
Extreme Programming(XP)
Adaptive Software Development (ASD)
Scrum
Dynamic Systems Development Method (DSDM)
Crystal
Feature Drive Development (FDD)
Lean Software Development (LSD)
Agile Modeling (AM)
Agile Unified Process (AUP)
Extreme Programming(XP):
Extreme Programming (XP), the most widely used approach to agile software development,
emphasizes business results first and takes an incremental, get -something-started approach to
building the product, using continual testing and revision.
Extreme Programming uses an object-oriented approach as its preferred development paradigm
and encompasses a set of rules and practices that occur within the context of four framework
activities: planning, design, coding, and testing. Following figure illustrates the XP process and
notes some of the key ideas and tasks that are associated with each framework activity.
Dept. of CSE, EWIT 2023-24 4
Software Engineering and Project Management 21CS61
Adaptive Software Development (ASD):
Adaptive Software Development (ASD) has been proposed by Jim Highsmith as a technique for
building complex software and systems. The philosophical underpinnings of ASD focus on
human collaboration and team self- organization. High smith argues that an agile, adaptive
development approach based on collaboration is “as much a source of order in our complex
interactions as discipline and engineering.” He defines an ASD “life cycle” that incorporates
three phases, speculation, collaboration, and learning.
During speculation, the project is initiated and adaptive cycle planning is conducted. Adaptive
cycle planning uses project initiation information—the customer’s mission statement, project
constraints (e.g., delivery dates or user descriptions), and basic requirements—to define the set
of release cycles (software increments) that will be required for the project. Motivated people
use collaboration in a way that multiplies their talent and creative output beyond their absolute
numbers. This approach is a recurring theme in all agile methods. But collaboration is not easy.
It encompasses communication and teamwork, but it also emphasizes individualism, because
individual creativity plays an important role in collaborative thinking. It is, above all, a matter
of trust. People working together must trust one another to. As members of an ASD team begin
to develop the components that are part of an adaptive cycle, the emphasis is on “learning” as
much as it is on progress toward a completed cycle. ASD teams learn in three ways: focus
groups, technical reviews , and project postmortems.
Dept. of CSE, EWIT 2023-24 5
Software Engineering and Project Management 21CS61
Scrum:
Scrum is an agile software development method that was conceived by Jeff Sutherland and his
development team in the early 1990s. Scrum principles are consistent with the agile manifesto
and are used to guide development activities within a process that incorporates the following
framework activities: requirements, analysis, design, evolution, and delivery. Within each
framework activity, work tasks occur within a process pattern called a sprint. The work
conducted within a sprint is adapted to the problem at hand and is defined and often modified in
real time by the Scrum team. The overall flow of the Scrum process is illustrated in following
figure
Scrum emphasizes the use of a set of software process patterns that have proven effective for
projects with tight timelines, changing requirements, and business criticality. Each of these
process patterns defines a set of development actions:
Backlog: a prioritized list of project requirements or features that provide business value
for the customer. Items can be added to the backlog at any time. The product manager
assesses the backlog and updates priorities as required.
Sprints: consist of work units that are required to achieve a requirement defined in the
backlog that must be fit into a predefined time-box (typically 30 days). Changes (e.g.,
backlog work items) are not introduced during the sprint. Hence, the sprint allows team
members to work in a short-term, but stable environment.
Scrum meetings: are short (typically 15 minutes) meetings held daily by the Scrum
team.
Dept. of CSE, EWIT 2023-24 6
Software Engineering and Project Management 21CS61
Dynamic Systems Development Method (DSDM) :
The Dynamic Systems Development Method (DSDM) is an agile software development
approach that “provides a framework for building and maintaining systems which meet tight
time constraints through the use of incremental prototyping in a controlled project
environment” The DSDM philosophy is borrowed from a modified version of the Pareto
principle—80 percent of an application can be delivered in 20 percent of the time. It would take
to deliver the complete (100 percent) application. DSDM is an iterative software process in
which each iteration follows the 80 percent rule. That is, only enough work is required for each
increment to facilitate movement to the next increment.
Crystal:
Alistair Cockburn and Jim Highsmith created the Crystal family of agile methods in order to
achieve a software development approach that puts a premium on “maneuverability” during
what Cockburn characterizes as “a resource limited, cooperative game of invention and
communication, with a primary goal of delivering useful, working software and a secondary
goal of setting up for the next game” The Crystal family is actually a set of example agile
processes that have been proven effective for different types of projects. The intent is to allow
agile teams to select the member of the crystal family that is most appropriate for their project
and environment.
Feature Driven Development (FDD):
Feature Driven Development (FDD) was originally conceived by Peter Coad and his colleagues
as a practical process model for object-oriented software engineering. Stephen Palmer and John
Felsing have extended and improved Coad’s work, describing an adaptive, agile process that
can be applied to moderately sized and larger software projects. Like other agile approaches,
FDD adopts a philosophy that
Emphasizes collaboration among people on an FDD team;
Manages problem and project complexity using feature-based decomposition followed
by the integration of software increments, and
Communication of technical detail using verbal, graphical, and text-based means.
Dept. of CSE, EWIT 2023-24 7
Software Engineering and Project Management 21CS61
SUMMARY
Agility in software engineering refers to the ability to adapt quickly and efficiently to changing
requirements and environments. This concept is often associated with Agile methodologies,
which emphasize iterative development, collaboration, and flexibility. The cost of change, in
this context, relates to the expenses incurred when modifying a system after its initial
implementation. In traditional development models, the cost of change increases significantly
over time. However, Agile practices aim to minimize these costs by promoting frequent
updates, continuous integration, and comprehensive testing. By doing so, Agile methodologies
help teams to rapidly respond to new demands while keeping change-related costs manageable,
ultimately leading to more efficient and effective software development processes.
Dept. of CSE, EWIT 2023-24 8
Software Engineering and Project Management 21CS61
QUESTIONS RELATED TO THE TOPIC
1. What is Agile software development ?
2. What is Agility and Cost of exchange ?
3. What are the human factors for Agile development ?
4. What are the Agile Principles ?
5. What is an Agile Process model ?
Dept. of CSE, EWIT 2023-24 9