Agile Final Notes
Agile Final Notes
Layered technology in software engineering is a structured approach where each layer builds on the
previous one to ensure efficient and high-quality software development.
Key Layers:
1. Quality Focus (Top Layer) – Ensures the software is secure, user-friendly, maintainable, and
continuously improving.
2. Process (Foundation Layer) – Provides a framework with five steps:
o Communication
o Planning
o Modeling
o Construction
o Deployment
3. Methods – Step-by-step techniques for tasks like analysis, design, coding, testing, and maintenance.
4. Tools – Software that automates and simplifies development (e.g., editors, testing tools, project
managers).
Importance:
Encourages systematic development
Enhances maintainability and quality
Organizes the workflow
Provides guidance and automation
Result: Better, faster, and more secure software development.
Software Processes
A software process is a structured method for developing software.
Main Models:
Waterfall: Step-by-step, best for fixed requirements.
Agile: Fast, flexible development.
Scrum: Agile, team-based with short sprints.
DevOps: Combines development and operations for automation.
Key Components:
Code (program), documentation, procedures, UI, data, test cases.
Development Steps:
1. Specification
2. Development
3. Validation
4. Evolution
Software Crisis (1960s–70s):
High cost, poor quality, delays → led to structured models.
Why Use Models?
✅ Better planning
✅ Reduced risk
✅ Organized development
Conclusion: Choose a model based on project needs to ensure quality and timely delivery.
Waterfall Model in Software Engineering
The Waterfall Model is a linear and sequential approach to software development, introduced by Winston
W. Royce in 1970. It is best suited for projects with clear, stable requirements.
Key Features:
Step-by-step process (each phase must finish before the next begins)
Strong documentation
Well-defined phases
Emphasis on planning and quality control
Phases:
1. Feasibility Study
2. Requirement Analysis
3. Design
4. Coding & Unit Testing
5. Integration & System Testing
6. Maintenance (Corrective, Perfective, Adaptive)
Advantages:
✅ Simple and easy to manage
✅ Clear structure and milestones
✅ Best for small or stable projects
Disadvantages:
❌ Rigid and inflexible
❌ Late feedback and defect detection
❌ Not suitable for dynamic projects
Use Cases:
Banking systems
Government/military software
Medical and safety-critical systems
Legacy system upgrades
Conclusion:
Waterfall is ideal for well-defined, low-flexibility projects needing strong documentation, but not suitable
for fast-changing or iterative development.
Prototyping Model
The Prototyping Model is a software development approach where a basic version (prototype) of the
system is created early, allowing user feedback and refinement before full-scale development. It is ideal for
projects with unclear or changing requirements.
Steps:
1. Requirement Gathering
2. Quick Design
3. Build Prototype
4. User Evaluation
5. Refine Prototype
6. Final Implementation & Maintenance
Types:
Rapid Throwaway – Discarded after feedback
Evolutionary – Improved continuously
Incremental – Built in parts and combined
Extreme – For web apps (UI → fake backend → real backend)
Advantages:
✅ Early user involvement
✅ Flexible to changes
✅ Early bug detection
✅ Better communication
✅ Validates feasibility
Disadvantages:
❌ Time-consuming and costly
❌ Poor documentation
❌ Scope confusion
❌ Hard to finalize
❌ Unrealistic user expectations
❌ Not scalable for large systems
Best For:
Projects with unclear or changing requirements
UI/UX design
Complex or high-tech systems
Feasibility testing
Conclusion:
The Prototyping Model is effective for refining needs and reducing errors early, but requires frequent user-
developer interaction and may increase time and cost.
RAD Model
Definition:
The Rapid Application Development (RAD) Model is a fast-paced software development approach that
emphasizes quick prototyping, user feedback, and iterative delivery over long planning cycles. It aims to
deliver high-quality systems rapidly with strong user involvement.
Phases:
1. Requirements Planning – Initial requirement gathering.
2. User Description – Build and refine early prototypes with user feedback.
3. Construction – Enhance and finalize the system using automation tools.
4. Cutover – Final testing, integration, and deployment.
Pros:
✔ Fast delivery
✔ Frequent user feedback
✔ Flexible to changes
✔ Reduced errors through early testing
Cons:
❌ Needs skilled developers
❌ Not ideal for large or complex systems
❌ High user involvement required
Key Point:
RAD is ideal for fast, flexible development with active user collaboration, but not suited for large or poorly
defined projects.
Evolutionary Model
Definition:
The Evolutionary Model is a software development approach combining iterative and incremental models.
The system is built and delivered in small parts, evolving over time based on continuous user feedback.
How It Works:
1. Divide the project into parts (increments).
2. Deliver key features early.
3. Improve each version using user input.
4. Repeat until the complete system is built.
Pros:
✔ Flexible to changing needs
✔ Early delivery of working software
✔ Regular user feedback
✔ Manages complexity well
Cons:
❌ Requires frequent communication
❌ Harder to manage multiple versions
❌ Needs skilled developers
❌ Can increase cost and workload
Key Point:
The Evolutionary Model is ideal for complex projects needing frequent updates and user involvement, but
demands strong management and an experienced team.
Steps in Agile:
1. Gather Requirements
2. Design (UML, wireframes)
3. Development in Iterations
4. Testing – Unit, integration, system
5. Deployment
6. Feedback & Improvement
🔹 Timebox: Fixed-duration cycles (Sprints)
Agile Principles:
✔ Customer collaboration
✔ Working software over documentation
✔ Frequent delivery
✔ Welcoming changes
✔ Face-to-face communication
✔ Small, efficient teams
✔ Pair programming
Advantages:
✅ Fast, frequent delivery
✅ Better quality through collaboration
✅ Customer-focused development
✅ Fewer errors via pair programming
✅ High team communication
Disadvantages:
❌ Minimal documentation
❌ Poor for complex dependencies
❌ Hard to estimate time/cost
❌ Requires experienced teams
❌ Maintenance can be difficult later
Conclusion:
Agile is best for fast-paced, customer-driven projects that benefit from flexibility, frequent updates, and
constant feedback—but it needs experienced teams and active involvement to work well.
Key Points:
Efficiency: CBSE speeds up development by using reusable components.
Collaboration: CBD and domain engineering work together to build the system.
Challenges: Adapting components and managing updates, especially for third-party components.
Conclusion:
CBSE streamlines software development, making it more efficient and cost-effective by using pre-built
components, while ensuring high software quality.
3. Core Values:
1. Customer Satisfaction through Early & Continuous Delivery – Frequent delivery enhances
customer satisfaction.
2. Welcome Changing Requirements – Changes are accepted even late in development for
competitive advantage.
3. Deliver Working Software Frequently – Small, frequent releases improve feedback and adaptability.
4. Collaboration Between Business & Developers – Encourages daily teamwork between business and
technical teams.
5. Build Projects Around Motivated Individuals – Trust and empower developers for higher
productivity.
6. Face-to-Face Communication is Most Effective – Direct interaction reduces misunderstandings.
7. Working Software is the Primary Measure of Progress – Functional software is the key metric of
success.
8. Maintain a Sustainable Pace of Work – Prevents burnout with a steady development pace.
9. Continuous Attention to Technical Excellence & Good Design – Ensures maintainability and
adaptability.
10. Simplicity (Maximizing Work Not Done) – Focuses only on essential tasks, avoiding unnecessary
complexity.
11. Self-Organizing Teams – Teams make their own decisions to improve efficiency.
12. Regular Reflection on Team Effectiveness – Teams evaluate and improve processes continuously.
5. Importance:
The Agile Manifesto revolutionized software development by promoting collaboration, adaptability,
customer satisfaction, and faster delivery through frequent releases.
6. Implementation:
Adopt Agile frameworks (Scrum, Kanban, XP), focus on core values, foster open communication, iterate,
and engage with customers.
7. Conclusion:
The Agile Manifesto transformed software development by emphasizing people, collaboration, and
adaptability, and Agile methodologies like Scrum and Kanban address modern challenges effectively.
Key Features:
People Over Processes: Teams choose the best way to work.
Flexible Approach: No fixed tools or steps, tailored to the project needs.
Color Classification: Projects are categorized by team size and risk level (e.g., Crystal Clear for small
teams, Crystal Diamond for larger projects).
How It Works:
Crystal is a family of methods, where the approach adapts to the team size. Small teams use simple
processes, while larger teams may need more structure.
Benefits:
Better Collaboration: Open communication and decision-making.
Adaptability: Teams can adjust based on needs.
Fast Delivery: Regular updates and quick changes.
High Quality: Early bug detection through feedback.
Customer Satisfaction: Continuous involvement and feedback.
Drawbacks:
Lack of Structure: Can be confusing for new teams.
Not Ideal for Remote Teams: Works best in face-to-face settings.
Limited Documentation: Makes tracking decisions harder.
Scalability Issues: Less effective for very large or complex projects.
Conclusion:
Crystal is a great Agile framework for small, flexible teams but may not work well for large, structured
projects or remote teams. It emphasizes collaboration and adaptability, making it ideal for fast-moving
teams.
Feature-Driven Development (FDD) - Summary
What is FDD?
Feature-Driven Development (FDD) is an Agile approach that focuses on delivering small, functional
features one at a time. It follows an iterative and incremental process, allowing each feature to be used
immediately once developed.
Visualizes tasks moving through stages like Backlog, Development, Testing, and Done.
It can be physical or digital (e.g., JIRA, Trello).
Kanban Workflow Stages:
Stages can include:
Backlog → New tasks
Acknowledged → Task is approved
Development → Task in progress
Testing → Task being tested
Done → Task completed
Pull System:
Work moves only when the next team is ready, preventing overload and multitasking.
Lead Time vs. Cycle Time:
Lead Time: Total time from task entry to completion.
Cycle Time: Time spent actively working on a task.
Kanban Practices:
Visualize Workflow: Track work stages.
Limit WIP: Prevent overload and improve focus.
Manage Flow: Monitor and remove bottlenecks.
Explicit Policies: Define clear rules for task movement.
Feedback Loops: Regularly review to improve.
Collaborative Improvement: Continuously evolve the system.
Kanban Benefits:
Reduces WIP for faster completion.
Improves efficiency and visibility.
Suitable for projects with evolving requirements.
Conclusion:
Kanban is ideal for continuous work with changing priorities, ensuring a smooth and efficient workflow.
Extreme Programming (XP) – Agile Methodology (Short Summary)
What is XP?
Extreme Programming (XP) is an Agile approach focused on:
Fast and frequent updates
Customer involvement in all stages
Flexibility to change requirements
High-quality code with constant testing
Good Practices in XP:
Pair Programming: Two developers work together to improve code quality.
Test-Driven Development (TDD): Write tests before coding.
Incremental Development: Small, frequent updates based on feedback.
Simplicity: Keep designs simple and effective.
Continuous Integration: Regular testing and merging of code.
Key Principles of XP:
User Stories: Short descriptions of system functionality.
Pair Programming: Two developers work together on the same code.
Continuous Integration: Frequent integration to avoid major issues.
Customer Feedback: Continuous collaboration with customers.
Applications of XP:
Best for small teams, research projects, web development, and tight deadlines.
XP Life Cycle:
📊 Agile Forecasting
Purpose: To estimate the time, cost, and resources required to complete a project.
How it works:
o Uses historical sprint data (e.g., how many story points were completed in previous sprints).
o Teams analyze past trends to predict future performance.
Benefits:
o More accurate than traditional long-term planning.
o Adjusts estimates as team performance evolves.
🧮 Velocity
Definition: The amount of work a team can complete during a sprint, usually measured in story
points or work items.
Example: If a team finishes 30 story points in Sprint 1 and 35 in Sprint 2, their average velocity is
~32.5.
Usage:
o Helps teams decide how much work to take on in future sprints.
o Critical input for release planning and capacity forecasting.
🕒 Progress Tracking
Tools & Techniques:
o Burn-down charts: Show how much work remains over time. Ideal for spotting delays early.
o Burn-up charts: Show completed work vs. total scope.
o Task boards / Kanban boards: Visual tracking of task status (To Do → In Progress → Done).
o Daily Stand-ups: Short meetings to sync team progress and remove blockers.
Goal: Maintain visibility and accountability across the team.
🔮 Project Forecasting
What it does:
o Combines velocity + remaining backlog to estimate project completion date.
o Example: If backlog = 100 story points and team velocity = 25 per sprint → ~4 sprints
remaining.
Benefits:
o Gives realistic expectations to stakeholders.
o Helps teams decide if they need to adjust scope or resources.
🎨 UX Design in Agile
Agile UX involves integrating User Experience design throughout the development process, not just
at the beginning.
Practices:
o Early involvement of UX designers in sprint planning.
o Rapid prototyping and feedback loops.
o Continuous user testing of features and design iterations.
Goals:
o Create products that are user-friendly, visually consistent, and functional.
o Align UX goals with business and development priorities.
DevOps and Continuous Testing
Continuous Testing is a crucial part of the DevOps pipeline. It ensures that software quality is maintained
from the start of development through deployment.
🔄 Role of Continuous Testing in DevOps:
Integrated into the CI/CD pipeline – tests run automatically as part of every code change.
Parallel testing – testing happens alongside development, not afterward.
Fast feedback – developers get immediate insight into code quality and performance.
🧪 Types of Testing in DevOps:
Type Purpose
Regression Testing Verifies that new changes don’t break existing functionality.
Performance Testing Checks system behavior under load (speed, scalability, etc.).
Challenge Explanation
Cultural
DevOps needs cross-functional teamwork; traditional siloed teams resist change.
Resistance
📦 4. Containerization Tools
✅ Docker
Purpose: Creates and manages containers (lightweight VMs).
Key Features:
o Containers bundle app + dependencies.
o Reproducible environments.
o Fast startup, easy scaling.
Use in DevOps:
o Developers use Docker to package code.
o Used in CI/CD pipelines for testing in isolated environments.
🧪 6. Testing Tools
✅ Selenium
Purpose: Automates browser testing.
Key Features:
o Supports many browsers and languages (Java, Python, etc.).
o Used for frontend (UI) testing.
DevOps Use:
o Integrated into CI/CD pipelines to test user interfaces.
The story should be self-contained. It can be developed and delivered separately from
I Independent
other stories. This reduces dependencies and improves flexibility.
The story is not a contract, it should be open for discussion and refinement during
N Negotiable
grooming and planning sessions.
The story should provide clear value to the user or customer. It must represent a
V Valuable
business or user goal.
The team must be able to estimate the effort required to complete the story, which
E Estimable
means it must be clear enough and not too vague.
A good story should be small enough to complete within a single sprint. Large stories
S Small
should be broken into smaller ones.
The story should be written in a way that acceptance tests can be written for it. If you
T Testable
can't test it, you can't verify it.
🧠 Example Analysis (INVEST):
User Story:
"As a user, I want to reset my password so that I can access my account if I forget it."
Independent? ✅ Yes
Negotiable? ✅ Yes, implementation details can be discussed
Valuable? ✅ Yes, improves user access and security
Estimable? ✅ Yes, developers can estimate effort
Small? ✅ Yes, one clear goal
Testable? ✅ Yes, can be tested with reset email and login attempt
📝 Summary
Term Description
User Story A short statement describing what the user wants and why
INVEST Qualities of a good story: Independent, Negotiable, Valuable, Estimable, Small, Testable
3. Performance Testing
Purpose:
To assess the software’s speed, responsiveness, and stability under various load conditions. Ensures
the system can handle expected and peak user activity without failures or slowdowns.
What it checks:
o Response time of pages and APIs
o Throughput (transactions per second)
o Resource usage (CPU, memory, bandwidth)
o Behavior under load/stress (load testing, stress testing)
Approach in Agile:
o Run automated performance tests regularly, especially before releases.
o Use tools like JMeter, LoadRunner, or Gatling.
o Performance criteria are often part of acceptance criteria in user stories.
Example:
Testing if the website can handle 1000 simultaneous users making purchases without slowing down.
4. Security Testing
Purpose:
To identify vulnerabilities and ensure the application is protected against security threats, data
breaches, and unauthorized access.
What it checks:
o Authentication and authorization controls
o Data encryption and secure communication (SSL/TLS)
o Input validation to prevent injection attacks (SQL injection, XSS)
o Session management and data privacy
Approach in Agile:
o Security tests are integrated into the CI/CD pipeline using automated tools.
o Conduct static code analysis and dynamic application security testing (DAST).
o Penetration testing performed regularly, especially before major releases.
Example:
Checking that users cannot access another user’s account data without proper authorization, and
passwords are stored securely.
Summary Table
Performance Check speed, load capacity, Automated load/stress tests Handle 1000 simultaneous
Testing Type Purpose Agile Approach Example
stability users
1. Development
New knowledge is created through:
o Research
o Experiments
o Project experiences
o Innovation
Example: Learning from a software release failure and documenting the root cause.
2. Acquisition
Gathering knowledge from external sources:
o Industry best practices
o Consultants
o Open-source communities
o Academic research
Example: Adopting DevOps practices by learning from external case studies.
3. Refinement
Filtering and improving the collected knowledge:
o Validating relevance
o Removing outdated/inaccurate information
o Updating based on feedback
Example: Updating internal coding guidelines based on new language features.
4. Distribution
Sharing knowledge within the organization:
o Through documents, wikis, training sessions
o Knowledge bases, emails, dashboards
Example: Conducting workshops to train teams on new tools.
5. Deployment
Applying the refined knowledge to real-world tasks:
o Incorporating it into processes, systems, and workflows
Example: Using improved project estimation techniques in actual planning.
6. Leveraging
Using the applied knowledge to gain competitive advantage:
o Improve efficiency
o Reduce costs
o Increase innovation
Example: Using past project metrics to better forecast delivery timelines.