1-day course Use cases Behavioral requirements Hands-on lab
The First 90% Is Easy. It's the Second 90% That Kills You.

One of the oldest observations in software engineering is that designing the first 90% of a system is relatively easy. It's designing the second 90% that's difficult. The hard part is discovering and specifying the alternate, off-nominal, and exception behaviors that distinguish a robust production system from a prototype.

Teams struggle with the second 90% because they skip the off-nominal behavior. Not because it isn't important, but because discovering alternate and exception behavior is hard work - especially when it is done manually. Those missing scenarios often become "Swiss cheese requirements": specifications that appear complete but contain hidden gaps in alternate and exception behavior.

Use Case Editor diagram view screenshot

Skipping off-nominal behavior is one of the primary causes of catastrophic software failures (often called the "Blue Screen of Death"). Pain-Free Use Case Modeling teaches you to discover and specify those behaviors before implementation begins, when missing requirements are still inexpensive to correct.

Pain-Free Use Case Modeling teaches use cases as a requirements discovery technique. The goal is to systematically discover alternate and exception behavior before implementation begins.

Unfortunately, most use case training focuses primarily on use case diagrams rather than on how to write a good use case. The diagram identifies users and their goals, but the real engineering value lies in the use case specification: a concise behavioral narrative that captures nominal, alternate, and exception behavior.

Use Case Editor specification view screenshot

Many teams skip the narrative and jump directly to activity diagrams. That works reasonably well for sunny-day behavior, but activity diagrams quickly become large and cumbersome when rainy-day scenarios are added. A well-written use case specification remains concise by organizing alternate and exception behavior into short, focused sections tied to the basic path.

Compact use case narrative compared with a large activity diagram
What Makes a Good Use Case?

A good use case is a concise behavioral specification that completely describes how a system responds under nominal, alternate, and exception conditions. It keeps the basic path short and readable while organizing off-nominal behavior into focused sections that are easy to review, maintain, and use as the basis for comprehensive behavioral testing.

Use case diagrams should simplify the use case model, not make it harder to structure correctly.

ATM use case diagram showing Authenticate preceding Withdraw Cash and Deposit Cash
UCML - a new metamodel for use cases
UCML lightweight use case metamodel

SysML metamodels (both v1 and v2) focus on use case diagram constructs and do not dive into details of the use case specs. We have developed a new metamodel (Use Case Modeling Language or UCML) that lets you describe use cases in terms of their scenarios, and the steps within each scenario.

What You'll Learn
  • Write concise, complete use case specifications.
  • Apply use cases as a requirements discovery technique.
  • Systematically identify nominal, alternate, and exception behavior.
  • Discover missing behavioral requirements before implementation begins.
  • Avoid "Swiss cheese requirements" by uncovering behavioral gaps early.
  • Derive comprehensive behavioral test scenarios directly from use case specifications.
Course Details
  • Duration: 1 day
  • Price: $995/student
  • Availability: contact Parallel Agile
  • Format: Lecture and Hands-On Lab
  • Tool: no-cost use case specification editor

By the end of the course, you'll know how to write good use cases - not just draw use case diagrams. More importantly, you'll know how to use those specifications to discover missing requirements, improve behavioral test coverage, and reduce the costly surprises that traditionally appear during the second 90% of software development.

Course Outline
Module 1 - What Makes a Good Use Case?
  • Characteristics of a good use case.
  • Basic, alternate, and exception scenarios.
  • Anatomy of a concise narrative use case.
  • Introduction to the structured use case editor.
  • The UCML lightweight metamodel: Use Case has Scenarios; Scenario has Steps.
Module 2 - Use Cases as a Requirements Discovery Technique
  • The second 90% problem.
  • Sunny-day vs. rainy-day behavior.
  • Discovering missing behavioral requirements.
  • Avoiding "Swiss cheese requirements".
  • Catastrophic software failures as symptoms of incomplete behavioral specifications.
Module 3 - Why Not Just Skip to Activity Diagrams?
  • Complete narrative use case vs. equivalent activity diagram.
  • Why activity diagrams become large and cumbersome as rainy-day scenarios are added.
  • How incomplete activity diagrams lead to incomplete design, incomplete code, and incomplete testing.
  • Narrative first, diagrams second.
Module 4 - Use Case Diagrams Should Help You Simplify Your Use Case Model
  • The purpose of use case diagrams: communicate intent and organize the model.
  • Factoring common behavior, such as Authenticate, out of transaction use cases.
  • Reusing common behavior, such as Print Receipt, across related use cases.
  • Why precise semantics on use case diagrams can become counterproductive when they get in the way of good model structure.
Module 5 - Testing and Expanding Use Case Threads
  • Use case threads.
  • Expanding nominal, alternate, and exception paths into behavioral tests.
  • Behavioral test coverage.
  • Finding missing requirements through test design.
  • Traceability from use case specifications to behavioral tests.
Use Case Specification Editor

The course includes hands-on practice with a no-cost structured use case editor that supports diagram editing, specification editing, and a textual view of the resulting use case model.

Use Case Diagram Editor screenshot
Diagram Editor
Use Case Specification Editor screenshot
Specification Editor
Use Case textual view screenshot
Textual View
Hands-On Workshop
  • Use the Use Case Specification Editor.
  • Build a complete use case specification.
  • Identify missing alternate and exception behavior.
  • Review the use case for completeness.
  • Refactor and simplify a small use case model.