0% found this document useful (0 votes)
4 views52 pages

Agile Final Notes

Layered technology in software engineering organizes development into layers focusing on quality, processes, methods, and tools to enhance efficiency and software quality. Various software processes, including Waterfall, Agile, and Prototyping models, provide structured approaches to development, each with its advantages and disadvantages. The Agile methodology, emphasizing flexibility and customer collaboration, has evolved significantly since its inception in 2001, promoting iterative development and continuous improvement.

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)
4 views52 pages

Agile Final Notes

Layered technology in software engineering organizes development into layers focusing on quality, processes, methods, and tools to enhance efficiency and software quality. Various software processes, including Waterfall, Agile, and Prototyping models, provide structured approaches to development, each with its advantages and disadvantages. The Agile methodology, emphasizing flexibility and customer collaboration, has evolved significantly since its inception in 2001, promoting iterative development and continuous improvement.

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/ 52

Layered Technology in Software Engineering

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.

Best Used When:


 Requirements are clear and stable
 Quick delivery is needed (within 60–90 days)
 Projects are small to medium-sized
 Users are actively involved

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.

Best Used For:


 Large, modular projects
 Projects needing early delivery of core features
 When requirements may evolve gradually
 High-risk or new technology projects

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.

Agile Development Model


Definition:
The Agile Model is a flexible, iterative software development approach that delivers working software in
small, frequent increments and quickly adapts to changing customer needs.

Key Agile Methods:


 Scrum – Uses sprints and defined roles (Scrum Master, Product Owner).
 Extreme Programming (XP) – Focuses on pair programming, continuous testing.
 Lean – Eliminates waste for faster development.
 FDD, DSDM, Crystal, Unified Process (UP) – Each emphasizes different Agile aspects.

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

When to Use Agile:


 Evolving or unclear requirements
 Need for quick delivery
 Active customer participation
 Flexible time and budget
 Skilled development team

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.

Component-Based Software Engineering (CBSE)


Definition:
CBSE is a software development method where reusable components are used to build applications
instead of creating everything from scratch. This improves efficiency and software quality by leveraging pre-
built, reliable components.

Component-Based Development (CBD):


 CBD focuses on selecting and combining reusable components to create a complete software
system.
 It works alongside domain engineering, which designs the system's architecture.

CBSE Framework Activities:


1. Component Qualification – Select the right components based on system design.
2. Component Adaptation – Modify components if needed to fit the system.
3. Component Composition – Combine components to form the complete system.
4. Component Update – Keep components updated as system requirements change.

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.

History of Agile Methodology – Summary


Early Developments (1957-1990s):
 1957: Iterative and incremental methods were introduced for better efficiency.
 1970s: Adaptive Software Development (ASD) and Evolutionary Project Management emerged,
focusing on flexibility.
 1990s: A shift from the rigid Waterfall Model to more flexible approaches:
o 1991: Rapid Application Development (RAD) emphasized quick development and user
feedback.
o 1994: Unified Process (UP) and Dynamic Systems Development Method (DSDM) balanced
flexibility with planning.
o 1995: Scrum introduced short cycles (sprints).
o 1996: Crystal Clear and Extreme Programming (XP) promoted teamwork and continuous
testing.
o 1997: Feature-Driven Development (FDD) built software incrementally, focusing on features.
Birth of Agile (2001):
 2001: The Agile Manifesto was created by 17 developers in Snowbird, Utah, to establish principles
for flexible, customer-focused development.
o Key contributors: Kent Beck, Jeff Sutherland, Ken Schwaber, Jim Highsmith, Alistair Cockburn,
and Robert C. Martin.
Further Advancements:
 2005: Agile Project Management was introduced to enhance teamwork and efficiency.
 2009: The Software Craftsmanship Manifesto focused on professionalism and quality in software
development.
 2011: The Agile Alliance created the Guide to Agile Practices, promoting global knowledge sharing.
Key Takeaways:
 Agile evolved from iterative methods since the 1950s.
 In the 1990s, developers moved toward flexible, lightweight approaches away from Waterfall.
 The Agile Manifesto (2001) solidified agile principles.
 Post-2001, Agile expanded with project management, craftsmanship, and global knowledge sharing.

Traditional vs. Agile Software Development – Summary


Traditional Software Development:
 Approach: Structured, best for simple projects with fixed requirements.
 Features: Step-by-step process, limited customer involvement after initial and final stages.
 Advantages: Well-structured, clear goals, reliable product.
 Disadvantages: Slow, hard to make changes, limited feedback.
 Examples: Office software, security software.
Agile Software Development:
 Approach: Flexible, iterative, suited for complex projects with continuous feedback.
 Features: Small increments, frequent updates, close customer involvement.
 Advantages: Flexible, customer-focused, continuous improvement.
 Disadvantages: Less predictable, risk of scope creep, requires continuous effort.
 Examples: Sky, Philips, JP Morgan Chase.

Common Agile Models:


 Scrum – Short work cycles (sprints) for fast development.
 Extreme Programming (XP) – Focuses on continuous testing and feedback.
 Crystal – Adaptable to different project needs.
 Feature Driven Development (FDD) – Develops software feature by feature.
 Dynamic Systems Development Method (DSDM) – Strict time constraints.
 Adaptive Software Development (ASD) – Adjusts continuously based on changing requirements.
Common Traditional Models:
 Waterfall Model – Each phase must finish before moving to the next.
 V Model – Testing is integrated into every phase.
 Spiral Model – Combines risk analysis with planning.
 Incremental Model – Builds software in small, manageable parts.

Types of Agile Methodologies – Summary


1. Kanban: Visual task management with "To Do," "Doing," and "Done" columns for transparency and
efficiency.
2. Scrum: Sprint-based framework with roles like Scrum Master and Product Owner, focused on
iterative development and prioritization.
3. Extreme Programming (XP): Focused on customer feedback, continuous integration, and practices
like pair programming and test-driven development.
4. Feature-Driven Development (FDD): Software development in two-week iterations with strong
documentation and feature-driven planning.
5. Dynamic Systems Development Method (DSDM): Rapid delivery with incremental development,
focusing on business needs and clear communication.
6. Crystal Methodologies: Customizable frameworks (e.g., Crystal Clear) based on team size, priorities,
and project importance.
7. Lean Development: Emphasizes eliminating waste, optimizing systems, and building quality into
processes.
8. Adaptive Project Framework (APF): Focuses on adaptive planning and iterative cycles to handle
changing project scopes.
Key Takeaways:
 Agile methodologies enhance flexibility, collaboration, and efficiency.
 Choosing the right framework depends on project requirements and team needs.

Agile Manifesto – Summary


1. History:
In 2001, 17 developers created the Agile Manifesto in Snowbird, Utah, responding to challenges in
traditional software development. It shifted focus from rigid methodologies to flexible, adaptive
approaches.
2. Purpose:
Emphasizes individuals, working software, customer collaboration, and adaptability over rigid processes
and documentation.
What is the Agile Manifesto?
 A set of guiding 4 core values and 12 principles for Agile software development.
 Promotes flexibility, collaboration, and customer satisfaction.

3. Core Values:

1. Individuals and interactions over processes and tools.


2. Working software over comprehensive documentation.
3. Customer collaboration over contract negotiation.
4. Responding to change over following a plan.
4. 12 Principles:

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.

Agile Team: Summary


1. What is an Agile Team?
An Agile team is a small, cross-functional group working together to deliver products in short cycles
(iterations), adapting quickly to changing requirements and focusing on continuous improvement using
Agile methods like Scrum, Kanban, XP, and Lean.
2. Key Characteristics:

 Clear Purpose: Everyone understands the project goal.


 Cross-Functional: Team includes various skills (developers, testers, designers).
 Result-Driven: Focus on delivering a working product.
 Effective Communication: Regular stand-ups and open communication.
 Quick Learning & Decision-Making: Adapt and improve continuously.
 Adaptive: Flexible to changing requirements.
 Self-Organizing: Team decides how to work independently.
3. Roles and Responsibilities:

 Product Owner: Defines product vision and manages backlog.


 Scrum Master: Facilitates processes and removes obstacles.
 Development Team: Implements user stories and product increments.
 Stakeholders: Provide feedback and ensure business needs.
 Integrator: Ensures components fit together.
 Independent Tester: Ensures product quality and identifies defects.
4. Agile Team vs. Scrum Team:
An Agile team uses various frameworks (like Scrum) to deliver products, while a Scrum team specifically
follows Scrum practices with defined roles and ceremonies.
5. Common Agile Frameworks:
 Scrum: Sprint-based development with defined roles.
 Kanban: Visual board to manage workload.
 XP: Frequent releases, testing, pair programming.
 Lean: Focuses on eliminating waste.
 Crystal: Customizable based on team and project needs.
 FDD: Focuses on developing software by features.
6. Tips for Building a Strong Agile Team:
 Hire diverse skill sets.
 Encourage open communication.
 Align on a clear goal.
 Allow self-organization and flexibility.
 Continuously improve based on feedback.
7. Advantages:
 Better Communication & Collaboration: Daily stand-ups keep teams connected.
 More Flexibility: Adapts to changes in priorities.
 Faster Delivery: Frequent releases lead to quicker improvements.

Agile Ceremonies: Summary


1. What are Agile Ceremonies?
Agile ceremonies are structured meetings that help teams communicate, collaborate, and stay transparent
about progress. They align the team on goals, track progress, and adjust priorities.
2. The 4 Agile Ceremonies:
 Sprint Planning:
o Purpose: Plan and commit to work for the sprint.
o Attendees: Scrum Master, Product Owner, Development Team.
o Key Actions: Product Owner presents backlog tasks, team estimates effort, sprint backlog is
created.
o When: Beginning of each sprint.
o Duration: 1-2 hours for a 2-week sprint.
 Daily Standup (Daily Scrum):
o Purpose: Keep the team updated and identify any issues.
o Attendees: Scrum Master, Product Owner, Development Team.
o Key Actions: Team members answer three questions: What did I do yesterday? What will I
do today? Any blockers?
o When: Daily, at the same time and place.
o Duration: 15 minutes.
 Sprint Review:
o Purpose: Demonstrate completed work and gather feedback.
o Attendees: Scrum Master, Product Owner, Development Team, Stakeholders.
o Key Actions: Team demonstrates work, stakeholders provide feedback, backlog is updated.
o When: End of the sprint.
o Duration: 1-2 hours for a 2-week sprint.
 Sprint Retrospective:
o Purpose: Reflect on the sprint and identify areas for improvement.
o Attendees: Scrum Master, Product Owner, Development Team.
o Key Actions: Discuss what went well, what didn’t, and decide on improvements.
o When: End of the sprint.
o Duration: 1-2 hours for a 2-week sprint.
3. Common Agile Frameworks & Tools:
 Framework: Scrum is the most popular.
 Tools:
o Product Backlog: List of future tasks.
o Sprint Backlog: Tasks selected for the current sprint.
o Planning Poker: Estimation tool.
o Retrospective Boards: Tracks improvements.
o Review Reports: Sprint progress summary.
4. Best Practices:
 Sprint Planning: Prioritize backlog, timebox meetings, encourage collaboration.
 Daily Standup: Keep it short, focus on blockers.
 Sprint Review: Prepare demos, gather stakeholder feedback, update backlog.
 Sprint Retrospective: Create a safe space, focus on actionable improvements.

Lean Software Development (LSD) Summary


What is LSD?
LSD is an agile approach focused on improving efficiency by eliminating waste and optimizing workflows. It
aims to:
 Ensure quality at every stage.
 Remove unnecessary work.
 Speed up delivery.
 Delay decisions until enough data is available.
Seven Principles of LSD:
1. Eliminate Waste: Remove inefficiencies.
2. Fast Delivery: Release products quickly (MVP).
3. Amplify Learning: Encourage team collaboration.
4. Build Quality In: Use continuous testing and feedback.
5. Respect for People: Empower team members.
6. Delay Commitment: Make decisions when data is available.
7. Optimize the Whole System: Improve the entire process.
How It Works:
1. Identify Value: Prioritize customer needs.
2. Map the Value Stream: Remove waste from the process.
3. Create Flow: Ensure smooth work.
4. Establish Pull: Develop based on real demand.
5. Seek Perfection: Continuously improve.
6. Build Quality In: Test and ensure quality throughout.
7. Empower Teams: Give teams autonomy and resources.
Benefits:
 More efficient.
 Higher quality.
 Faster delivery.
 Better decision-making and collaboration.
Limitations:
 Resistance to change.
 Requires training and leadership.
 Hard to measure waste.
Conclusion:
LSD helps teams work faster and more efficiently by focusing on value and removing waste. However, it
needs strong leadership and continuous improvement for success.
Scrum in Software Development - Summary
What is Scrum?
Scrum is an Agile framework that helps teams manage projects efficiently. It focuses on breaking down big
tasks into smaller, manageable pieces and improving continuously. It was created by Ken Schwaber & Jeff
Sutherland.
Key Features:
 Lightweight Framework: Simple and easy to use.
 Self-Organizing Teams: Teams manage their own work.
 Collaboration & Teamwork: Frequent communication and feedback.
Scrum Lifecycle:
1. Sprint: A time-boxed period (usually 1 month or less) where the team develops a product
increment.
2. Release: When the product is fully developed and ready for delivery.
3. Sprint Review: The team reviews the work done and decides what to carry forward.
4. Sprint Retrospective: The team evaluates what went well and what can be improved.
5. Product Backlog: A list of features and tasks prioritized by the Product Owner.
6. Sprint Backlog: Tasks selected from the Product Backlog for the current Sprint.
Advantages of Scrum:
 Fast & Cost-Efficient: Quick delivery and controlled costs.
 Manageable Tasks: Large projects are broken into small parts.
 Customer Satisfaction: Regular updates ensure the product meets customer needs.
 Highly Adaptive: Changes can be made after each Sprint.
 Improved Quality: Continuous feedback enhances the product.
Disadvantages of Scrum:
 No Mid-Sprint Changes: Changes can’t be made until the next Sprint.
 Not a Complete Model: Needs to be combined with other frameworks for full effectiveness.
 Difficult for Undefined Projects: Hard to manage without clear requirements.
 Resource-Intensive: Frequent meetings and reviews require time.
Conclusion:
Scrum is a powerful tool for improving efficiency and customer satisfaction. However, it requires proper
planning and flexibility for success, especially when handling frequent changes or unclear project
requirements.
Crystal Method in Agile Development - Summary
What is the Crystal Method?
The Crystal Method is a flexible and lightweight Agile framework focused on teamwork, communication,
and adaptability. It’s suitable for small to medium-sized projects and adjusts based on the team size and
project complexity.

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.

FDD Lifecycle – 5 Phases:


1. Build an Overall Model: Understand the project and create a high-level design.
2. Create a Feature List: Identify all the small features needed.
3. Plan by Feature: Prioritize and assign tasks to developers.
4. Design by Feature: Plan and review each feature before coding.
5. Build by Feature: Develop and test features one at a time.
Characteristics:
 Short Iterations: Development happens in small, quick steps.
 Customer-Focused: Clients approve each feature before it’s added.
 Frequent Releases: New features are added regularly.
Advantages:
 Easy Progress Tracking: Regular reporting makes it easy to monitor.
 Great for Large Teams: Works well with big projects.
 Lower Risk: Breaking tasks into features reduces complexity.
 More Accurate Budgeting: Planning features separately helps with cost estimation.
Disadvantages:
 Not for Small Projects: Too structured for small teams or simple tasks.
 High Dependence on Experienced Developers: Requires skilled lead developers.
 Limited Documentation: Can cause issues with record-keeping.
Conclusion:
FDD is best for large, structured projects where continuous feature delivery is needed. It ensures efficient
tracking and progress but may not be suitable for small or simple tasks.
Adaptive Software Development (ASD) - Summary
What is ASD?
ASD is an Agile method designed for complex and changing projects. It focuses on adapting to changes,
team collaboration, and continuous learning. It helps teams adjust quickly without restarting when project
requirements change.
Key Features:
 Iterative Development: Breaks the project into small cycles.
 Risk Management: Identifies and fixes risks early.
 Continuous Testing: Ensures quality at every step.
 Decentralized Control: Teams self-organize.
 Customer Satisfaction: Regular feedback keeps the product aligned with customer needs.
Phases of ASD:

1. Speculation: Planning and goal-setting.


2. Collaboration: Focus on teamwork and communication.
3. Learning: Teams improve after each iteration.
Strengths of ASD:
 Customer Focus: Regular feedback improves quality.
 Continuous Delivery: Releases small, working software regularly.
 Early Problem Detection: Issues are spotted and fixed quickly.
 Strong Teamwork & Learning: Teams improve over time and collaborate effectively.
Weaknesses of ASD:
 Requires Skilled Teams: Needs experienced developers.
 Changing Requirements: Can lead to too many changes (scope creep).
 Customer Availability: Relies on constant feedback from the client.
 Uncertain Outcomes: Hard to predict the final product.
Conclusion:
ASD is ideal for dynamic, complex projects that need flexibility. It boosts quality and teamwork through
continuous learning but requires skilled teams and regular customer involvement. It’s great for fast-
changing projects where adaptability is key.
Test-Driven Development (TDD) - Summary
What is TDD?
TDD is a software development method where you write tests before writing the actual code. It follows a
cycle:
1. Write a test
2. Write minimal code to pass the test
3. Refactor the code to improve structure
TDD Cycle (Red-Green-Refactor):

 Red: Write a failing test for a new feature.


 Green: Write the simplest code to pass the test.
 Refactor: Improve the code without changing its behavior.
Repeat for each new feature.
History of TDD:
TDD was inspired by Extreme Programming (XP) in 1999 and automated the manual testing methods used
by early programmers.
Advantages of TDD:
 Early bug detection
 Better code quality and maintainability
 Faster development over time
 Ensures the code meets requirements
 Acts as documentation for the code
Disadvantages of TDD:
 Requires writing more code (tests and actual code)
 Can create false confidence when tests pass
 High maintenance if requirements change
 Slower at first due to upfront testing
 Needs proper test environments and frameworks
TDD Beyond Software:
TDD concepts also apply in manufacturing, business processes, and service development, where you "test"
before fully implementing changes.
TDD vs. Traditional Testing:
TDD is iterative and proactive, ensuring issues are addressed early, while traditional testing often comes
after development.
Two Approaches to TDD:
 Inside Out: Start with small components, suitable for beginners.
 Outside In: Start with user behavior and business requirements, using mocks, more advanced.
Conclusion:
TDD helps ensure quality and reliable software by writing tests before code. While it takes more time
initially, it leads to better results over time and is widely used in Agile environments.
Kanban – Agile Methodology (Short Summary)
What is Kanban?
Kanban is a visual workflow system used in Agile to manage tasks, limit work-in-progress (WIP), and
improve efficiency for continuous delivery.
When to Use Kanban?
 Best for: Changing priorities, continuous work (e.g., support, bug fixes), and frequent releases.
 Not ideal for: Long, research-heavy tasks or projects with unclear scope.
Kanban Board:

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:

1. Planning: Collect user stories.


2. Design: Focus on essential design.
3. Coding: Pair programming & TDD.
4. Testing: Automated and customer-driven testing.
5. Listening: Regular customer feedback.
XP Values:
 Communication: Open discussions.
 Simplicity: Avoid complexity.
 Feedback: Continuous feedback.
 Courage & Respect: Encourage risk-taking and value everyone’s input.
Advantages of XP:
 Timely delivery with flexibility.
 Continuous customer involvement.
 Better team morale and efficient bug fixing.
Conclusion:
XP is best for dynamic projects requiring frequent updates, customer involvement, and high-quality
software. It emphasizes collaboration, simplicity, and continuous improvement.
📈 Agile Estimation & Project Management
Agile Estimation and Project Management help teams plan, track, and deliver software efficiently using
real-time data and adaptive planning. Here are its key components:

📊 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.

✅ Track Done Pattern


 What it means: A shared definition of what it means for a task or user story to be “Done”.
 Why it matters:
o Prevents misunderstandings about completion.
o Ensures that incomplete work isn’t mistakenly considered finished.
 Typical "Done" Checklist:
o Code written and reviewed (e.g., pair programming).
o Unit tests written and passed (TDD).
o Acceptance criteria met.
o Code integrated and deployed to test environment.
o Documentation updated (if needed).

🔮 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

Unit Testing Tests individual components/functions for correctness.

Integration Testing Ensures different modules/services work together.

Regression Testing Verifies that new changes don’t break existing functionality.

Performance Testing Checks system behavior under load (speed, scalability, etc.).

⚠️Challenges in DevOps Tool Selection & Implementation


🛠 Tool Selection Challenges:
1. Overabundance of tools:
o Too many options like Jenkins, GitLab, CircleCI, etc.
o Difficult to find tools that integrate well together.
2. Team skill mismatch:
o Tools must align with the team’s expertise (e.g., YAML configs, scripting, cloud-native skills).
3. Legacy system compatibility:
o Some tools don’t support old software stacks.
🔧 Implementation Challenges:

Challenge Explanation

Cultural
DevOps needs cross-functional teamwork; traditional siloed teams resist change.
Resistance

Skill Gap Requires knowledge of automation, cloud, CI/CD, security practices.

Legacy Systems Hard to automate or containerize outdated architectures.

DevOps pipelines can be vulnerable if security isn’t embedded into development


Security
(DevSecOps).

📌 Mapping Applications to DevOps – Assessment Steps


Before applying DevOps practices, evaluate the software and environment:
1. Architecture Type:
o Monolithic: Harder to adopt DevOps fully; may need refactoring.
o Microservices: Suits DevOps with independent deployments and scaling.
2. Automation Feasibility:
o Check how easily you can automate builds, tests, deployments, and infrastructure.
3. Dependency Mapping:
o Identify inter-module and external dependencies.
o Helps plan integration and testing strategies.
4. Define Goals:
o Clearly state what you expect from DevOps:
 Faster releases?
 Better quality?
 Increased scalability?

🔧 1. Version Control Tools


✅ Git
 Purpose: Distributed version control system to track changes in code.
 Key Features:
o Local commits (offline work possible)
o Branching and merging for parallel development
o Fast and lightweight
 Usage in DevOps:
o Helps maintain code history.
o Enables collaboration and rollback of changes.
✅ GitHub / GitLab
 Purpose: Web-based Git repositories with additional features.
 Key Features:
o Pull Requests / Merge Requests for code reviews.
o Built-in CI/CD (especially in GitLab).
o Issue tracking, project boards.
 DevOps Role:
o Acts as a central repository and collaboration hub.
o Triggers CI/CD pipelines automatically.

⚙️2. CI/CD (Continuous Integration / Continuous Deployment) Tools


✅ Jenkins
 Purpose: Automates the building, testing, and deploying of software.
 Key Features:
o Open-source and highly extensible with plugins.
o Can integrate with Git, Docker, Maven, Kubernetes, etc.
o Pipelines as Code using Jenkinsfile.
 Usage:
o Automatically tests and builds new code.
o Notifies team of build success/failure.

📦 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.

⚙️5. Orchestration Tools


✅ Kubernetes
 Purpose: Manages containerized applications across a cluster of machines.
 Key Features:
o Self-healing (auto-restarts crashed containers).
o Load balancing, scaling, service discovery.
o Declarative configuration using YAML.
 DevOps Role:
o Runs Docker containers in production.
o Manages complex applications across many nodes.

🧪 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.

📊 7. Monitoring & Logging Tools


✅ Prometheus
 Purpose: Time-series monitoring system.
 Key Features:
o Pull-based metrics collection.
o Powerful query language (PromQL).
o Alerting system integrated.
 Use in DevOps:
o Monitors system health and resource usage.

🧾 User Stories – Specification and Formats


✅ What is a User Story?
A User Story is a short, simple description of a feature told from the perspective of the person who desires
the new capability — usually a user or customer of the system.
It is a core artifact in Agile Requirements Engineering, used to capture requirements in an informal,
conversational way.

✍️User Story Format


“As a [role], I want [goal], so that [benefit].”
This format ensures the story is user-centered, goal-oriented, and value-driven.
🧩 Example:
As a student, I want to upload my assignment, so that I can get it reviewed by my teacher.
🧩 Another Example:
As an admin, I want to generate user reports, so that I can analyze platform usage.

🎯 Why use this format?


 Encourages empathy with the user.
 Keeps focus on what is needed and why — not just technical details.
 Helps in prioritization and acceptance testing.

✅ INVEST Criteria for Good User Stories


The INVEST acronym, proposed by Bill Wake, is used to evaluate the quality of a User Story.

Letter Stands for Meaning

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

🧾 User Story Card Components (for physical/digital boards)


 Title (brief description)
 User Story text (in “As a... I want... so that...” format)
 Acceptance Criteria (when is it done?)
 Priority / Story Points
 Dependencies (if any)

📝 Summary

Term Description

User Story A short statement describing what the user wants and why

Format As a [role], I want [goal], so that [benefit]

INVEST Qualities of a good story: Independent, Negotiable, Valuable, Estimable, Small, Testable

Purpose Makes requirements easy to understand, prioritize, and deliver iteratively

Unit Testing — Summary


Unit Testing checks individual pieces of code (functions, methods) to make sure they work correctly on
their own.
Why Unit Test?
 Find bugs early
 Ensure code works as expected
 Make future changes safer
 Improve code design and documentation
Key Points
 Tests are small, isolated, fast, and automated
 Essential in Agile and DevOps (e.g., in Test-Driven Development and CI pipelines)
 Helps maintain code quality with frequent changes
How it Works
1. Write a test for a function’s expected behavior
2. Run test (initially fails)
3. Write code to pass the test
4. Refactor while keeping tests passing
Tools Examples
 Java: JUnit
 Python: pytest
 JavaScript: Jest
Benefits
 Early bug detection
 Easier debugging
 Supports fast, safe development
 Serves as documentation
Challenges
 Needs time and skill to write good tests
 Hard to test some code types (e.g., UI)

🧪 Types of Testing in Agile (Detailed)


1. Functionality Testing
 Purpose:
To ensure that every feature of the software behaves according to the requirements and
specifications. It verifies that the application performs the intended tasks correctly.
 What it checks:
o Business logic correctness
o Data input and output validation
o Integration between different modules/features
o Workflow and process adherence
 Approach in Agile:
o Done continuously with each sprint.
o Automated functional tests (e.g., using tools like Selenium, Cucumber).
o Manual exploratory testing may be done for new or complex features.
 Example:
For an e-commerce app, verifying the “Add to Cart” button actually adds the selected item to the
user’s cart.

2. UI Testing (User Interface Testing)


 Purpose:
To check that the user interface meets design and usability standards. This includes layout,
responsiveness, and user experience across different devices and browsers.
 What it checks:
o Visual consistency (fonts, colors, spacing)
o Responsive design on mobiles, tablets, desktops
o Navigation and usability flows
o Element alignment and behavior (buttons, menus, forms)
 Approach in Agile:
o UI testing is automated where possible, e.g., with Selenium WebDriver or Cypress.
o Manual testing for usability, accessibility, and visual verification by UX testers.
o Frequent testing after UI changes to avoid regression issues.
 Example:
Checking that a modal popup appears correctly when a user clicks a “Help” button, and works
properly on both mobile and desktop browsers.

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

Testing Type Purpose Agile Approach Example

Automated + manual testing "Add to Cart" feature


Functionality Verify features work as expected
per sprint verification

Verify UI layout, responsiveness, Automated UI tests + manual Modal popup displays


UI
usability UX checks correctly

Performance Check speed, load capacity, Automated load/stress tests Handle 1000 simultaneous
Testing Type Purpose Agile Approach Example

stability users

Detect vulnerabilities and protect Automated scans + Prevent unauthorized data


Security
data penetration testing access

🧠 Institutional Knowledge Evolution Cycle


This cycle represents how knowledge is systematically developed, refined, and used within an organization
to improve performance and innovation.

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.

You might also like