CMU597: Industry Project - Lecture 11
Sprint 4: Final Build & Integration
Part A: Final Sprint Strategy | Part B: Final Build
James Williams
Birmingham Newman University
jwilliams@staff.newman.ac.uk
3-hour session • 2 parts • 2 team tasks
Session Timeline
Part A: Prioritisation & Final Sprint Strategy (90 minutes)
30 minutes: Lecture on feature prioritization and triage
45 minutes: Task 1 - Plan final sprint
15 minutes: Break
Part B: Final Feature Build (90 minutes)
30 minutes: Integration testing guidance
45 minutes: Task 2 - Build final features and test
15 minutes: Final system validation
Learning Objectives
- Prioritize features under time constraints
- Apply MoSCoW prioritization method
- Make strategic trade-offs between features and stability
- Conduct thorough integration testing
- Identify and fix critical bugs before presentation
- Freeze features at appropriate time
- Complete end-to-end system testing
- Prepare system for final demonstration
The Reality of Final Sprints
Truth: You probably have more ideas than time!
Common Situation:
- 10 features you'd LOVE to build
- 5 days until presentation
- Some bugs still exist
- Documentation needs updates
- Demo needs practice
Key Decision: What gets built vs what gets cut?
MoSCoW Prioritization Method
MoSCoW: Must have, Should have, Could have, Won't have (this time)
Categories:
- Must Have: Critical for MVP, demo fails without it
Example: User login, core booking functionality
- Should Have: Important but not critical, adds significant value
Example: Email notifications, search filters
- Could Have: Nice to have, adds polish
Example: User profile pictures, dark mode
- Won't Have: Explicitly out of scope for now
Example: Mobile app, AI recommendations
How to Prioritize Features
For Each Feature, Ask:
- Does demo work without it?
- Does it significantly improve user value?
- How long will it take?
- > 4 hours → Probably cut it
- How risky is it?
- High risk of bugs → Probably skip
Golden Rule: A polished, working demo of 5 features beats a buggy demo of 10!
Feature Freeze
Feature Freeze: Point where you stop adding new features, only fix bugs.
Why Feature Freeze?
- New features introduce new bugs
- Need time to stabilize system
- Focus on polishing what exists
- Ensure demo readiness
Recommended Timeline:
| 5 days before: |
Build final features |
| 3 days before: |
FEATURE FREEZE - Bug fixes only |
| 2 days before: |
Final testing, demo practice |
| 1 day before: |
Presentation rehearsal |
Bug Triage: Which Bugs to Fix?
Severity Levels:
- Critical (P0): System crashes, demo fails
Fix immediately!
- High (P1): Major features broken, bad user experience
Fix before presentation
- Medium (P2): Minor issues, workarounds exist
Fix if time permits
- Low (P3): Cosmetic issues, typos
Document as "known issues"
Don't chase P3 bugs! Focus on what matters for demo.
Regression Testing
Regression: New code breaks previously working features.
Why It Happens:
- Changed shared code
- Modified database schema
- Updated dependencies
- Merged conflicting branches
Prevention:
- ✓ Run full test suite after changes
- ✓ Manual smoke test of core features
- ✓ Demo walk-through after each merge
- ✓ Keep changes small and isolated
Integration Testing
Integration Testing: Test how components work together (not in isolation).
What to Test:
- Frontend ↔ Backend: Do API calls work?
- Backend ↔ Database: Does data persist correctly?
- Authentication Flow: Login → Protected Routes
- External Services: Payment, email, maps API
- End-to-End User Flows: Complete user journeys
Task 1: Plan Final Sprint
Instructions (Work in your project teams):
- List All Remaining Work (10 min):
- Features not yet built
- Known bugs (categorize by severity)
- Documentation updates needed
- Demo improvements wanted
- Apply MoSCoW (15 min):
- Categorize each item (Must/Should/Could/Won't)
- Estimate time for each item
- Sum total time vs time available
- Create Final Sprint Plan (15 min):
- Select MUST and HIGH PRIORITY items only
- Ensure total < available time
- Assign to team members
- Set feature freeze date
- Document Cuts (5 min):
- List features you're NOT building
- Note them for "Future Work" slide
Time: 45 minutes
Deliverable: Final sprint plan with prioritized tasks and assignments
Break Time
15 Minutes
Take a break. Next: Building final features!
Part B: Final Feature Build
Part B: Final Feature Build
This is it! Last development sprint before presentations.
Today's Goals:
- Implement 1-2 final features OR fix critical bugs
- Run comprehensive integration tests
- Verify demo flow works end-to-end
- Document any remaining issues as "known issues"
- System ready for presentation
End-to-End Testing Checklist
Manual Testing:
- ✓ Complete user registration flow
- ✓ Login with valid and invalid credentials
- ✓ Navigate all main pages/features
- ✓ Create/Read/Update/Delete operations
- ✓ Test form validation (empty fields, invalid data)
- ✓ Test error messages display correctly
- ✓ Logout and verify session cleared
- ✓ Test on multiple browsers (Chrome, Firefox)
- ✓ Test responsive design (mobile, tablet, desktop)
Demo Rehearsal as Testing
Best Test: Run through your actual demo script!
Rehearsal Testing Process:
- Follow Demo Script Exactly:
- Do EXACTLY what you'll do in presentation
- Use same data, same clicks, same flow
- Note Any Issues:
- Features not working as expected
- Slow loading times
- Confusing UI elements
- Fix Critical Issues:
- Anything that would ruin demo
- Repeat Until Smooth:
- Demo should run flawlessly 3 times in a row
Documenting Known Issues
Reality: Every system has bugs. Being transparent shows professionalism.
# Known Issues
## P2 - Medium Priority
### Issue: Search results slow with > 1000 records
**Impact:** Search takes 3-5 seconds with large datasets
**Workaround:** Currently testing with < 100 records
**Future Fix:** Add database indexing and pagination
### Issue: Email notifications occasionally delayed
**Impact:** Booking confirmation emails take 1-2 minutes
**Workaround:** Users can see confirmation on-screen immediately
**Future Fix:** Implement message queue (e.g., Bull, RabbitMQ)
## P3 - Low Priority
### Issue: Dark mode has some contrast issues
**Future Fix:** Comprehensive accessibility audit
Performance Considerations
Quick Performance Checks:
- Page Load Time: Should be < 3 seconds
- Check Chrome DevTools Network tab
- Optimize large images
- API Response Time: Should be < 1 second
- Check browser console network timing
- Add loading spinners if > 1 second
- Database Queries: Avoid N+1 queries
- Use database query logging
- Optimize with indexes if needed
For Demo: If it's slow, add loading indicators so users know it's working!
Final Code Review Checklist
Before Feature Freeze:
- ✓ All console.log() debug statements removed
- ✓ No commented-out code blocks
- ✓ No hardcoded passwords or API keys
- ✓ All TODO comments addressed or documented
- ✓ Code follows team conventions
- ✓ Error messages are user-friendly (not technical stack traces)
- ✓ All tests passing
- ✓ No merge conflicts in main branch
Ensuring Deployment Works
Pre-Presentation Deployment Check:
- Deploy to Production/Staging:
- Don't demo from localhost if possible
- Verifies deployment process works
- Test Deployed Version:
- Environment variables set correctly?
- Database migrations ran?
- All features work in prod?
- Seed Production Data:
- Create realistic demo data
- Test accounts with good passwords (not "password123")
Test URL: Share deployed URL with team, everyone test it!
Task 2: Build Final Features & Test
Instructions (Work in your project teams):
- Implement Priority Items (25 min):
- Work on assigned tasks from sprint plan
- Focus on MUST-HAVE items only
- Commit frequently
- Integration Testing (10 min):
- Test features work together
- Run demo script walk-through
- Note any issues
- Fix Critical Bugs (5 min):
- Address P0/P1 bugs found in testing
- Document Known Issues (5 min):
- Create docs/known-issues.md
- List remaining P2/P3 bugs
Time: 45 minutes
Deliverable: Final features implemented, system tested end-to-end
Lecture 11 Summary
- MoSCoW method helps prioritize features under time constraints
- Feature freeze prevents last-minute instability
- Bug triage focuses effort on critical issues
- Regression testing ensures new code doesn't break old features
- Integration testing validates components work together
- Demo rehearsal is effective end-to-end testing
- Known issues should be documented transparently
- Deploy and test in production environment before presentation
Next Lecture:
Final Presentation Sprint
Practice presentations, assessment criteria, and final preparation
Before Next Lecture (Final Session!)
- Implement Feature Freeze:
- Complete final features TODAY
- After today: bug fixes only!
- Final Testing:
- Run demo 5+ times
- Ensure zero critical bugs
- Test on presentation computer if possible
- Complete Slides:
- Finalize presentation slides
- Get screenshots of working features
- Prepare backup plan (video/screenshots)
- Team Practice:
- Full run-through as team (15 min + Q&A)
- Time each section
- Smooth transitions between speakers
- Prepare for Assessment:
- Review assessment criteria (next lecture)
- Ensure all deliverables ready