Modeling & Notations
UML and BPMN modeling — diagram types and when to use them, BPMN elements and gateways, sequence diagrams, use cases vs user stories, and modeling notations.
20 questions
JuniorTheoryVery commonName the core elements of the BPMN notation.
Name the core elements of the BPMN notation.
BPMN has four core element categories: Events — moments when something happens (start, intermediate, end); Tasks — the activities performed; Gateways — branching and merging points that route the flow; Flows — connectors that fix element order.
Common mistakes
- ✗Confusing BPMN elements with UML class-diagram parts
- ✗Forgetting gateways as a distinct element category
- ✗Treating flows as meaningless arrows rather than ordered sequence flows
Follow-up questions
- →How does an event differ from a task in BPMN?
- →Why does a process need a gateway rather than just two arrows?
JuniorTheoryVery commonWhat main kinds of diagrams should be present in a system's documentation?
What main kinds of diagrams should be present in a system's documentation?
Common diagrams: business-process (BPMN), sequence (interaction over time), class (structure), ER model (data and relations), component (deployable parts), state machine (object states), and use case (actor goals).
Common mistakes
- ✗Confusing what each diagram shows (structure vs interaction vs data)
- ✗Naming only one diagram type for every purpose
- ✗Mixing up an ER model with a class diagram
Follow-up questions
- →When would you choose a sequence diagram instead of a class diagram?
- →What does a component diagram show that a class diagram does not?
JuniorTheoryVery commonWhat notations do you use when modeling?
What notations do you use when modeling?
The main notations are UML (structure and behaviour — class, sequence, state, use-case), BPMN (business processes — events, tasks, gateways, flows), and doc-as-code markup such as PlantUML, which keeps diagrams as text under version control.
Common mistakes
- ✗Confusing UML (structure/behavior) with BPMN (business processes)
- ✗Not knowing diagrams can be kept as text via doc-as-code
- ✗Treating PlantUML as a drawing tool rather than a markup language
Follow-up questions
- →What is good about the doc-as-code approach for diagrams?
- →For what task would you choose BPMN rather than UML?
JuniorTheoryVery commonWhat is a use case, and what does it consist of?
What is a use case, and what does it consist of?
A use case is a formalized description of how an actor interacts with the system to reach a goal. It names the actor and goal, lists the steps with the system's reactions, and structures them into a main (success) flow plus alternative flows and exceptions, with pre- and post-conditions. It captures the detailed «how» of an interaction, not just the wish.
Common mistakes
- ✗Confusing a use case with a one-line user story or wish
- ✗Omitting alternative flows, exceptions, or pre/post-conditions
- ✗Forgetting to name the actor and the goal
Follow-up questions
- →How does an alternative flow differ from an exception in a use case?
- →Why does a use case need pre-conditions and post-conditions?
JuniorTheoryCommonWhat is the difference between an AS-IS and a TO-BE model, and why draw AS-IS at all?
What is the difference between an AS-IS and a TO-BE model, and why draw AS-IS at all?
AS-IS models the process as it works today; TO-BE models the target after the change. You draw AS-IS to agree on current reality, expose bottlenecks and hidden rules, and set a baseline that grounds the TO-BE in fact, not a guess.
Common mistakes
- ✗Swapping which is current (AS-IS) and which is target (TO-BE)
- ✗Skipping AS-IS and jumping straight to TO-BE, missing real bottlenecks
- ✗Treating AS-IS as a formality rather than a baseline to improve against
Follow-up questions
- →When is it acceptable to skip the AS-IS model?
- →How do you use AS-IS and TO-BE to justify a change to stakeholders?
JuniorTheoryCommonWhich modeling notations exist, and how do you choose between BPMN, UML and DFD for a task?
Which modeling notations exist, and how do you choose between BPMN, UML and DFD for a task?
Common notations are UML (structure and behavior), BPMN (business processes with flow), and DFD — the data-flow diagram for how data moves between stores. Choose by intent: BPMN for a process, UML for software structure, DFD for data movement.
Common mistakes
- ✗Thinking BPMN, UML and DFD are interchangeable rather than purpose-specific
- ✗Choosing a notation by tool or habit instead of by what must be shown
- ✗Not knowing DFD is about data movement, not step sequence
Follow-up questions
- →For what task would you pick DFD rather than BPMN?
- →Can you combine two notations for one system, and how?
JuniorTheoryCommonWhat does a sequence diagram show, and what elements does it consist of?
What does a sequence diagram show, and what elements does it consist of?
A UML sequence diagram shows interaction ordered in time: participants are columns with vertical lifelines, and horizontal arrows are the messages between them, read top to bottom. It captures who calls whom, in what order, including responses and timeouts.
Common mistakes
- ✗Confusing a sequence diagram (interaction over time) with a class diagram (structure)
- ✗Forgetting lifelines and the top-to-bottom time ordering
- ✗Mixing it up with a BPMN process flow
Follow-up questions
- →How do you show a timeout or an alternative response on a sequence diagram?
- →When is a sequence diagram clearer than a text scenario?
MiddleTheoryCommonWhat kinds of gateways exist in BPMN, and what is their semantics?
What kinds of gateways exist in BPMN, and what is their semantics?
BPMN gateways: Exclusive (XOR) — exactly one path is taken; Parallel (AND) — all paths run together; Inclusive (OR) — one or more by condition; Event-based — the first event to occur picks the path; Complex — routing the others cannot express.
Common mistakes
- ✗Swapping exclusive (one path) and parallel (all paths) semantics
- ✗Forgetting the event-based gateway selects by first event
- ✗Confusing inclusive (one or more) with exclusive (exactly one)
Follow-up questions
- →When would you use an inclusive gateway instead of an exclusive one?
- →What happens if a parallel gateway splits the flow but there is no merge?
MiddleTheoryCommonWhat are the four levels of the C4 model, and which of them does an analyst actually draw?
What are the four levels of the C4 model, and which of them does an analyst actually draw?
C4 has four zoom levels: Context (system in its environment), Container (deployable units — apps, services, DBs), Component (blocks inside), and Code (classes). An analyst mostly draws Context and Container; Component and Code are the developers'.
Common mistakes
- ✗Not knowing the four levels are Context, Container, Component, Code
- ✗Thinking the analyst draws the low Code level down to classes
- ✗Treating C4 as UI or code tooling rather than architecture views
Follow-up questions
- →What belongs on a Context diagram versus a Container diagram?
- →Why is the Code level (C4 model) usually skipped in practice?
MiddleTheoryCommonWhat is a DFD, which element types does it use, and what does it show that BPMN does not?
What is a DFD, which element types does it use, and what does it show that BPMN does not?
A DFD (data-flow diagram) models how data moves through a system. Its four elements are external entities, processes, data stores, and data flows. Unlike BPMN's time-ordered control flow, it shows where data originates, is stored, and is used.
Common mistakes
- ✗Thinking a DFD shows timing or step order like BPMN
- ✗Confusing DFD elements with BPMN pools/tasks or UML classes
- ✗Forgetting a DFD centres on data, not control flow
Follow-up questions
- →What is the context diagram (level-0 DFD) and why start there?
- →When would a DFD serve you better than a BPMN process model?
MiddleTheoryCommonWhat are pools, lanes and message flows in BPMN, and when do you need a second pool?
What are pools, lanes and message flows in BPMN, and when do you need a second pool?
A pool is one participant; lanes subdivide it into roles or systems. Message flows (dashed) cross pool boundaries; sequence flows (solid) stay in a pool. A second pool models an independent participant you do not control, like an external partner.
Common mistakes
- ✗Confusing message flows (across pools) with sequence flows (within a pool)
- ✗Treating a lane as a separate process rather than a subdivision of one pool
- ✗Adding a second pool for internal roles instead of using lanes
Follow-up questions
- →Can a sequence flow cross a pool boundary, and why or why not?
- →How do you model a request to an external system that never replies?
MiddleTheoryCommonHow do a use case, user story, and job story differ, and where do you apply each?
How do a use case, user story, and job story differ, and where do you apply each?
A user story is a brief need from the user's view — «As a <role>, I want <goal>, so that <value>» — the what and why. A job story frames it by situation. A use case is the detailed how: actor, goal, steps, alternative flows, exceptions.
Common mistakes
- ✗Treating use case and user story as the same level of detail
- ✗Confusing the job-story «when situation» frame with a plain user story
- ✗Using a use case where a lightweight story fits, or vice versa
Follow-up questions
- →Write a user story for placing an order in the proper template.
- →When would you prefer a job story over a user story?
MiddleTheoryOccasionalWhich event types does BPMN 2.0 define, and what does an interrupting boundary event change?
Which event types does BPMN 2.0 define, and what does an interrupting boundary event change?
By position BPMN 2.0 has start, intermediate, boundary, end events; by trigger each carries message, timer, error, or signal. An interrupting boundary event cancels the activity and routes its token to the exception flow, not a non-interrupting one.
Common mistakes
- ✗Forgetting the position axis (start/intermediate/boundary/end) or the trigger axis
- ✗Thinking an interrupting boundary event leaves the activity running
- ✗Swapping interrupting and non-interrupting behaviour
Follow-up questions
- →When would you choose a non-interrupting boundary event?
- →How does a message start event differ from a timer start event?
MiddleTheoryOccasionalWhat is EPC (event-driven process chain), and how does it differ from BPMN?
What is EPC (event-driven process chain), and how does it differ from BPMN?
EPC — the event-driven process chain — is a notation where functions and events strictly alternate. Branching uses AND, OR, XOR connectors. Versus BPMN it is simpler and event-centric, without pools; BPMN is a richer executable standard.
Common mistakes
- ✗Forgetting EPC's mandatory function-event alternation
- ✗Treating EPC and BPMN as interchangeable synonyms
- ✗Expecting pools or message flows that EPC does not have
Follow-up questions
- →Why must an EPC start and end with an event?
- →When would you still choose EPC over BPMN today?
MiddleTheoryOccasionalWhat is IDEF0, what do the four sides of a block mean (ICOM), and where is it still mandated?
What is IDEF0, what do the four sides of a block mean (ICOM), and where is it still mandated?
IDEF0 is a functional-modeling notation: each block is a function, and arrows attach to its four sides by role — Inputs, Controls, Outputs, Mechanisms, abbreviated ICOM. It is still mandated in Russian state and defence work via GOST standards.
Common mistakes
- ✗Misreading the four ICOM sides as four equal inputs
- ✗Confusing IDEF0 functions with BPMN activities or DB tables
- ✗Not knowing GOST still mandates IDEF0-style function models
Follow-up questions
- →How does an IDEF0 Control differ from an Input?
- →Why does IDEF0 decompose strictly top-down from a context block?
MiddleTheoryOccasionalWhich fragments does a UML sequence diagram support (alt, opt, loop, par), and how do you show an asynchronous call?
Which fragments does a UML sequence diagram support (alt, opt, loop, par), and how do you show an asynchronous call?
Fragments wrap messages: alt (exclusive branches), opt (optional block), loop (repetition), par (parallel). An asynchronous call uses an open, thin arrowhead and does not block; a synchronous one uses a solid filled arrowhead with a return arrow.
Common mistakes
- ✗Mixing up which fragment means branching, option, repetition, or parallelism
- ✗Confusing the open (async) and filled (sync) arrowheads
- ✗Thinking a sequence diagram cannot express branches or loops
Follow-up questions
- →How does opt differ from a single-branch alt?
- →How do you show a self-call on a lifeline?
SeniorTheoryOccasionalAn inclusive gateway split fires two of three branches. How does the converging inclusive gateway know how many tokens to await?
An inclusive gateway split fires two of three branches. How does the converging inclusive gateway know how many tokens to await?
It does not wait for a fixed count. A converging inclusive gateway inspects upstream process state and synchronizes only tokens that can still reach it — firing once none can. When the split fired two of three, the join merges exactly those two.
Common mistakes
- ✗Believing the inclusive join always waits for all incoming branches
- ✗Thinking it uses a fixed token count fixed at design time
- ✗Confusing it with an event-based gateway that fires on the first token
Follow-up questions
- →What deadlock risk appears if the upstream logic is not visible to the join?
- →How does this differ from a parallel (AND) gateway's join?
SeniorTheoryOccasionalWhat is a token in BPMN, and what happens if a parallel split is joined by an exclusive gateway?
What is a token in BPMN, and what happens if a parallel split is joined by an exclusive gateway?
A token is a marker along sequence flows marking a process instance's active state; a parallel split emits one token per branch. An exclusive (XOR) join does not synchronize — it passes each token through, so the flow can complete more than once.
Common mistakes
- ✗Thinking a token is a physical record or the acting user
- ✗Believing an exclusive join synchronizes parallel tokens like a parallel one
- ✗Missing that the flow after an XOR join runs once per token
Follow-up questions
- →How should a parallel split be joined correctly instead?
- →What symptom in a running process reveals this modelling mistake?
MiddleDesignRareOn a UML sequence diagram, model a client calling an external payment service over REST. The call can succeed, time out, or return a business error. On timeout the client must retry up to three times before giving up; on a business error (e.g. insufficient funds) it must not retry but must surface the error to the user. Show how you represent the happy path, the timeout-with-retry behaviour, and the non-retryable error branch, and which sequence-diagram constructs (fragments, arrows) you use for each.
On a UML sequence diagram, model a client calling an external payment service over REST. The call can succeed, time out, or return a business error. On timeout the client must retry up to three times before giving up; on a business error (e.g. insufficient funds) it must not retry but must surface the error to the user. Show how you represent the happy path, the timeout-with-retry behaviour, and the non-retryable error branch, and which sequence-diagram constructs (fragments, arrows) you use for each.
Draw client and service as lifelines with a synchronous call. Wrap retry-on-timeout in a loop bounded to three tries, with an alt inside separating success from timeout. Put the business error in its own alt branch that surfaces it, not looping.
Common mistakes
- ✗Using par (parallel) for retries instead of a bounded loop
- ✗Routing a business error through the retry loop as if retryable
- ✗Trying to express retries and branches as plain text notes
Follow-up questions
- →How would you bound the loop and show a give-up message after three tries?
- →Where would you add a timeout duration or backoff on the diagram?
SeniorDesignRareModel an order-payment step in BPMN 2.0. After the order is placed the process waits for the customer to pay. Payment may arrive at any moment, but if it has not arrived within 15 minutes the order must be cancelled automatically and the customer notified; if payment arrives first, the order proceeds to fulfilment. Only one of the two outcomes may happen — a late payment after cancellation must not be accepted. Which BPMN constructs (events, gateways, flows) do you use, where do you attach them, and how do you guarantee the two outcomes are mutually exclusive?
Model an order-payment step in BPMN 2.0. After the order is placed the process waits for the customer to pay. Payment may arrive at any moment, but if it has not arrived within 15 minutes the order must be cancelled automatically and the customer notified; if payment arrives first, the order proceeds to fulfilment. Only one of the two outcomes may happen — a late payment after cancellation must not be accepted. Which BPMN constructs (events, gateways, flows) do you use, where do you attach them, and how do you guarantee the two outcomes are mutually exclusive?
Model payment as a receive task with an interrupting timer boundary event set to 15 minutes. If it fires, it cancels the task and routes the token to the cancel-and-notify path. Because it is interrupting, the two outcomes stay mutually exclusive.
Common mistakes
- ✗Using a non-interrupting boundary event, letting both outcomes complete
- ✗Assuming a plain gateway can measure elapsed time on its own
- ✗Modelling the timeout as a separate process that never coordinates
Follow-up questions
- →How would an event-based gateway express the same timeout-versus-payment race?
- →Where would you add a compensation step if the payment was already captured?