0% found this document useful (0 votes)
87 views9 pages

Agility and Change Cost in Software Engineering

Agility in software engineering emphasizes the ability to quickly adapt to changing requirements through iterative development and collaboration. Agile methodologies aim to reduce the cost of change by promoting frequent updates and continuous integration, which helps teams respond efficiently to new demands. This approach ultimately leads to more effective software development processes by managing change-related costs.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
87 views9 pages

Agility and Change Cost in Software Engineering

Agility in software engineering emphasizes the ability to quickly adapt to changing requirements through iterative development and collaboration. Agile methodologies aim to reduce the cost of change by promoting frequent updates and continuous integration, which helps teams respond efficiently to new demands. This approach ultimately leads to more effective software development processes by managing change-related costs.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

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

Common questions

Powered by AI

The agile software development methodology reduces the cost of change primarily through its incremental delivery approach where software is built in short iterations, typically ranging from 1 to 4 weeks. This allows the development process to accommodate changing business needs more effectively. By releasing software in increments and incorporating practices such as continuous unit testing and pair programming, an agile process "flattens" the cost of change curve. This means changes can be made at later stages with less impact on cost and time compared to traditional methods .

The principles guiding agile software development include: satisfying the customer through early and continuous delivery of valuable software, welcoming changing requirements even late in development, and delivering working software frequently. They also stress daily collaboration between business people and developers, building projects around motivated individuals, and using face-to-face conversation as the most efficient communication method. Additionally, they focus on sustainable development, continuous attention to technical excellence and design, simplicity, and regular reflection on effectiveness. These principles support agility by prioritizing adaptability, communication, and sustainable development over rigid adherence to initial plans .

Extreme Programming (XP) differs from other agile methodologies by emphasizing business results first and taking an incremental approach to building products. It uses continual testing and revision, promoting the use of an object-oriented paradigm as its preferred development style. XP encompasses rules and practices involved in planning, design, coding, and testing, which occur in a highly iterative manner. This method focuses on addressing immediate customer needs through incremental development cycles, unlike others that may emphasize different aspects such as team collaboration or incremental prototyping .

Self-organization in agile teams involves the team organizing itself to best complete the work required, adapting the process to suit their local environment, and managing their work schedule to deliver software increments effectively. This approach offers benefits including improved collaboration and boosted morale. Self-organization enables teams to be more adaptable to changes, encourages individual accountability, and supports innovation by allowing team members to leverage their strengths and creativity without undue external constraints .

The Dynamic Systems Development Method (DSDM) aims to accelerate software development by implementing a controlled project environment that uses incremental prototyping. DSDM is based on the principle that 80 percent of an application can be delivered in 20 percent of the time it would take to complete the full application. Each iteration follows this '80 percent rule,' ensuring enough work is completed in each increment to facilitate the next phase. This iterative approach allows for rapid development cycles while maintaining quality through controlled time constraints and continuous improvement processes .

Agile processes address several key assumptions about software projects: 1) It is difficult to predict in advance which software requirements will persist or change; 2) Design and construction activities are often interleaved, making it challenging to determine how much design is needed before construction; and 3) The analysis, design, construction, and testing processes are unpredictable. Agile methodologies are designed to handle these uncertainties by maintaining flexibility and fostering collaboration .

The Agile Unified Process (AUP) integrates traditional software engineering aspects with agile practices by using a simplified implementation of the Unified Process that emphasizes pragmatism and discipline while following agile principles. It supports iterations similar to traditional engineering but adapts those to rapidly changing requirements and emphasizes stakeholder collaboration. AUP provides a structured environment conducive to both disciplined processes and agile adaptability, allowing teams to manage complexity and risk in larger projects while benefiting from the agility's focus on flexibility and customer satisfaction .

The Feature Driven Development (FDD) methodology manages complexity in software projects through feature-based decomposition followed by the integration of software increments. This approach allows teams to break down projects into smaller, manageable parts, focusing on collaborative team efforts. FDD also emphasizes communication of technical details using verbal, graphical, and text-based means, which helps keep all team members aligned and reduces misunderstandings related to complex project elements .

Mutual trust and respect within an agile team are critical as they lead to the formation of a "jelled" team, as described by DeMarco and Lister. This environment of trust facilitates open communication and collaboration, as team members feel safe to express ideas and provide feedback without fear of negative repercussions. It enhances team dynamics, improves morale, and promotes shared ownership of project outcomes, ultimately leading to higher performance levels and more innovative solutions .

Human factors greatly influence the success of an agile software development team by focusing on the talents and skills of individuals and adapting the process to suit specific teams and people. Key human factors include competence, common focus, collaboration, decision-making ability, fuzzy problem-solving ability, mutual trust and respect, and self-organization. For example, collaboration emphasizes the need for effective communication and teamwork, while self-organization allows teams to adapt processes to unique environments, fostering improved morale and enhanced performance .

You might also like