Software Engineering
Lakshmitha H Y
Assistant Professor
PBMMEC
I Sem MCA Nov 2025
2
Agility
Definition: Agility in software engineering is the capability of a team to rapidly
adjust its processes, priorities, and solutions in response to changing requirements,
customer feedback, or unexpected challenges while still delivering high-quality
software.
Continued…
➔ Agility refers to the capability of a software development process or
organization to rapidly and effectively respond to change.
➔ It is the quality that allows teams to adapt to new requirements, technologies,
or customer needs without causing major disruption to the project.
➔ It emphasizes flexibility, adaptability, and the ability to deliver high-quality
software through iterative development, continuous feedback, and incremental
improvement.
➔ Agility is the central principle behind Agile methodologies.
Core Concepts that Guide Agile Practices
1 Iterative and Incremental
Development
2 Customer Collaboration
3 Responding to Change
4 Cross-functional Teams
5 Continuous Improvement
Continued…
Iterative and Incremental Development
Work is broken into small units (often called iterations or sprints, usually 1–4
weeks).
Each iteration produces a working part of the software.
Continued…
Customer Collaboration
Customers or stakeholders are frequently involved and give feedback
to ensure the product meets their needs.
Continued…
Responding to Change
Agile welcomes changing requirements—even late in
development—because user needs may evolve.
Continued…
Cross-functional Teams
Teams include developers, testers, designers, and other roles working
closely together.
Continued…
Continuous Improvement
Teams regularly reflect on what is working and what is not (in
retrospectives) and improve their process.
The Cost of Change
The cost of change represents the effort, time, and resources required to modify a
software system as development progresses.
In traditional, plan-driven methodologies, this cost typically increases significantly at
later stages of the project because changes may necessitate reworking requirements,
redesigning system architecture, or rewriting completed code.
Continued…
Agile methodologies aim to mitigate and stabilize the cost of change by:
➔ Developing software in small, incremental units,
➔ Incorporating continuous testing and integration,
➔ Obtaining frequent stakeholder feedback, and
➔ Allowing requirements to evolve organically.
Through these practices, Agile reduces the severity of late-stage modifications,
thereby keeping the cost of change lower and more manageable throughout the
project lifecycle.
Continued…
Development Cost
Development schedule progress
What is an Agile Process?
In agile software development, the process model is characterized by several key
assumptions about most software projects. These assumptions help explain why
agile methods emphasize flexibility, collaboration, and rapid delivery.
Here are the commonly recognized key assumptions:
1. Requirements change frequently
Customer needs, market conditions, and new insights frequently change. Therefore,
the development process must be able to adapt continuously.
Continued…
2. Upfront prediction is difficult
It is challenging to accurately predict requirements, design needs, technical issues, and
risks at the beginning of a project. Because of this uncertainty, agile relies on iterative
development and regular feedback instead of extensive upfront planning.
3. Working software is the primary measure of progress
Plans and documents are useful but limited. Actual, functioning software delivered in small
increments provides the most reliable indication of progress.
4. Small and collaborative teams are more effective
Agile assumes that communication is clearer in small groups and that self-organizing teams
can adapt quickly and make better decisions.
Continued…
5. Customer Collaboration Is More Valuable Than Contract Negotiation
Agile presumes that close, ongoing collaboration with customers leads to a product that
better meets their needs. Instead of relying solely on contractual requirements, Agile teams
expect continuous clarification, adjustment, and validation from stakeholders.
6. Change Is Not Only Expected but Valuable
Agile development assumes that change—when managed iteratively—can enhance the
product rather than jeopardize it. Responding to change quickly is viewed as a competitive
advantage rather than a disruption.
7. Delivering Value Early Reduces Risk
By releasing small increments of working software early and often, Agile reduces technical,
financial, and market risks. Early delivery enables real-world testing, stakeholder feedback,
and the ability to pivot before major resources are invested.
Continued…
8. Face-to-Face Communication Enhances Understanding
Agile methods assume that direct, frequent communication—whether in person or through
real-time digital tools—minimizes misunderstandings and accelerates decision-making more
effectively than formalized written communication alone.
9. Continuous Improvement Leads to Better Outcomes
Agile assumes that teams can regularly inspect their process and product, reflect on
effectiveness, and make incremental improvements. Through retrospectives and ongoing
adjustments, the team becomes more efficient over time.
10. Technical Excellence and Good Design Enable Agility
Agile presumes that high-quality engineering practices—such as refactoring, automated
testing, and clean architecture—are essential for sustaining rapid change. Poor code quality
or rigid architecture prevents teams from adapting effectively.
Agile Principles
1. Satisfy the customer through early and continuous delivery of valuable software
Agile emphasizes delivering working features early and often, ensuring the customer
receives continual value and reducing the risk of misaligned expectations.
2. Welcome changing requirements, even late in development
Agile recognizes that evolving needs can improve the product. The process is
designed to embrace change as a driver of competitive advantage.
3. Deliver working software frequently
Teams release functional increments at regular intervals—from weeks to
months—promoting rapid feedback, improved predictability, and steady progress.
Continue…
4. Collaborate closely with customers and stakeholders
Continuous communication ensures alignment, immediate clarification of
requirements, and direct validation of delivered features.
5. Build projects around motivated individuals
Agile assumes that empowered, supported team members will take ownership, show
initiative, and produce high-quality work.
6. Use face-to-face (or real-time) communication as the most efficient method of
conveying information
Direct communication minimizes delays, misunderstandings, and unnecessary
documentation, enabling faster and clearer decision-making.
Continue…
7. Measure progress primarily through working software
Productivity and advancement are gauged by tangible, functional output rather than
documentation volume or activity levels.
8. Promote sustainable development
Agile processes encourage teams to maintain a constant pace indefinitely, preventing
burnout and preserving long-term productivity.
9. Commit to continuous technical excellence and good design
Maintaining high code quality, clean architecture, and strong engineering practices
ensures that the system remains adaptable and easy to enhance.
Continue…
10. Maximize simplicity by focusing on essential work
Agile encourages delivering only what is necessary, reducing waste, minimizing
complexity, and accelerating value delivery.
11. Empower self-organizing teams to produce the best architecture,
requirements, and designs
Agile trusts teams to determine optimal solutions collaboratively, leveraging their
collective expertise.
12. Reflect regularly and adapt processes for improvement
Through recurring retrospectives, teams examine their practices, identify areas for
enhancement, and adjust their approach to become increasingly effective over time.
Politics of Agile Development
➔ The politics of Agile development refers to the organizational, cultural, and
interpersonal power dynamics that arise when Agile methods are adopted
within a software development environment.
➔ It encompasses the ways in which Agile practices redistribute authority,
challenge existing hierarchies, alter accountability structures, and create both
cooperation and conflict among stakeholders.
➔ These political dimensions influence how Agile is interpreted, implemented, and
sustained within an organization.
Continue…
1. Shift in Power: Authority moves from managers to self-organizing teams.
2. Transparency: Daily stand-ups and visible boards expose progress and issues.
3. Shared Accountability: Teams collectively own outcomes rather than individuals.
4. Governance Tension: Agile iterative processes may conflict with traditional controls.
5. Stakeholder Engagement: Frequent collaboration required; may face resistance.
6. Redefining Success: Focus on delivering value, not strictly following plans.
7. Cultural Clash: Openness and adaptability can conflict with hierarchical norms.
8. Resource & Influence Competition: Negotiation over roles, priorities, and resources.
Human Factors
➔ Human factors in the Agile process are the cognitive, behavioral, interpersonal,
and organizational attributes of individuals and teams that influence the
execution, performance, and outcomes of Agile software development.
➔ These factors determine how effectively Agile principles are applied and how
well teams adapt to changing requirements, collaborate, and deliver value.
Continue…
Key Human Factors in Agile
1. Communication: Clear, continuous, and bidirectional communication ensures shared understanding, rapid
feedback loops, and early detection of issues. It is foundational to iterative development and stakeholder
alignment.
2. Collaboration: Agile methodologies depend on seamless collaboration among cross-functional team members.
Effective collaboration enhances knowledge sharing, reduces handoff delays, and supports collective
ownership of outcomes.
3. Common Focus: Teams must align around a shared vision, sprint goals, and product objectives. A common
focus minimizes conflicting priorities and ensures that collective effort is directed toward delivering customer
value.
4. Competence: The technical and behavioral competence of team members directly influences productivity and
quality. Competence includes domain expertise, Agile literacy, and the ability to apply best practices
independently and collaboratively.
Continue…
Key Human Factors in Agile
5. Decision-Making Ability: Agile teams require decentralized, timely decision-making to maintain momentum.
Strong decision-making ability enables teams to evaluate trade-offs, adjust plans, and respond to emerging
issues without dependency bottlenecks.
6. Fuzzy Problem-Solving Ability: Agile environments often involve ambiguity and evolving requirements.
The ability to address ill-defined (“fuzzy”) problems is essential for navigating uncertainty, exploring
alternatives, and iteratively refining solutions.
7. Mutual Trust and Respect: Trust forms the basis of psychological safety, open communication, and honest
feedback. Mutual respect supports constructive interactions, conflict resolution, and healthy team dynamics.
8. Team Cohesion: Cohesion enhances collaboration, motivation, and resilience. Cohesive teams work
efficiently, support one another, and coordinate effectively during high-pressure iterations.
Continue…
Key Human Factors in Agile
9. Motivation and Engagement: High levels of intrinsic motivation—driven by autonomy, mastery,
and purpose—support creativity, sustained effort, and proactive problem-solving.
10. Leadership and Facilitation: Agile leadership emphasizes facilitation over command. Leaders
remove impediments, foster transparency, and enable teams to work autonomously while
maintaining alignment with organizational goals.
11. Adaptability and Learning Orientation: Agile teams must adapt to changing requirements and
continuously learn from experience. A strong learning orientation reinforces improvement through
retrospectives and experimentation.
12. Conflict Management: Constructive handling of conflict ensures diverse viewpoints are considered,
decisions are improved, and interpersonal tensions do not hinder progress.
Continue…
Key Human Factors in Agile
13. Self-Organization: Self-organizing teams manage their own workloads, coordinate
their efforts, and determine the most effective way to accomplish sprint objectives.
This autonomy enhances accountability and responsiveness.
14. Psychological Safety: Psychological safety encourages open dialogue, innovation,
and willingness to raise concerns without fear of negative consequences.
Assignment
1 Explain how Continuous Feedback in Agile helps in reducing rework and cost.
2 Describe the phases of a typical Agile lifecycle and explain how iteration-based planning
works.
3 You are given a project where requirements are unclear and expected to evolve.
Explain why Agile is more suitable than a traditional model for this scenario.
Extreme Programming (XP)
Extreme Programming (XP) is a lightweight Agile software development
methodology that emphasizes customer satisfaction, continuous feedback, simplicity,
and high-quality code through frequent releases and disciplined engineering
practices.
It aims to improve software quality and responsiveness to changing customer
requirements by applying proven development practices to an extreme level.
Although the foundational ideas and practices related to Extreme Programming
originated in the late 1980s, the seminal and most influential work on the subject
was formally developed and documented by Kent Beck [Bec04a].
Continue…
More recently, a variant of XP, called Industrial XP (IXP) has been proposed
[Ker05].
IXP refines XP and targets the agile process specifically for use within large
organizations.
XP Values
Beck [Bec04a] defines a set of five values that establish a foundation for all work
performed as part of XP - Communication, Simplicity, Feedback, Courage, and
Respect.
Each of these values is used as a driver for specific XP activities, actions, and tasks.
1. Communication
Communication emphasizes continuous, clear, and direct information sharing among all members
of the development team and stakeholders.
In XP:
● Developers communicate through pair programming, shared code ownership, and collective
design.
● Customers and developers collaborate closely, often with an on-site customer.
● Code itself is treated as a form of communication through simple design and clear naming.
Effective communication reduces misunderstandings, ensures shared knowledge, and allows
problems to be identified early.
2. Simplicity
Simplicity means doing the simplest thing that could possibly work to meet current
requirements—no more, no less.
In XP:
● Systems are designed only for today’s needs, not speculative future requirements.
● Unnecessary complexity is avoided.
● Continuous refactoring keeps the design clean and understandable.
Simplicity lowers development cost, increases adaptability, and makes systems easier to
maintain and modify.
3. Feedback
Feedback focuses on obtaining rapid and frequent information about the system and the
development process.
In XP:
● Test-Driven Development (TDD) provides immediate feedback on code correctness.
● Continuous integration reveals integration problems early.
● Regular customer feedback validates that the software meets real business needs.
Fast feedback enables teams to detect errors early and adjust direction before problems
become costly.
4. Courage
Courage is the willingness to make necessary changes, even when they are difficult or risky.
Beck argues that strict adherence to certain XP practices demands courage. A better word might be
discipline.
In XP:
● Developers have the courage to refactor code aggressively.
● Teams are willing to discard or rewrite code when it no longer serves its purpose.
● Honest communication about progress, risks, and problems is encouraged.
Courage ensures that technical and process issues are addressed rather than ignored.
5. Respect
Respect recognizes that successful software development depends on trust and
professionalism among team members.
In XP:
● Developers respect each other’s contributions and skills.
● Management respects developers’ technical decisions.
● Developers respect customers’ business priorities.
Mutual respect fosters collaboration, accountability, and a healthy team environment.
The XP Process
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.
The Extreme Programming Process
1. Planning
The XP process begins with planning, where requirements are captured as user stories written in
simple, non-technical language.
Key activities:
● The customer defines and prioritizes user stories.
● Developers estimate the effort required for each story.
● Stories are selected for a short iteration (usually 1–2 weeks).
● A release plan and iteration plan are created.
The goal is to align development work with business priorities.
2. Design
XP promotes simple design, meaning the system is designed only to meet current
requirements.
Key characteristics:
● Design avoids unnecessary complexity.
● The simplest solution that works is preferred.
● Design is continuously improved through refactoring.
Design in XP is not a one-time phase but an ongoing activity throughout the project.
3. Coding
Coding is the central activity in XP and follows strict practices.
Key practices:
● Test-Driven Development (TDD): tests are written before code.
● Pair Programming: two developers work together at one workstation.
● Collective Code Ownership: any developer can modify any part of the code.
● Coding standards ensure consistency.
Design in XP is not a one-time phase but an ongoing activity throughout the project.
4. Testing
Testing is continuous and automated in XP.
Key testing activities:
● Unit tests verify individual components.
● Acceptance tests validate user stories.
● Tests are run frequently, often with continuous integration.
Testing provides rapid feedback and ensures the system meets customer
expectations.