CIS 3500
Introduction to
Software Engineering or
"how to JOYFULLY BUILD
with a TEAM"
Prof. Jérémie Lumbroso, Ph.D.
lumbroso@seas.upenn.edu

⚠️➡️ RIGHT NOW, go to https://sli.do
Code #27232327
LECTURE 6:
Agile & User Stories—Evolving Requirements Iteratively

Sli.do Requires An Email

⚠️➡️ RIGHT NOW, go to https://sli.do
Code #27232327

1
2
3
4
5
6
7
8
9
10
Please enter the table number you are sitting at?

⚠️➡️ RIGHT NOW, go to https://sli.do
Code #27232327
Recap of Lecture 1 (Bridge)
Waterfall Fiasco → Agile “Rescue”
- Healthcare.gov meltdown: Big-bang release, shifting requirements, no iteration.
- “Tech Surge” used daily stand-ups, frequent fixes: a small taste of Agile in action.
- Waterfall historically works well for stable, mass-production contexts (Fordism). Modern software changes too fast.
Agenda
-
Agile Mindset & Overview
- From Lean/Toyota → Agile Manifesto
- Roles in Agile (brief mention)
-
User Stories & Backlogs
- Epics vs. Stories
- Acceptance Criteria & Tests
- Hands-On Group Task: Writing/refining user stories, using ChatGPT
- Q&A / Wrap-Up
Paper Airplane Challenge
Practicing being a team
Paper Airplane Challenge
“You Have 7 Minutes… Go!”
-
We’re starting with a quick, hands-on challenge to see how you work together under pressure.
-
The details are on the next slides. Ready yourselves—when time starts, you’re on your own.
-
Be Prepared To Form Teams



The Mission & Setup
Mission:
In 7 minutes, produce the highest possible number of paper airplanes that meet our basic quality requirements.
Groups: ~4-6 students per team
Time: 7 minutes total
-
Form teams quickly—move to sit together or turn your chairs around so you can collaborate.
-
Your job: make as many acceptable planes as possible before time runs out.
Acceptance Criteria
-
Must-Fly Distance: Plane must fly at least 2 meters
-
Must-Have: Your team’s name or logo clearly visible
-
We’ll do a quick flight test at the end. If it doesn’t reach 2 meters, it doesn’t count.
-
If it’s not marked with your team’s name or logo, it doesn’t count.
-
Everything else (design, folding technique, decoration) is completely up to you.
JUDGING (2 mins)
- One judge from
- Table 1 -> goes to Table 10
- Table 2 -> Table 1
- Table 3 -> Table 2
- ...
- Table 10 -> Table 9
- Judge must count valid planes
- Judge must submit count on Sli.do
- Judge will give count when called
Results
- Team 1: 30 (6 people)
- Team 2: 28 (6 people)
- Team 3: 38 (5 people)
- Team 5: 43 (6.5 people)
- Team 6: 18 (5 people)
- Team 7: 38 (5 people)
- Team 8: 26 (4 people)
- Team 9: 34 (3 people)
- Team 10: 16 (5 people)
No Roles, No Process
Rules for Round 1:
-
No assigned roles (no designated leader, tester, or anything else).
-
No sprints or timeboxes. Just do whatever you want.
-
7 minutes total.
-
“You don’t have a ‘Scrum Master,’ there’s no mandatory planning—just get to work.”
-
“You can coordinate however you like (or not). We won’t intervene.”
Ready, Set… Go!
What are we trying
... to solve?

"This is How IT Projects Really Work" posted via Dashi Blog on February 22nd, 2004


From:
From The Oregon Experiment (1975)
A Few “Agile”
Definitions
Before we get started
“Agile”: Where it fits in with other product management methods?
- Agile is a kind of iterative approach for building software in short cycles.
- Scrum is a kind of Agile framework with sprints and specific roles.
- Kanban is a kind of Agile method focusing on continuous flow and WIP limits.
- Lean is a kind of production philosophy (originating with Toyota) emphasizing minimal waste and rapid feedback—foundational to Agile thinking.

User Stories & Related Terms
-
Product Backlog is a kind of prioritized list of everything the team might build (features, bugs, etc.).
-
Epic is a kind of large requirement—often split into multiple stories.
-
User Story is a kind of small, user-focused requirement typically completed in one sprint.
-
Task is a kind of technical sub-step that helps implement part of a user story.
-
Task is a kind of technical sub-step that helps implement part of a user story.
-
User Story is a kind of small, user-focused requirement typically completed in one sprint.
-
Epic is a kind of large requirement—often split into multiple stories.
- Acceptance Criteria is a kind of ‘definition of done’—specific conditions a user story must satisfy.
- Acceptance Test is a kind of test verifying each acceptance criterion is met (often written as “Given–When–Then”).
Agile
What everyone uses in software
Agile Manifesto (Historical Context)
We are uncovering better ways of developing software by doing it and helping others do it.
Published 2001 by 17 developers (incl. Ward Cunningham)
- 4 core values:
- Individuals & Interactions over processes & tools
- Working Software over comprehensive documentation
- Customer Collaboration over contract negotiation
- Responding to Change over following a plan
- 12 supporting principles (short cycles, continuous delivery, reflection & adjustment)


Agile Propagated Fast
The Agile Manifesto website lists nearly 20,000 supporters from 2002 to 2016, when signatures stopped being accepted.

via Rebecca Koeser: https://us-rse.org/blog/2019/rsk/best-practices/
- About half of these include email addresses, mostly commercial (.com). Notably, there are more signatories from various countries than .edu emails.

Agile & the Power of Language
- The shift in language is arguably more important than the practices
- Moving away from command-and-control terms:
- “Resources” → “Team Members”
- “Requirements” → “User Stories”
- “Management Dictates” → “Collaboration” / “Self-Organization”
Why This Matters
- Language shapes mindset and culture
- Encourages empowered teams and continuous learning
- Aligns with core Agile values and principles




Key Features of Agile
- Time Box
- Cross-Functional Team
- A concrete "Thing that is DONE" at the end of each time box
- Not an internal artifact that only the team can
understand - A thing that could be shipped (maybe)
- Not an internal artifact that only the team can
Agile in Practice – Scrum or Kanban
- Scrum: fixed-length sprints (often 2 weeks), daily stand-ups, product owner roles.
- Kanban: continuous flow, WIP (work in progress) limits, pull-based.
- Either approach uses small increments + continuous user feedback.
(Optional) Show a quick Scrum board or Kanban board image.
User Stories
The Heart of Agile Requirements
“As a [user], I want [goal], so that [benefit].”
- Shifts focus from system specs → user goals
- Typically short, 1–2 sentences; capture what value is delivered
- Encourages conversation with stakeholders
- Facilitates exchanges in cross-functional teams



Why Do We Need User Stories?
- User-Centric: Keeps the user’s perspective front and center.
- Negotiable: They’re intentionally not super-detailed. Team + product owner can refine details in conversation.
- Testable: They must have clear acceptance criteria (we’ll see next!).
- Prevent Overengineering: If it’s not a real user need, it usually won’t appear as a user story.
- INVEST is a checklist to ensure well-crafted user stories in Agile.
- Coined by Bill Wake, it helps teams create user stories that are:

Making a Good User Story
Breakdown of INVEST
🔹 I - Independent
- Each story should stand alone.
- Avoid dependencies to allow flexible prioritization and parallel development.
🔹 N - Negotiable
- Stories are not rigid contracts.
- They should be open to discussion and refinement between the team and stakeholders.
🔹 V - Valuable
- Stories must deliver value to the end user.
- If a story doesn’t provide user benefit, reconsider its need.
🔹 E - Estimable
- The team should be able to estimate effort.
- If too vague, break it down or refine requirements.
🔹 S - Small
- Keep stories manageable within a sprint.
- Large stories should be split into smaller, independent ones.
🔹 T - Testable
- Clear acceptance criteria should define when the story is "done."
- If it can’t be tested, it’s not well-defined.
Why INVEST Matters
- Ensures clarity and alignment in Agile teams.
- Improves sprint planning and backlog refinement.
- Helps avoid scope creep and keeps work deliverable.
Sample Good User Story
"As a user, I want to reset my password via email so that I can regain access to my account."
✅ Independent, valuable, and testable.
✅ Can be negotiated (e.g., method of password reset).
✅ Estimable and small enough for a sprint.
User Story
INVEST Quiz
Question 1:
❌ "As a user, I want a dashboard with all possible metrics so that I can track everything about my performance."
🔎 What's wrong?
✅ Better version: "As a user, I want to see my monthly sales metrics on a dashboard so that I can track my performance over time."
Answer:
- Not Small (S): The story is too big and vague. What are "all possible metrics"? It should be broken into smaller, specific stories.
- Not Estimable (E): The team can’t estimate effort without knowing what “everything” means.
- Not Testable (T): No clear acceptance criteria—what defines "done"?
Question 2:
❌ "As a developer, I want to add an API for order processing."
🔎 What's wrong?
✅ Better version: "As a customer, I want my orders to be processed in real-time so that I receive confirmation immediately."
Answer:
- Not Valuable (V): The story is written from a developer's perspective rather than the user's. What value does it provide to the end user?
- Not Testable (T): No criteria to verify success—what should the API be able to do?
Question 3:
❌ "As a user, I want to receive email notifications when something changes in the system."
🔎 What's wrong?
✅ Better version: "As a user, I want to receive an email when my password is changed so that I can be alerted to security risks."
Answer:
- Not Independent (I): What kind of changes trigger notifications? If it depends on another feature being built first, it’s not truly independent.
- Not Testable (T): No way to define when it’s working correctly—what events should trigger the email?
Question 4:
❌ "As a user, I want the search function to be really fast."
🔎 What's wrong?
✅ Better version: "As a user, I want search results to load within 2 seconds so that I can quickly find what I need."
Answer:
- Not Estimable (E): How fast is "really fast"? Without a performance target, it’s impossible to estimate.
- Not Testable (T): No objective way to check if the story is completed.
Question 5:
❌ "As a user, I want to upload documents and share them with my team in multiple formats while integrating with Dropbox, Google Drive, and OneDrive."
🔎 What's wrong?
✅ Better version: "As a user, I want to upload documents so that I can store them securely in the system." (Other features can be separate stories.)
Answer:
- Not Small (S): This story is too large—uploading, sharing, and integrating are separate features.
- Not Independent (I): Integrations depend on third-party APIs, which may delay implementation.
Spec (System/Technical Requirement) | Corresponding User Stories |
---|---|
Spec 1: The system must allow visitors to view health plan options before creating an account. Rationale: To reduce friction for first-time users and encourage plan exploration. |
• Story 1: “As a first-time visitor, I want to browse available health plans without logging in, so that I can see my options before registering.” • Story 2: “As a curious shopper, I want to see plan prices and coverage at a glance, so that I can quickly assess whether enrollment is worth my time.” |
Spec 2: The system must support at least 2,000 concurrent users without significant performance degradation. Rationale: Prevent site crashes under high demand (e.g., open enrollment). |
• Story 3: “As a returning user, I want the site to load within 2 seconds, so that I can quickly update my information during the busy enrollment period.” • (Also ties in to multiple other user stories requiring fast response times under load.) |
Spec 3: The system must comply with HIPAA regulations for protecting personal health information. Rationale: Legal/regulatory compliance. |
• Story 4: “As a user, I want my personal data to remain confidential, so that I feel safe providing accurate health information.” • Story 5: “As a security officer, I need to ensure all user data is encrypted at rest and in transit, so that we remain HIPAA-compliant.” |
Spec 4: The user’s account creation process must incorporate identity verification steps (e.g., multi-factor authentication). | • Story 6: “As a first-time applicant, I want to verify my identity securely, so that I can trust my account is protected and meets regulatory requirements.” • Story 7: “As a user, I want optional two-factor authentication, so that I have extra security if I choose.” |
Spec 5: The system must provide a robust error-handling mechanism, displaying clear user-friendly messages on failure. | • Story 8: “As a user, if something goes wrong when submitting my enrollment, I want to see an error message that explains the next steps, so that I’m not stuck.” • Story 9: “As a customer support rep, I want error logs to be easily traceable, so that I can quickly resolve user issues.” |
Spec 6: The platform must store user plan selections and enrollment details to be retrieved later. | • Story 10: “As an enrolled user, I want to review my chosen health plan details, so that I can verify my coverage anytime.” • Story 11: “As a returning user, I want to pick up where I left off in my application, so that I don’t need to re-enter information.” |
The Product Backlog
- A Product Backlog is a prioritized list of all user stories (and sometimes epics, tasks, bugs) yet to be done.
- Maintained by the Product Owner (or in smaller teams, collectively).
- Always evolving: new stories get added, old ones get refined, priorities get reordered.



Epics vs. Stories vs. Tasks
Breaking Down Requirements
Level | Description | Example |
---|---|---|
Epic | A large user need or objective, spans multiple sprints | “Manage an on-campus food ordering and delivery system” |
Story | A small, specific user requirement that fits in 1 sprint | “As a student, I want to add a meal to my Favorites, so I can reorder quickly” |
Task | Technical or smaller sub-step to implement part of a story | “Create database table ‘Favorites’ with userId, mealId columns” |

MVP




Minecraft is one of the most successful games in the history of game development, especially if you take development cost into consideration.
Minecraft is also one of the most extreme examples of the release-early-and-often mindset. The first public release was made after just 6 days of coding, by one guy ! You couldn’t do much in the first version – it was basically an ugly blocky 3d-landscape where you can dig up blocks and place them elsewhere to build crude structures.








Text
Acceptance Criteria & Acceptance Tests
- Each story has Acceptance Criteria: bullet points that specify conditions of satisfaction.
- Acceptance Tests are testable scenarios verifying the story works as intended.
- Given [precondition], when [action], then [outcome]
- If all acceptance criteria pass, the story is “Done.”
User Story with Acceptance Criteria
User story: “As a student, I want to favorite certain meal choices, so I can reorder them quickly.”
Acceptance Criteria (sample):
- A “Favorite” icon is visible next to each meal.
- Tapping the icon adds meal to my “Favorites.”
- Tapping again removes it.
Non-Functional Requirements & Constraints
- Some requirements don’t fit neatly into user-stories. E.g.:
- Performance: “System must support 2,000 concurrent users.”
- Security/regulatory: “Must log all access for 7 years.”
- Accessibility: “Must be screen-reader friendly.”
- Often stored as separate backlog items or “Enabler” stories.
Example: Healthcare.gov Through an Agile Lens
Could user stories have prevented meltdown?
- “As a first-time visitor, I want to browse plans without logging in, so I can see if this is worthwhile.”
- “As a returning user, I want a quick login, so I can review my saved plan details.”
- Acceptance Criteria would have discovered the forced-login choke point quickly.
- Frequent demos + user feedback would reveal performance issues.
Zoom-in on SCRUM
One implementation of Agile methodology












Revisiting the Paper Airplane Challenge
This time with SCRUM!
Round 2 — Same Challenge, New Process
Key Points:
- Same acceptance criteria (flies ≥2 meters, team name or logo).
- Goal: Build as many acceptable airplanes in 7 minutes.
- But this time: You’ll work with Scrum roles and timeboxes.
Scrum Roles & Timebox
Assign Roles (quickly within the team):
- Scrum Master – Facilitates, keeps everyone on track.
- Quality Control – Checks each plane against acceptance criteria.
- Builders – Everyone else folds or decorates.
Timebox Structure (example):
-
Sprint Planning (1 minute)
- Plan how many planes you’ll aim for, who does what.
-
Building (3–4 minutes)
- Produce airplanes, coordinate with QC, test mid-build if needed.
-
Review & Retrospective (~1–2 minutes)
- Quick flight test, count how many planes meet the criteria.
- Discuss what worked (or didn’t).
JUDGING (2 mins)
- One judge from
- Table 1 -> goes to Table 10
- Table 2 -> Table 1
- Table 3 -> Table 2
- ...
- Table 10 -> Table 9
- Judge must count valid planes
- Judge must submit count on Sli.do
- Judge will give count when called
Post-Round Debrief
Possible Discussion Questions:
- What changed compared to Round 1?
- Did having a Scrum Master or QC role improve coordination or quality?
- How did timeboxing help (or not)?
- Any lessons that map directly to real software projects?
CIS 3500: Lecture 6
By Jérémie Lumbroso