0% found this document useful (0 votes)
24 views17 pages

Agile Quick

The document outlines principles of software engineering, emphasizing a layered technology approach and various software process models, including Agile methodologies. It details Agile's history, core values, team structures, ceremonies, and practices, highlighting the importance of flexibility, customer collaboration, and iterative development. Additionally, it discusses DevOps principles, challenges, and the integration of quality assurance within Agile processes, focusing on continuous testing and collaboration between development and operations teams.

Uploaded by

Rani Shah
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)
24 views17 pages

Agile Quick

The document outlines principles of software engineering, emphasizing a layered technology approach and various software process models, including Agile methodologies. It details Agile's history, core values, team structures, ceremonies, and practices, highlighting the importance of flexibility, customer collaboration, and iterative development. Additionally, it discusses DevOps principles, challenges, and the integration of quality assurance within Agile processes, focusing on continuous testing and collaboration between development and operations teams.

Uploaded by

Rani Shah
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
You are on page 1/ 17

📚 Principles in Software Engineering

🔹 A Layered Technology
Software engineering is based on four layers:
1. Tools – Automated support for the process.
2. Methods – Technical steps to build software.
3. Process – Framework for managing projects.
4. Quality Focus – Ensures quality at every step.

🔹 Software Process Models


Frameworks for organizing software development. Key models include:
1. Linear Sequential Model (Waterfall)
 Step-by-step phases: Requirements → Design → Implementation → Testing → Deployment.
 Rigid and difficult to go back once a phase is complete.
2. Prototyping Model
 Build quick prototypes → gather feedback → refine → final system.
 Useful when requirements are unclear.
3. RAD Model (Rapid Application Development)
 Emphasizes fast development using components and user feedback.
 Ideal for time-constrained projects.
4. Evolutionary Process Models
 Incremental Model: Build system in parts; each increment adds features.
 Spiral Model: Combines design, prototyping, and risk analysis in iterative loops.
5. Agile Process Model
 Flexible, iterative, and customer-focused.
 Encourages early and continuous delivery.
6. Component-Based Development
 Build systems using reusable components.
 Reduces development time and increases reliability.

🚀 Agile Methodology
🔹 History of Agile
 Born in response to rigid, slow traditional models.
 Officially defined in 2001 with the Agile Manifesto.

🔹 Traditional vs. Agile Model

Feature Traditional Model Agile Model

Fixed Plan Yes No (flexible, adaptive)

Delivery One final release Frequent small releases

Customer Involvement Minimal Continuous

Change Handling Difficult Easy & expected

🔹 Classification of Agile Methods


 XP (Extreme Programming)
 Scrum
 Kanban
 Crystal
 Lean
 FDD (Feature-Driven Development)
 ASD (Adaptive Software Development)

🔹 Agile Manifesto
"We value individuals and interactions over processes and tools..."
Four Core Values:
1. Individuals & Interactions > Processes & Tools
2. Working Software > Comprehensive Documentation
3. Customer Collaboration > Contract Negotiation
4. Responding to Change > Following a Plan
12 Principles support these values (e.g., early delivery, simplicity, motivated teams).

🔹 Agile Teams
 Small, cross-functional, self-organizing.
 Roles include:
o Product Owner: Defines vision & prioritizes tasks.
o Scrum Master / Coach: Facilitates process.
o Development Team: Builds and tests product.

🔹 Team Meetings and Ceremonies


 Daily Stand-up: Quick updates.
 Sprint Planning: Set sprint goals.
 Sprint Review: Demonstrate working product.
 Sprint Retrospective: Reflect and improve.

The 4 Key Agile Ceremonies


1. Sprint Planning
 Purpose: Plan the work for the upcoming sprint.
 Participants: Scrum Master, Product Owner, Development Team.
 Agenda:
o Product Owner presents prioritized backlog items.
o Team discusses and estimates tasks.
o Team commits to a sprint backlog.
 When: Beginning of each sprint.
 Duration: 1–2 hours for a 2-week sprint.
2. Daily Standup (Daily Scrum)
 Purpose: Daily sync on progress and blockers.
 Participants: Scrum Master, Product Owner, Development Team.
 Agenda:
o What did I do yesterday?
o What will I do today?
o Are there any blockers?
 When: Daily, same time and place.
 Duration: 15 minutes or less.
3. Sprint Review
 Purpose: Demonstrate completed work and gather feedback.
 Participants: Scrum Master, Product Owner, Development Team, Stakeholders.
 Agenda:
o Team demos completed work.
o Stakeholders give feedback.
o Product Owner updates backlog.
 When: End of each sprint.
 Duration: 1–2 hours for a 2-week sprint.
4. Sprint Retrospective
 Purpose: Reflect on the sprint and improve the process.
 Participants: Scrum Master, Product Owner, Development Team.
 Agenda:
o What went well?
o What didn’t go well?
o What can we improve?
 When: End of each sprint.
 Duration: 1–2 hours for a 2-week sprint.

🔹 Agile Drivers
 Market demand for faster, flexible delivery.
 Need for better customer involvement and product adaptability.

🔹 Capabilities and Values


 Agile enables:
o Fast response to change
o Improved collaboration
o Higher product quality
o Better team morale
 Core values:
o Communication, Feedback, Simplicity, Courage, Respect
Agile Processes – Quick Summary
🔧 1. Lean Production
 Focuses on reducing waste and improving efficiency.
 Delivers value quickly by avoiding non-essential work.
🌀 2. SCRUM
 Work is divided into sprints (1–4 weeks).
 Uses roles like Scrum Master, Product Owner, and Team.
 Daily stand-up meetings, backlog, and regular reviews.
💎 3. Crystal
 Lightweight, human-centered Agile method.
 Adaptable based on team size and project criticality.
 Focuses on communication and early delivery.
🌟 4. Feature Driven Development (FDD)
 Develops software by building features (small, useful pieces).
 Involves designing first, then building by feature.
🔁 5. Adaptive Software Development (ASD)
 Focuses on speculation, collaboration, and learning.
 Designed for complex and rapidly changing environments.
✅ 6. Test-Driven Development (TDD)
 Write tests first, then write code to pass the tests.
 Improves code quality and prevents bugs early.
🧾 7. Kanban
 Visualizes work using a board (To-Do, In-Progress, Done).
 Focuses on workflow efficiency and limiting work in progress.
🚀 8. Extreme Programming (XP)
 Emphasizes frequent releases, customer feedback, and high code quality.
 Practices: Pair programming, TDD, continuous integration.

📈 Agile Estimation & Project Management


📊 Agile Forecasting
 Predicts progress and delivery time using historical data (like past sprint performance).
🧮 Velocity
 Measures how much work a team can complete in a sprint (e.g., story points).
 Helps plan future work more accurately.
🕒 Progress Tracking
 Done via burn-down charts, task boards, and daily stand-ups.
✅ Track Done Pattern
 Clearly defines what “done” means to ensure consistent progress.
 Includes coding, testing, reviews, and deployment readiness.
🔮 Project Forecasting
 Uses velocity and backlog to predict completion date and progress.
🎨 UX Design in Agile
 UX is integrated early and iteratively.
 Involves constant user feedback and prototyping.
🚀 DevOps: Overview
DevOps is a set of practices that combines development (Dev) and operations (Ops) to:
 Automate and integrate the process of software development and IT operations.
 Deliver applications and services faster and more reliably.

🔍 Importance & Benefits of DevOps


✅ Importance:
 Bridges the gap between development and operations.
 Reduces software release cycles.
 Enables continuous delivery and integration.
💡 Benefits:
 Faster time to market
 Improved collaboration
 More stable operating environments
 Higher deployment frequency
 Early detection and faster correction of issues

🧭 DevOps Principles & Practices


🌟 Core Principles:
1. Collaboration between Dev and Ops teams
2. Automation of the software delivery process
3. Continuous Integration and Continuous Delivery (CI/CD)
4. Monitoring and Feedback for improvement
5. Infrastructure as Code (IaC)
🔧 Common Practices:
 Version control
 Automated testing
 Continuous deployment
 Performance monitoring

🔄 7 C’s of DevOps Lifecycle (For Business Agility)


1. Continuous Development – Code planning & writing
2. Continuous Integration – Frequent code merging
3. Continuous Testing – Automated testing of builds
4. Continuous Deployment – Auto-release to production
5. Continuous Monitoring – Real-time performance checks
6. Continuous Feedback – From users and systems
7. Continuous Operations – Seamless, stable operations

🧪 DevOps and Continuous Testing


 Ensures code quality at every stage of DevOps pipeline.
 Testing happens parallel to development.
 Types: Unit, Integration, Regression, Performance testing.

⚠️Challenges in DevOps Tool Selection & Implementation


Tool Selection:
 Too many tools available, hard to integrate.
 Choosing tools that match team skills and existing systems is tricky.
Implementation Challenges:
 Resistance to cultural change
 Skills gap in automation and cloud
 Managing legacy systems
 Ensuring security in CI/CD pipelines

📌 Mapping Applications to DevOps (Assessment)


Before applying DevOps:
 Assess the app’s architecture (monolith vs microservices)
 Evaluate automation feasibility
 Identify dependencies
 Define goals (speed, quality, reliability)

🛠 Study of Open Source DevOps Tools

Area Tools

Version Control Git, GitHub, GitLab


Area Tools

CI/CD Jenkins, Travis CI, CircleCI

Configuration Mgmt Ansible, Puppet, Chef

Containerization Docker

Orchestration Kubernetes

Monitoring Prometheus, Nagios, Grafana

Collaboration Slack, Mattermost

Testing Selenium, JUnit, TestNG

🧠 1. Impact of Agile Processes on Requirements Engineering (RE)


 Traditional RE involves fixed, detailed upfront requirements.
 In Agile, requirements are evolving and flexible.
 Agile RE focuses on:
o Continuous user feedback
o Incremental updates
o Lightweight documentation
📌 Key Impact:
 Requirements are gathered iteratively, not all at once.
 Requirements evolve through conversation (not just documentation).
 Heavy focus on working software over formal specs.

📋 2. Product Backlog
 A Product Backlog is a prioritized list of all features, enhancements, and bug fixes.
 Maintained by the Product Owner.
 Each item is called a Product Backlog Item (PBI) and typically written as a User Story.
📌 Characteristics:
 Dynamic and continuously updated.
 Prioritized based on business value and risk.

🔄 3. Sprint Backlog
 A Sprint Backlog is a subset of the Product Backlog selected for a Sprint.
 Created during Sprint Planning.
 Owned and managed by the Development Team.
 Contains:
o Selected User Stories
o Tasks to complete them

🚀 4. Current Agile Practices in Requirements Engineering


 User Stories and Story Cards as requirements
 Backlogs to manage scope
 Daily stand-ups to discuss requirements updates
 Customer collaboration for refinement
 Acceptance criteria used to validate requirements
 Lightweight models (UML, BPMN) only if necessary

📈 5. Variance in Agile RE
 Refers to the variability in requirements understanding and documentation across teams/projects.
 Causes:
o Different stakeholder inputs
o Changing user needs
o Level of team agility
📌 Addressed by:
 Continuous refinement
 Short feedback loops
 Working closely with stakeholders

🔄 6. Managing Unstable Requirements


 Agile embraces changing requirements, even late in development.
 Managed through:
o Short sprints (2-4 weeks)
o Regular grooming and refinement
o Close stakeholder collaboration
o Minimal upfront planning; focus on adaptability

🧑‍🤝‍🧑 7. Requirements Elicitation in Agile


 Done through collaborative conversations.
 Techniques:
o User interviews
o Workshops
o Brainstorming
o Observation
o Customer demos
o Feedback sessions
📌 Focuses on understanding real needs, not just stated needs.
📊 8. Agile Requirements Prioritization
 Important due to time-boxed development.
 Methods used:
o MoSCoW (Must have, Should have, Could have, Won’t have)
o Kano Model (Basic, Performance, Excitement features)
o Value vs. Risk Matrix
o Business Value Rating by Product Owner

🧾 9. Agile Requirements Modeling and Generation


 Lightweight models are used only when needed.
 Examples:
o UML diagrams for class, sequence
o BPMN for business processes
 Generation is:
o Iterative
o Collaborative
o Kept simple and useful

🔁 10. Concurrency in Agile Requirements Generation


 Requirements can be:
o Gathered
o Refined
o Implemented
concurrently
 Agile supports parallel processing:
o One team works on current sprint
o Product Owner refines upcoming backlog
o QA prepares test cases simultaneously

🧾 11. User Stories – Specification and Formats


 Format:
As a [role], I want [goal], so that [benefit]
o E.g., “As a student, I want to upload my assignment so that I can get it reviewed.”
📌 INVEST Criteria for good stories:
 Independent
 Negotiable
 Valuable
 Estimable
 Small
 Testable

🗂 12. Story Cards


 Physical or digital cards representing user stories.
 Typically includes:
o Title
o Description (user story format)
o Acceptance Criteria
o Priority
o Story Points
📌 Used during planning, stand-ups, and tracking.

✅ Summary Table

Concept Description

Product Backlog Full list of features and tasks, prioritized by the Product Owner

Sprint Backlog Selected items for the current sprint

User Stories Informal, conversational requirements

Story Cards Visual representations of user stories

Requirements Prioritization MoSCoW, Value-Risk Matrix, etc.

Modeling in Agile Lightweight, just enough documentation (UML, BPMN if needed)

Managing Changes Embrace change via short sprints, feedback, and backlog refinement

Requirements Elicitation Done through collaboration, not formal documents

Agile RE Practices Incremental, evolving, and user-centered

Concurrency in Requirement Multiple activities (gathering, refinement, implementation) happen in


Gen. parallel
✅ Agility Quality Assurance and Testing
📦 Agile Product Development & Quality Assurance
 Quality is built-in, not added later.
 QA is integrated into each sprint, not a separate phase.
 Developers and testers collaborate continuously.
 Feedback loops are fast and frequent through regular testing.

📊 Agile Metrics
Used to track progress, quality, and efficiency of development.
💰 Financial Metrics (in FDD):
 Cost of Delay: Financial loss due to slow delivery.
 ROI: Return on investment for each feature delivered.
 Budget burn-down: Tracks actual vs. projected spending.
⚙️Production Metrics:
 Velocity: Story points completed per sprint.
 Lead Time: Time from idea to delivery.
 Cycle Time: Time taken for a user story to go from start to done.
 Defect Density: Number of defects per feature/module.

🔍 Agile Approach to Quality Assurance


 QA is a shared responsibility (developers + testers).
 Use of Test-Driven Development (TDD) and Behavior-Driven Development (BDD).
 Continuous integration and automated testing ensure early defect detection.
 Focus on preventing defects, not just finding them.

🧪 Types of Testing in Agile

Type Purpose

Functionality Testing Verifies if features work as expected.

UI Testing Tests layout, responsiveness, and user interface behavior.

Performance Testing Checks speed, load handling, and stability under pressure.

Security Testing Ensures system is protected against threats and vulnerabilities.

🧠 Agile Testing
🌟 Principles of Agile Testers
 Continuous testing, not phase-based
 Embrace change, adapt test cases
 Test early and often
 Collaborate with developers and customers
 Provide fast feedback

🧭 Agile Testing Quadrants

Quadrant Type Focus

Q1 Unit & Component Tests Technology-facing, supports the team (TDD)

Q2 Functional Tests Business-facing, supports the team (automation, BDD)

Exploratory & Usability


Q3 Business-facing, critiques the product (manual testing, UI feedback)
Tests

Performance & Security Technology-facing, critiques the product (load, stress, vulnerability
Q4
Tests tests)

👉 Helps balance supporting the team vs. critiquing the product.

🤖 Agile Test Automation


 Tests are written before or alongside code.
 Frequent CI/CD cycles demand reliable test scripts.
 Regression tests, unit tests, and smoke tests are usually automated.
 Maintains fast feedback with less manual effort.

🧱 Test Automation Pyramid


Visual model that shows the ideal ratio of automated tests:
scss
CopyEdit
[ UI Tests ] <- Few (expensive & slow)
[ Integration Tests ]
[ Unit Tests ] <- Most (fast & reliable)
 Focus on more unit tests (base),
 Fewer integration and UI tests (top of pyramid),
 Ensures efficiency and coverage.

🧪 Case Study – Selenium


What is Selenium?
 A popular open-source tool for web browser automation.
 Supports multiple browsers (Chrome, Firefox, Edge).
 Supports multiple languages (Java, Python, C#, etc.)
Key Features:
 Automates functional and regression testing.
 Integrates with CI tools like Jenkins.
 Can run tests in parallel using Selenium Grid.
 Works with frameworks like TestNG, JUnit, and Cucumber.
Why Selenium in Agile?
 Enables frequent, fast testing cycles.
 Easy to integrate with Agile tools.
 Reduces manual testing effort.
 Supports cross-browser and cross-platform testing.

📝 Summary Table

Topic Key Points

Agile QA Continuous testing, TDD, CI/CD

Agile Metrics Velocity, lead time, defect density

Agile Testing Types Functional, UI, Performance, Security

Testing Quadrants Q1–Q4: Tech & business facing, supportive & critique

Test Automation Pyramid Focus on unit > integration > UI tests

Selenium Web test automation tool, supports CI/CD

You might also like