1 / 9

๐ŸŽฏ Tutorial: Putting Theory into Practice

Week 2: Agile Development & Requirements Engineering

Today's Mission

Transform your understanding into practical skills through hands-on problem solving. You'll analyze real requirements, design agile processes, and solve distributed team challenges.

๐Ÿง  Learning Approach

Each exercise follows a structured approach to build your critical thinking skills. First, you'll see the problem and some thinking prompts to guide your analysis. Take time to consider your approach before revealing the detailed solution. This method helps you develop the analytical mindset that software engineers use daily.

๐Ÿ’ก Pro Tip

Try to work through each problem mentally before clicking "Show Answer." The struggle to think through problems is where real learning happens!

๐Ÿš Exercise 1: Requirements Analysis

๐Ÿ“‹ The Challenge

"The drone, a quad chopper, will be very useful in search and recovery operations, especially in remote areas or in extreme weather conditions. It will click high-resolution images. It will fly according to a path pre-set by a ground operator, but will be able to avoid obstacles on its own, returning to its original path whenever possible. The drone will also be able to identify various objects and match them to the target it is looking for."

๐Ÿค” Think About This

  • What key information is missing that would be critical for implementation?
  • Which terms are too vague or subjective?
  • What assumptions are made without clarification?
  • How would you test if these requirements are met?
  • What edge cases or failure scenarios aren't addressed?

๐ŸŽฏ Detailed Analysis: Critical Issues Found

1
Vague Performance Metrics: "High-resolution images" - How high? 4K? 8K? What's the minimum acceptable resolution for search operations?
2
Undefined Environmental Limits: "Extreme weather conditions" - What constitutes extreme? Wind speeds? Temperature ranges? Rain intensity?
3
Missing Safety Requirements: What happens if communication is lost? How does it handle "return to home" scenarios?
4
Subjective Object Recognition: "Identify various objects" - Which objects? With what accuracy? What happens with false positives?
5
Obstacle Avoidance Gaps: "Avoid obstacles on its own" - What size obstacles? How close is too close? What if no alternative path exists?
๐Ÿ’ก Key Learning

Good requirements are specific, measurable, achievable, relevant, and time-bound (SMART). This example shows how seemingly clear requirements can hide critical ambiguities that would cause problems during development.

๐Ÿ“ Exercise 2: Writing Proper Requirements

๐ŸŽฏ Your Task

Write specific functional and non-functional requirements for the drone system that address safety and response time concerns. Make them testable and unambiguous.

๐Ÿค” Consider These Aspects

  • How would you categorize safety requirements? (Functional or non-functional?)
  • What specific response times matter in search and rescue?
  • How do you make requirements testable?
  • What are the critical failure scenarios to address?
  • How do you balance technical precision with stakeholder understanding?

โœ… Well-Written Requirements Examples

๐Ÿ”ง Functional Requirements (WHAT the system does)
FR-1: The drone shall capture images with minimum resolution of 3840x2160 pixels (4K) at 30 frames per second during search operations.
FR-2: The drone shall detect obstacles within a 50-meter radius using LIDAR sensors and automatically calculate alternative paths.
FR-3: The drone shall identify human figures in captured images with 95% accuracy using onboard AI processing.
FR-4: The drone shall automatically return to launch point when battery level reaches 25% remaining capacity.
โšก Non-Functional Requirements (HOW WELL it performs)
NFR-1 (Performance): The drone shall respond to obstacle detection within 200 milliseconds to initiate avoidance maneuvers.
NFR-2 (Safety): The drone shall maintain communication with ground control every 5 seconds; if communication fails for 30 seconds, it shall enter emergency return mode.
NFR-3 (Environmental): The drone shall operate in wind speeds up to 35 km/h and temperatures from -10ยฐC to 45ยฐC.
NFR-4 (Reliability): The drone shall complete 95% of assigned search missions without technical failure requiring manual intervention.
๐ŸŽฏ Why These Work Better

Notice how each requirement includes specific, measurable criteria. You can test these: measure response times, count successful identifications, verify operating conditions. This precision eliminates guesswork and enables proper testing.

๐ŸŽ“ Exercise 3: Agile for Student Projects

๐Ÿค” The Scenario

You're starting your final year software engineering project. It's a 6-month endeavor worth 40% of your grade. Your supervisor mentioned you could use "any methodology you want." Why would agile be particularly beneficial for student projects?

๐Ÿ’ญ Think About

  • What unique challenges do student projects face compared to professional projects?
  • How does uncertainty affect student projects?
  • What role does feedback play in academic assessment?
  • How do learning goals differ from business goals?
  • What happens when requirements change during your project?

๐ŸŒŸ Why Agile Transforms Student Projects

๐Ÿ“š Learning-Focused Benefits

Iterative Learning: You discover what you don't know as you build. Traditional planning assumes you know everything upfront - but students are learning as they go! Agile lets you adapt your approach as your understanding deepens.

Frequent Feedback: Regular demos to supervisors and peers catch problems early. Instead of discovering major issues at final presentation, you get course-correction opportunities throughout.

๐ŸŽฏ Practical Student Advantages

Risk Management: Breaking work into 2-week sprints means you always have something working to demonstrate, even if later features aren't complete. This protects your grade!

Motivation Maintenance: Seeing working software every sprint keeps motivation high during long projects. Traditional approach can feel like nothing works until the very end.

Scope Flexibility: When you realize a feature is harder than expected, you can adjust scope while preserving core functionality. Much better than missing deadlines!

๐Ÿ’ผ Professional Preparation

Industry Readiness: Since 95% of companies use agile methods, practicing them in university makes you immediately valuable to employers. It's practical experience, not just theory.

Portfolio Development: Regular iterations mean you have multiple versions to show employers, demonstrating evolution and improvement over time.

๐Ÿ”ง Practical Implementation

Weekly Supervisor Meetings = Sprint Reviews

Peer Study Groups = Daily Standups

Assignment Milestones = Sprint Goals

Learning Journal = Sprint Retrospectives

๐Ÿ‘ฅ Exercise 4: Pair Programming Productivity

๐Ÿคน The Productivity Puzzle

Common sense suggests that two programmers working together would be less productive than two working separately - you're "sharing" one computer, after all. But research shows pair programming productivity can be more than 50% of individual productivity. How is this possible?

๐Ÿงฉ Consider These Factors

  • What types of problems slow down individual programmers?
  • How does code quality affect long-term productivity?
  • What happens when one programmer gets stuck?
  • How do communication and knowledge sharing impact teams?
  • What's the difference between typing speed and thinking speed?

๐Ÿš€ The Four Productivity Multipliers

๐Ÿ› Instant Bug Detection

The "navigator" catches errors as they're typed, preventing bugs that would take hours to debug later. Studies show pair-programmed code has 15% fewer defects.

"Two sets of eyes see what one misses."

๐Ÿง  Continuous Design Review

Partners constantly discuss approach and design decisions, leading to better architecture. This prevents costly refactoring later when design flaws are discovered.

"Design happens in real-time, not as an afterthought."

๐Ÿ“š Knowledge Multiplication

Two programmers bring different experiences and techniques. When one gets stuck, the other often knows a solution or different approach, eliminating research delays.

"Combined knowledge > sum of individual knowledge."

๐ŸŽฏ Focus and Flow

Having a partner prevents distractions (social media, emails) and maintains focus. The social pressure to stay engaged keeps both programmers in productive flow state.

"Accountability creates sustained concentration."
๐Ÿ’ก The Mathematics of Pair Programming

Individual Developer: 100% coding speed, but includes debugging time, research delays, design rework, and distraction time.

Pair Programming: 60% coding speed, but nearly eliminates debugging time, research delays, design rework, and distractions.

Result: Pairs often deliver higher quality code faster than individuals, especially on complex problems.

๐ŸŽ“ Try This in Your Next Assignment

Partner with a classmate for your next coding task. One person types (driver), the other reviews and suggests (navigator). Switch roles every 30 minutes. You'll be amazed at the quality improvement!

โšก Exercise 5: Agile Speed Principles

๐Ÿƒโ€โ™‚๏ธ The Speed Question

How do agile principles actually lead to accelerated development and deployment? It seems counterintuitive - more meetings, frequent changes, short iterations. Where does the speed come from?

โšก Speed Factors to Consider

  • What slows down traditional development the most?
  • How does feedback timing affect overall speed?
  • What's the relationship between risk and speed?
  • How do small increments contribute to faster delivery?
  • Why might "perfect planning" actually slow things down?

๐ŸŽฏ The Five Speed Accelerators

๐Ÿ”„ Elimination of Waste

Traditional Problem: Months spent building features customers don't want, or building them wrong.

Agile Solution: Customer feedback every 2 weeks catches wrong directions immediately. This eliminates the massive waste of building unwanted features.

๐Ÿ“ˆ Parallelized Risk Reduction

Traditional Problem: All risks discovered at the end when it's expensive to fix.

Agile Solution: Small iterations force you to tackle the hardest problems first. Technical risks, integration issues, and user experience problems are discovered and solved incrementally.

๐ŸŽฏ Focused Decision Making

Traditional Problem: Analysis paralysis - trying to make perfect decisions upfront.

Agile Solution: Make good-enough decisions quickly, then adapt based on real data. This eliminates months of debate and speculation.

๐Ÿ”ง Continuous Integration Benefits

Traditional Problem: "Integration hell" - months of debugging when components are combined.

Agile Solution: Integrating constantly means integration issues are caught and fixed immediately when they're small and manageable.

๐Ÿ‘ฅ Team Efficiency

Traditional Problem: Knowledge silos, waiting for approvals, communication delays.

Agile Solution: Cross-functional teams, empowered decision-making, and daily communication eliminate bottlenecks and waiting time.

๐Ÿ’ก The Speed Paradox

Agile appears slower day-to-day (more meetings, more testing, more reviews) but is dramatically faster end-to-end because it eliminates the massive delays caused by building the wrong thing, integrating late, and discovering problems after they're expensive to fix.

๐Ÿ  Exercise 6: Scrum for Homeless Service System

๐ŸŽฏ Design Challenge

Create a product backlog and sprint plan for a Homeless Service System (HSS) that collects data about people who are homeless or at risk. The system needs to track: Gender, Service Category (At Risk/Homeless), Risk Levels, Current Situation, and Reasons for homelessness.

๐Ÿค” Planning Considerations

  • What would be the most valuable feature to deliver first?
  • How would you prioritize user stories for maximum impact?
  • What are the risks and dependencies?
  • How would you structure sprints for a sensitive social service system?
  • What stakeholders need to be involved in planning?

๐Ÿ“Š Product Backlog (Prioritized)

Epic 1: Basic Data Collection

As a service provider, I need to collect basic demographic information so I can understand who needs help.

Priority: HIGH | Story Points: 13
Story 1.1: Record Gender and Basic Contact Information Points: 3
Story 1.2: Categorize Service Requirement (At Risk vs Homeless) Points: 5
Story 1.3: Track Risk Levels for At-Risk Individuals Points: 5
Epic 2: Situation Assessment

As a case worker, I need to understand current living situations so I can provide appropriate services.

Priority: MEDIUM | Story Points: 8
Epic 3: Reporting and Analytics

As a program manager, I need reports on service patterns so I can allocate resources effectively.

Priority: LOW | Story Points: 21

๐Ÿƒโ€โ™‚๏ธ Sprint 1 Plan (2 weeks)

๐Ÿ“‹ Sprint Backlog
Setup basic data entry form
Gender field validation
Service category selection
๐ŸŽฏ Sprint Goal
Enable basic data collection for homeless individuals
๐Ÿ“… Key Events
Sprint Planning: Day 1
Daily Standups: 9 AM
Sprint Review: Day 10
Retrospective: Day 10
๐Ÿ‘ฅ Team Roles
Product Owner: Social Services Director
Scrum Master: Project Lead
Dev Team: 3 developers
๐ŸŽฏ Why This Approach Works

User-Centric: Started with basic data collection because that's the foundation everything else builds on.

Value-Driven: Prioritized features that directly help service providers do their job better.

Risk-Managed: Tackled the core data model first to validate technical approach early.

Stakeholder-Focused: Included social services director as product owner to ensure real-world relevance.

๐ŸŒ Exercise 7: Distributed Scrum Solutions

๐Ÿ  Remote Work Challenge

Your company is moving to remote work but uses Scrum methodology. Management isn't familiar with agile practices. How would you use technology to support distributed Scrum teams, and what problems might you encounter?

๐Ÿค” Technology Needs

  • How do you replicate the "information radiator" effect of physical Scrum boards?
  • What tools support daily standups across time zones?
  • How do you maintain team cohesion and communication?
  • What about pair programming and collaborative work?
  • How do you handle sprint planning and retrospectives remotely?

๐Ÿ› ๏ธ Technology Stack for Distributed Scrum

๐Ÿ“‹ Jira/Azure DevOps

Digital Scrum boards, backlog management, sprint tracking

๐Ÿ’ฌ Slack/Microsoft Teams

Daily standups, quick questions, team communication

๐Ÿ“น Zoom/Google Meet

Sprint planning, retrospectives, pair programming sessions

๐Ÿ”„ GitHub/GitLab

Code collaboration, continuous integration, code reviews

๐Ÿ“ Miro/Mural

Virtual whiteboards for brainstorming and retrospectives

โšก Visual Studio Code Live Share

Real-time collaborative coding and debugging

โš ๏ธ Challenges You'll Face

๐Ÿ• Time Zone Coordination

Problem: Daily standups impossible when team spans 12 time zones.

Solution: Asynchronous standups via Slack with video updates, or multiple regional standups.

๐Ÿค Relationship Building

Problem: Harder to build trust and team cohesion remotely.

Solution: Virtual coffee chats, online team building, overlapping work hours when possible.

๐Ÿ“ก Communication Overhead

Problem: Everything takes longer to communicate and coordinate.

Solution: Over-communicate, use video when possible, document decisions clearly.

๐Ÿ‘€ Visibility and Accountability

Problem: Harder to see when team members are struggling or blocked.

Solution: More frequent check-ins, better sprint tracking, explicit requests for help.

๐ŸŽฏ Success Strategies

Start with Culture: Emphasize trust and communication over surveillance.

Invest in Tools: Good collaboration tools pay for themselves in productivity.

Adapt Ceremonies: Modify Scrum events for remote effectiveness rather than forcing exact replicas.

Measure Outcomes: Focus on delivered value, not hours worked.

๐ŸŽฏ Tutorial Summary

๐Ÿง  What You've Practiced Today

  • Critical Analysis: Identified ambiguities in requirements that would cause real problems
  • Technical Writing: Wrote specific, testable requirements using SMART criteria
  • Strategic Thinking: Understood why agile works for student projects and distributed teams
  • Process Design: Created realistic Scrum implementations for real-world scenarios
  • Problem Solving: Analyzed complex productivity and technology challenges

๐Ÿ“š For Your Assignments

  • Apply SMART criteria to your DRS requirements
  • Use the ambiguity checklist for quality control
  • Structure your Assignment 1 using agile principles
  • Write testable, specific requirements

๐Ÿš€ For Your Career

  • Practice these analytical skills in all group work
  • Use distributed collaboration tools effectively
  • Understand trade-offs in methodology selection
  • Build a portfolio showing agile experience

๐Ÿ”ฎ Next Week Preview

You'll dive deeper into system modeling and design patterns. We'll explore how to create visual representations of your requirements using UML diagrams, and you'll start building the architectural foundation for your DRS project. The requirements analysis skills you practiced today will directly feed into your modeling exercises next week.

๐Ÿ’ก Keep Practicing: Try applying one agile principle to another subject this week. Use sprint planning for a group assignment, or practice pair programming with a study buddy. The best way to internalize these concepts is to use them!