Skip to main content
Object Oriented Design, Analysis and Programming

System Sequence Diagrams, Activity Diagrams and UML Foundations

Published: 2026-08-19
Level: postgraduate
Audience: Postgraduate students in Object-Oriented Analysis, Design, and Programming

Prerequisite Knowledge

This lecture builds on the following concepts from earlier lectures. If any feel unfamiliar, review the linked notes before proceeding.

Previously Covered in This Subject

  • Static and Dynamic Views — covered in Lecture 4
  • UML as a Notation System — covered in Lecture 4
  • Use Cases as Collections of Scenarios — covered in Lecture 6
  • System Boundary and Black-Box View — covered in Lecture 6
  • Business Process Analysis — covered in Lecture 2
  • Activity Diagrams — covered in Lecture 2

# System Sequence Diagrams, Activity Diagrams and UML Foundations

7.1 Static and Dynamic Views — Where Requirement Analysis Sits

Requirement analysis sits between the business world and the software world. Its job is to capture what the system must do before you decide how to build it. To do that well you need two complementary pictures of the same system at once — what it is when time is frozen, and what it does as time moves. This section makes that distinction precise and shows why use cases and activity diagrams belong to the dynamic family, how business processes feed requirement discovery, and why the lecture repeats the phrasing deliberately.

7.1.1 The Two Views of Any System

Hook — why do we need two pictures at all? Can a single diagram ever tell you both what boxes exist in a shop and how a sale actually flows from customer arrival to receipt? Try to freeze time and you lose the story; try to tell the story and you lose the structure. Which blind spot would cost you more on an exam — missing a class or missing a message order?

Every software system needs to be understood from two angles at the same time. One angle is a snapshot view: what boxes exist, what their names are, what they contain when time is frozen. The other angle is a flow view: how things happen over time, what message goes where, what step follows what. The first is called a static view. The second is called a dynamic view or interaction view. Static here means time-invariant structure; dynamic means time-ordered behavior where interaction drives change. Modeling is about capturing both, and neither alone is complete.

Think of a building versus its daily life. A floor plan shows walls, rooms, and doors — that is the static view. A daily schedule of who moves through which door, in what order, with which keys — that is the dynamic view. You need the floor plan to know what can be connected, and you need the schedule to know what actually happens.

Intuition + Analogy — snapshot versus movie. Picture a photograph of a cricket pitch versus a short video clip of one over bowled. The photograph (static view) tells you where the stumps, crease, and fielders are placed. The video (dynamic view) tells you who bowled, who called, and when the bails came off. Both show the same pitch, but you cannot infer the video from the photograph alone, and you cannot list all field positions from the video alone. The analogy breaks where software differs from physical life: in software, the same static structure can generate many different dynamic stories (many scenarios), while a photograph of a building maps to one layout. That many-to-one relationship is why we model both families.

Formalize — static versus dynamic, with examples. A static diagram shows structure at one conceptual moment. It answers "what kinds of things exist and how are they related, independent of a particular execution?" The prime example is a class diagram (and during analysis, its cousin the domain model, which is a conceptual class diagram). A class diagram uses boxes for classes, attributes inside, and lines for associations, with no implied time order.

A dynamic diagram — often phrased as interactive — shows how parts act on each other as time moves. It answers "what happens first, what happens next, who talks to whom?" When interaction is present, the diagram is dynamic by nature because change is happening. Examples include:

  • Use case diagrams: even though they look like ellipses and stick figures, they are dynamic because they show an actor (a role with behavior, such as Cashier or Campaign Manager) interacting with the system under discussion to achieve a goal. Interaction implies change over time.
  • System sequence diagrams (SSDs): ordered messages from actor to system as a black box, with vertical order meaning time.
  • Sequence diagrams (design level): ordered messages among internal design objects.
  • Activity diagrams: flow from one activity to the next inside a business process.
  • State diagrams: future behavior of one object across its life.

By contrast, domain models, which are class diagrams used during analysis, are static: they show enduring kinds like Client, Campaign, Sale, Invoice and their associations, frozen in time.

A clean contrast:

Dimension Static view Dynamic view
Core question What things exist and how are they related? What happens, in what order, between whom?
Time Frozen snapshot, no order implied Ordered over time, sequence matters
Canonical diagrams Class diagram, domain model, package diagram Use case, SSD, sequence, activity, state
If you skip it You lose vocabulary and structure You lose story, order, and boundary events
Exam cue "Draw the structure / conceptual classes" "Draw what happens when / the flow for scenario X"

Keeping this distinction helps you pick the right diagram for the question at hand. If the prompt asks "what are the conceptual classes," you draw static. If it asks "what happens when the cashier enters an item," you draw dynamic.

Label note for this lecture: The lecture sometimes labels an interactive diagram to mean dynamic diagram. Treat the terms as synonyms here: any diagram that shows interaction among participants over time is dynamic.

Scope — when each view applies and when it breaks. Assumption for static models: structure is treated as stable over the scenario window you are viewing. That holds for domain modeling of a retail sale, where Sale, SalesLineItem, and Payment are stable kinds across many transactions. What goes wrong if you violate it: if you try to use a static class diagram to validate the order "enterItem before endSale," you will not see the error — structure cannot enforce sequence. Assumption for dynamic models: participants and their lifelines exist throughout the scenario window shown. That holds for an SSD where the Cashier and the single :System lifeline span the whole Process Sale. What goes wrong if you violate it: if you freeze a dynamic story into one snapshot you lose alternative paths (you cannot tell whether [hours <= 40] or [hours > 40] was taken). Use both: static to check vocabulary completeness, dynamic to check story correctness.

Visual intuition: picture two windows onto the same shop. The static window is a table: rows are kinds (Client, Campaign), columns are attributes, cells are associations — no arrows, no time. The dynamic window is a vertical timeline: time flows top to bottom, actors sit on the left, the system sits on the right, solid arrows fly left-to-right as messages. The y-axis is time; the x-axis is "who." Peaks and branches in that timeline mark choices and parallelism; cross-lane hops mark handoffs. One sentence takeaway: static tells you what can be said; dynamic tells you what is said and when.

Pitfalls — what beginners often mix up. 1) Thinking a use case diagram is static because it looks structural (ellipses and lines). It is not — if an actor and the system exchange something that unfolds in sequence, it is dynamic, and examiners check this classification directly. 2) Calling a domain model "dynamic" because it has associations like Campaign Manager Uses Campaign. It is still static — associations are conceptual links, not time-ordered messages. 3) Assuming one view replaces the other. They are complementary: you need a domain model to name what the SSD is talking about, and an SSD to show when each domain concept is created or used. 4) Inventing new static structure inside a dynamic diagram — do not add internal objects to an SSD; the whole system stays as one :System black box at analysis level.

Q: Is a use case diagram a static or a dynamic diagram? How should we classify it when it shows interaction?

A: It is dynamic. Interaction implies change over time. Any diagram where an actor and the system exchange something that unfolds in sequence is dynamic, even if the use case diagram itself looks like ellipses and stick figures. The same logic applies to the system sequence diagram, which is an interaction diagram driven by messages ordered in time. For exam language: if you can ask "what happens next?" about the picture, it is dynamic; if you can only ask "what exists?" it is static. Several students asked variants of this, and the professor answered with the same test — look for time-ordered interaction, not just shape.

System sequence diagrams and, later, sequence diagrams for object design also belong to the dynamic family in full. The point of learning both families is to get complementary pictures of the same system: structure plus behavior. Without the static you name things inconsistently; without the dynamic you miss missing events.

7.1.2 From Business Processes to Use Cases

A business process is a coherent group of tasks that an organization does to achieve a business outcome — for example "sell items in a shop," "admit a student to an academic program," or "buy items at a supermarket." A use case is a textual story of an actor using the system to achieve a user goal that typically mirrors one such process element.

Requirement analysis can start from business processes. Look at the real work the organization does, break it into processes and sub-processes, and turn those into use cases. In that sense each use case relates back to a business process element. You are not inventing software features in the abstract; you are mirroring what people already do to achieve a goal. This outside-in habit — real work first, software second — is the whole point of analysis.

Another path to the same requirements is the activity diagram, which the lecture describes as a business flow diagram. Compare the two lenses side by side:

  • A use case says "who wants what from the system" — actors, goals, preconditions, main success steps, and extensions, mostly in text.
  • An activity diagram says "what task follows what task in the real operation" — activities as rounded rectangles, ordered by arrows, with diamonds for choices and bars for parallel work.

For example, if you look at selling in a shop or admitting a student to an academic program or buying items at a supermarket, the ordered list of tasks is the business process. Capturing those flows gives a second lens on functional requirements, overlapping with use cases but adding explicit order, branching, and parallel work. Redundancy between the two is welcome at this stage because it builds understanding: the use case keeps you honest about goals and stakeholders, the activity diagram keeps you honest about order and handoffs.

Body text bridge: which to start with? In practice teams often sketch a coarse activity flow to see the end-to-end business order, then harvest use cases from it (each coherent flow segment becomes a candidate use case), then detail one use case's scenario in an SSD. The reverse — starting from a use case and sketching its activity — also happens when a single goal's branching is heavy. Neither path is mandatory; what matters is that the two artifacts are cross-checked for consistency.

7.1.3 Pedagogical Note on Granularity and Repetition

The lecture returns several times to the same idea — static versus dynamic — using different phrasing: "snapshot versus over time," "boxes view versus flow view." This repetition is intentional. The first phrasing helps you name the categories. The second helps you remember when each category is useful: snapshot when you want to freeze structure, flow when you want to see what happens next. Keeping both wordings together makes the distinction stick, especially under exam time pressure where a quick label ("is this about structure or story?") chooses the correct diagram family in seconds.

The same granularity care appears in how business processes become use cases: do not invent tiny single-click use cases and do not pack a whole department into one giant use case. The course calibrates to medium granularity suitable for a 30- to 40-minute classroom exercise — that theme recurs in sections 7.3 and 7.4 as the Manage versus Add decision.

Recap + Bridge. Static tells you what exists (class/domain model, frozen snapshot). Dynamic tells you what happens over time (use case, SSD, activity, sequence). You need both because structure without story hides missing events, and story without structure hides inconsistent vocabulary. This split shapes the rest of the lecture: section 7.2 gives you the notation system (UML) that can draw both families, sections 7.3 and 7.4 dive deep into the two most-examined dynamic views (SSDs and activity diagrams), and 7.5 closes the analysis phase with the static bridge to design — the domain model. Carry forward the simple test: if you can ask "what happens next?" it is dynamic; if you can only ask "what is there?" it is static.

Exam note: Material up to the domain model marks the end of the analysis-phase coverage for this block. Practice translating business processes into use cases by working many problem statements — the skill that is checked is choosing the right view, not memorizing wording.

Real-world and domain connection: In retail, banking, and university admission, analysts always start by shadowing the real process (the business flow), then write use cases to freeze each actor's goal, then sketch activity flows to expose hidden branches (for example, "what if the card is rejected?" or "what if the student is already enrolled?"). Teams that skip the flow view often build software that automates the wrong order; teams that skip the snapshot view build software where the same concept has three names. Using both views keeps the business conversation and the technical conversation aligned — domain experts validate the flow (they recognize their work), engineers validate the structure (they see what must be built).

7.2 Unified Modeling Language — A Notation System for Modeling

UML is the shared picture language you will use for every view introduced in 7.1. This section makes precise what UML is, what it is not, which views it covers, how it came to replace older notations in places like database design, and how to get fluent fast enough for exam diagram-creation tasks.

7.2.1 Definition, History and What UML Is Not

Hook — a language that is not for talking to computers. How can a language be essential for building software yet not be a programming language you can compile? What is it for, if you cannot run it?

The Unified Modeling Language (UML) is a language for specifying, visualizing, and constructing the artifacts of a software system. An artifact here means any outcome of development work in information technology: source code, a database design, a model, a diagram, a document. Code itself is an artifact. UML supplies the notation to picture those artifacts so they can be discussed, checked, and then built. That "picture is worth a thousand words" role is why teams show a picture to a domain expert rather than reading code to them.

What UML is not matters as much as what it is.

  • It is not a programming language. You cannot execute a class diagram directly (code generation from models exists in tools, but the diagram itself is not the program). If you write precise symbols, you are specifying intent, not issuing a compiler command.
  • It is not a process that you follow step by step to get an automatic output. It does not tell you to "do step 1, then step 2, then a design emerges." It is a notation system you apply within a process — for example the Unified Process — to model systems with object concepts.
  • It is notation plus semantics, not just pretty shapes. A line means an association with multiplicity and reading direction; an arrow type means sync versus async; a bar means fork versus join. The visual choice carries meaning that a reviewer will check.

History in one line: UML started in 1997 as the unification of competing object modeling notations (Booch, OMT, OOSE), and has gone through many variations and changes since then — UML 1.x and then UML 2.x, where activity diagrams moved from a specialization of state diagrams to full-fledged artifacts. It has become a de facto standard for modeling across industry, which is why the course uses it and why Larman Chapter 6 is the prescribed reading bridging lecture and textbook.

Intuition + Analogy — a script notation versus a screenplay idea. Think of UML like standardized architectural drawing symbols (wall, door, window) rather than like English prose describing a house. Anyone trained to read the symbols can reconstruct the house from the blueprint, regardless of spoken language. Similarly, a teammate who has never seen your shop system can reconstruct the intended structure and flows from your UML — because the symbols have agreed meaning. Where the analogy breaks: architectural symbols describe a physical artifact you can walk through; UML describes both a static structure (what exists) and a dynamic behavior (what happens over time), so one blueprint set contains several diagram families for the same building.

Formalize — what UML covers. UML as a notation family covers at least these views of one system (you draw a different diagram family per view; you do not change the system):

  • Use case view: who interacts with the system and for what goal (use case diagrams + use case text).
  • Static view: what kinds exist — class / domain model, package diagrams.
  • Dynamic view: how behavior unfolds — sequence diagrams, communication diagrams, system sequence diagrams, activity diagrams, state diagrams, interaction overview diagrams.
  • Implementation views: how parts are built and where they run — component view and deployment view.

Each diagram adds one window onto the same subject. That is the design or modeling activity in Larman's sense: pictorially representing what exists so it can be discussed, checked, and then built. The lecture stresses that pictorial representation is the habit to build, not just vocabulary memorization.

Scope — when UML helps and when notation alone is not enough. Assumption: the team shares at least a minimal object vocabulary — "an object has identity, state, and behavior; classes group similar objects." Under that assumption, UML notation communicates cleanly because symbols map to shared concepts. When it breaks: if you have not yet decided what the objects are — what to call Sale versus Payment, where ProductDescription lives versus Item — no notation trick will create clarity. That is the professor's repeated warning carried from 7.1 into here: you can learn the notations in about a day, often within 24 hours, but the harder skill is thinking in objects — choosing what the objects are, how they relate, and how to specify them so a reader can build from the picture. Notation is the easy part; applying it to a real domain to justify choices is the practice that matters. Do not spend lecture revision time copying symbol shapes you already know; spend it deciding, for a new case, "which classes, which associations, which multiplicities?"

Visual intuition: imagine a city from above. The use case view is the tourist map pins (who comes for what). The static view is the zoning map (which building types where, with connections). The dynamic view is the traffic flow animation (which street used when, where queues form). The component/deployment views are the construction-site and logistics maps (which prefabricated parts assembled where, which site hosts which service). One city, many maps — aligned by names.

Pitfalls — surface fluency versus deep fluency. 1) Memorizing arrow styles while avoiding the habit of writing use case text in an essential, UI-free style (who-intent, not "click the dialog box"). Examiners grade intent language, not decorative completeness. 2) Treating UML as a waterfall process — "first draw all diagrams then code." In the Unified Process, UML artifacts are created iteratively to explore and communicate, not to pretend perfection before programming. 3) Expecting tools to teach modeling thought — a tool can check syntax, but only you choose whether ScanBarcode versus EnterItem is the right level of abstraction (see 7.3 for why EnterItem wins). 4) Dismissing hand sketches — quick wall sketches are often where good design is born; formal tool polish comes later.

Recap + Bridge. UML is a standardized notation for specifying, visualizing, and constructing artifacts — not a programming language and not a process. It gives you many views (use case, static, dynamic, component/deployment) onto one system, and has been standard since 1997 across many engineering needs. It replaces older notations in some places precisely because it is rich and extendable. Carry forward the practice habit: notation in a day, object thinking over many cases. The next section uses the dynamic window that UML sequence-diagram notation makes possible at system level — the system sequence diagram — where the whole software is still one :System black box.

Exam note: On assessments you are expected to create your own diagrams from a case text, not just label a given picture. Tool practice between lectures makes that creation speed possible.

7.2.2 Artifacts, Views and How UML Replaces Older Diagrams

Because UML is rich and extendable, it is used even where other notations once ruled. For database design, teams now often use UML class diagrams instead of entity-relationship (ER) diagrams. That shift shows how the same notation system covers different engineering needs — an entity in ER maps to a class in UML, a relationship maps to an association, and attributes remain attributes — but UML adds operations (in design), visibility, and a unified way to talk about behavior nearby.

Through UML you obtain many windows onto one system without redrawing the system itself:

  • Use case view answers scope: which actors, which goals, what is in and out. A use case diagram lists ellipses and actors; the accompanying use case text carries preconditions, success guarantees, and extensions.
  • Component view and deployment view answer build-and-run: how parts are packaged (components, packages) and where they run (nodes, artifacts deployed to nodes).
  • Static view (class / domain model) answers vocabulary: what conceptual classes exist, with which attributes and associations, frozen in time.
  • Dynamic view (sequence, activity, state) answers story: who talks to whom, in what order, under which guards, with which parallel splits.

Each view comes from drawing a different diagram family, not from changing the system. When you draw all of them you are looking at the same subject from several windows. That is the modeling habit industry reviews rely on: teams show a use case view to check scope with domain experts, then a static view to check structure, then dynamic views to check story order, then component and deployment views to check build and run constraints. A missing view is a missing question that a stakeholder would have asked.

Real-world note: The multi-view habit is why a banking review shows a use case view for regulators, an activity view for operations staff, a class view for persistence designers, and a deployment view for infrastructure — same loan system, different questions, same names kept consistent.

7.2.3 Tools and Practice Guidance

The lecture encourages starting right away with a modeling tool and drawing for any system you think about. The specific tools named are:

  • ArgoUML — free, open source, often recommended for beginners because it runs everywhere and checks UML well-formedness.
  • StarUML — lightweight and widely used for quick class and sequence sketching.
  • Visual Paradigm VGO — Visual Paradigm (referred to as VGO in the talk) and IBM Rational Rose — commercial options with broad coverage, history tracking, and team features when available.

Pick any free tool that runs on your machine and start building diagrams. Do not wait for a perfect case study — model the shop where you buy tea, the admission desk, the campaign example from 7.3, the washing-machine cycle from 7.4. The tool is just the pencil; the thinking is the skill.

The only way to gain skill for creation tasks in the assessment is to create. The guidance given is to solve at least five case studies end to end, producing the full set of relevant diagrams for each. By repeatedly applying the notations to varied domains — retail sale, admission, campaign management, washing machine use, book chapter writing — you move from "I know UML symbols" to "I can model a new problem." That is exactly the transition the earlier intuition warned about: notation is cheap (hours), object thinking is built over cases (weeks). A good drill for each case is: (1) list actors and goals, (2) draft a domain model of noun phrases, (3) write one SSD for the main success scenario, (4) sketch one activity diagram with one decision and one swimlane, (5) cross-check names across all artifacts.

Pitfalls in practice. The fastest way to stall is to aim for tool perfection before you have five hand-sketched cases. Start on paper or a whiteboard, photograph the sketch, then tidy in a tool. Examiners do not grade pixel polish; they grade whether your :System is truly a system, your enterItem(itemID, quantity) keeps device independence, your guards are mutually exclusive, and your fork/join bars are matched.

Real-world and domain connection: Visual modeling as communication scales beyond classrooms. In industry, a campaign management team would not email paragraphs to align a client, a manager, and an accountant — they would pin one use case diagram, one SSD for Record Client Payment, and one swimlane activity diagram for Add Campaign → Generate Invoice → Make Payment → Record Payment on the wall and ask each role to validate their lane. The tool chain listed above exists to make that wall sketch maintainable as the system grows.

7.3 System Sequence Diagrams — Events and Operations at the System Boundary

A system sequence diagram is the first place where a written scenario turns into a time-ordered picture of what crosses the system boundary. Get this diagram right and you have named every system-level operation your design must later handle. Get it wrong — by opening the black box too early or by naming a device instead of an intent — and later object design will inherit the confusion. This section makes the black-box stance precise, teaches the small notation completely, drills the naming discipline, and works two recurring classroom cases end to end: the retail Process Sale and a campaign management case study.

7.3.1 Purpose and Why It Is Not the Same as a Sequence Diagram

Hook — the one word that changes the diagram. What does the single word system add to "sequence diagram," and why would dropping it cost you marks even if your arrows look right?

A system sequence diagram (SSD) is not the same thing as a sequence diagram, and the word system in the name matters. Formally, an SSD is a representation of a use case scenario as an ordered interaction, used for requirement analysis only. Its job is to capture the system events and the system operations that respond to them, while the system is still treated as a black box. You are describing what the system must react to, not how internal objects collaborate to do it.

A sequence diagram in the later design phase looks inside the system at objects. An SSD stays outside. There are only two parties in the picture: one or more actors and the single system object. In the analysis space you draw the system as one whole block; in design you decompose that block into many objects that together complete a scenario. That decomposition step is deliberate — later you will allocate each system operation to a controller or domain object — but it comes after analysis.

Key distinctions held side by side:

Dimension SSD (analysis) Sequence diagram (design)
Phase Requirement analysis, before object decomposition Object design
Parties shown Actor(s) plus one system object :System Many design objects (:Register, :Sale, :ProductCatalog, :Payment)
Goal Identify boundary-crossing events and name system operations Design how objects collaborate to fulfill one system operation
What you invent Nothing internal — keep the black box closed New classes, methods, visibility, lifelines
Time meaning Same — top to bottom is time Same — top to bottom is time

The lecture notes that UML itself defines only sequence diagrams. The SSD form discussed here is presented in the textbook by Larman (often cited as LAMAT / Larman) using the same sequence-diagram notation applied at system level. That framing matters for reading the textbook alongside the lecture: when Larman draws an SSD, he is intentionally using UML sequence-diagram symbols but choosing to show only the system as a single lifeline.

Why this matters for grading. An SSD that shows internal objects like :Sale or :Register is no longer an SSD — it is a premature design diagram. Examiners who ask for "an SSD for the main success scenario" will check three things first: (1) only one system lifeline exists, (2) every message originates from an external actor, (3) names are at intent level. Meeting those three already puts you in the passing band.

Scope — when to draw an SSD. Assume you have a written use case scenario (main success plus any significant alternate you intend to illustrate) and a distinct system boundary (for this course, the NextGen POS application or the campaign management system). When it applies: to name system events cleanly and to enumerate the public operations the system must offer. When it does not apply: when you are already deciding which internal object owns enterItem — that belongs to a design sequence diagram. What breaks if you skip it: you move to operation contracts and design with an incomplete or device-tied operation list, and later discover you missed endSale() or misnamed scanBarcode(itemID) so that every design sketch inherits the device choice.

7.3.2 Notation, System Boundary and Time as Order

Notation for an SSD reuses UML sequence-diagram notation, but with a deliberately small subset:

  • A vertical dashed lifeline for each participant: one for the actor (for example :Cashier), one for the system (:System). The lifeline box holds the participant name; the dashed line extends below to show existence over time for the scenario duration.
  • A narrow activation rectangle (activation box, historically called execution specification bar) on a lifeline when that participant is engaged in handling a message. On the system side it sits around the handling of each incoming message; on the actor side it is often shown thinly or omitted in quick sketches.
  • A solid arrow with a label for each message sent from actor to system. The arrow head is filled for synchronous calls (the usual case at this level — the actor waits for the system's immediate response such as display of description and running total). Labels include the operation name and parameters, for example enterItem(itemID, quantity).
  • The colon collection symbol notation for the system object: :System. Writing just System would read as a class (a type). Writing :System or s1:System reads as an object, an instance. Only one system object appears because the whole software is being viewed as one black box interacting with users. In strict UML, :System is an unnamed instance of the system — not a class name — and the underline that older texts showed is no longer required in UML 2, though some slides retain it.

A system boundary is the imagined border around the software. Any message that crosses that border from an actor into the system is a system event. The system's reply is tied to a system operation — the named capability the system offers to handle that event. In the diagram, order from top to bottom is time. One message is shown after another to indicate what happens first, what happens second, and so on. Time is thus implicit in the vertical order; no extra clock symbol is needed — sequence itself carries temporal meaning. A common refinement in textbooks is the UML loop frame (a rectangle labeled loop with guard [more items]) around the repeating enterItem fragment, meaning "repeat while more items remain."

A useful analogy given is the get and post idea from web interaction: an actor issues a request (get/post), the system receives it and runs an operation on itself. The event is the incoming stimulus crossing the boundary; the operation is what the system does because of that stimulus. Another physical image: a file crossing a reception counter — the handover is the event, the clerk's register update is the operation. The diagram shows the handover arrow; the activation box shows the clerk busy.

Visual intuition: lay a ruler vertically beside the diagram. Every horizontal arrow's height on that ruler is its timestamp. Two messages at nearly the same height would be concurrent — SSDs avoid that by showing a single scenario with one thread of actor input at a time. If you rotate the diagram 90 degrees so time flows left to right, you have not changed meaning, but you have violated UML reading convention (top-to-bottom is expected). Keep time vertical and guards in square brackets on loop edges.

Pitfalls — notation slips that examiners mark. 1) Writing System instead of :System and thereby showing a class where an object instance belongs — remember the colon rule: colon means instance, no colon means class. 2) Adding a second system lifeline (for example StoreSystem and InventorySystem) — at this iteration only one system as black box; inter-system SSDs come in a later iteration. 3) Drawing return arrows for every message with decorative data — SSD return values are optional and should name domain returns like description, price, total rather than implementation variables. 4) Forgetting that time is vertical order — reordering makeNewSale after enterItem inverts the story and breaks the use case.

7.3.3 System Events and System Operations — Naming Discipline

Every system event is an external input that stimulates the system and comes from outside the boundary, usually initiated by an actor. The system must have a corresponding system operation that handles it. At this level those operations are described for the whole system. Later in design they will be broken down into many finer methods on many objects that together fulfill the system-level operation.

How to name events and responses so that analysis stays analysis:

  • Keep names simple and at a high level of abstraction — one verb plus a domain noun, not a sentence.
  • Use domain language that domain experts recognize, not technical jargon. enterItem and makePayment are recognizable to a cashier; invokeItemHandler is not.
  • Do not tie the name to a physical device or person. Whether an item is entered by scanning a barcode or by scanning a QR code or by typing is a later design decision. Saying enterItem keeps the design open. Saying scanBarcode would prematurely fix a device choice and force every downstream sketch to assume a scanner exists. The textbook contrast is enterItem(itemID) (better — intent) versus scan(itemID) (worse — mechanism).
  • Keep responses at the same high domain level rather than jumping to internal implementation language. A return like description, price, runningTotal is domain; LineItemDTO is design.
  • Write names as concise business functions, for example makeNewSale, enterItem, endSale, makePayment.
  • Start with a verb (add…, enter…, end…, make…) since these are commands or requests, as the Larman guideline emphasizes.

A quick naming test. Ask: could this name still be correct if the input device changed tomorrow from keyboard to voice? If yes (enterItem), the name is at the right abstraction. If no (scanBarcode), you have embedded a device assumption. If you can replace the name with doThing and lose no business meaning, you have been too abstract — recordSaleLine might be too vague compared with enterItem, which names the interaction a user actually performs.

Exam note carried: When you capture system events in a written answer, writing clear domain names and keeping them consistent across your use case text, your SSD, and your operation list is part of what gets graded. Examiners often compare the three artifacts for name alignment — makeNewSale in the text must be makeNewSale on the arrow, not startSale in one place and newSale in another.

The diagram emphasizes events that cross from actor to system. Responses from system to actor also appear (the domain data returned), but the emphasis is on finding the boundary-crossing events because those define what the system must support. A useful habit: highlight every verb in the main success scenario where the actor does something to the system — each is a candidate system event.

7.3.4 Worked Examples — Point-of-Sale Process Sale and the Campaign Management Exercise

#### Point-of-Sale Process Sale — the running SSD illustration

This is the running illustration used to show how SSD text converts to picture. Only one scenario is drawn at a time, usually the main success path that is used about 90 percent of the time. If an alternate scenario is also frequent or complex (for example credit authorization), you may draw a second diagram for that alternative, but you do not crowd every alternative into one picture.

Setup: Actor is Cashier (primary actor). System is :System — the point-of-sale terminal software as a black box, not NextGenPOS or Register yet. The name :System is deliberately generic to stress the black-box stance.

Worked SSD — Process Sale main success scenario, message by message.

Written narrative paired with the SSD (read top to bottom, same order as arrows):

  1. Customer arrives at checkout with items the customer wishes to purchase. (Trigger — no system message yet; it sets context. A good SSD titles itself "Process Sale — main success scenario" so this step is not confused with a message.)
  1. Cashier starts a new sale.

Message: makeNewSale() from Cashier to :System (first arrow, topmost). System operation: System creates a new Sale instance conceptually (still inside the black box), clears any previous running total, and returns to a ready state. The cashier sees a ready prompt. No line items yet; runningTotal = 0.

  1. Cashier enters an item.

Message: enterItem(itemID, quantity) from Cashier to :System. Parameters: itemID identifies the product (any UPC/EAN/JAN/SKU coding — device-independent), quantity defaults to 1 if not specified but is shown explicitly here for completeness. System operation: System records a SalesLineItem for that ID, looks up price for itemID (price rule lookup), computes lineTotal = price × quantity, and updates runningTotal := runningTotal + lineTotal. System displays item description, price, and runningTotal as a domain-level return (shown as a dashed return arrow or as annotation on the incoming message, depending on tool style). Each enterItem is one crossing event and one system response that both records and computes.

Concrete numbers — first entry: suppose itemID = 101, price = \$12.50, quantity = 2. Then lineTotal = 12.50 × 2 = \$25.00. If prior runningTotal was 0, new runningTotal = 0 + 25.00 = \$25.00. Display shows "VeggieBurger ×2 — \$25.00 — Total \$25.00." Concrete numbers — second entry: itemID = 205, price = \$4.00, quantity = 1. lineTotal = 4.00, new runningTotal = 25.00 + 4.00 = \$29.00. The loop frame [more items] encloses this step, meaning "repeat steps 3–4 until cashier indicates done."

  1. Cashier ends the sale.

Message: endSale() from Cashier to :System. System operation: System finalizes the total, applies tax or discount rules if present, and presents total with taxes (the amount due). No new line items after this until a new sale starts.

  1. Cashier tells the customer the total and the customer pays. The cashier tenders the amount.

Message: makePayment(amount) from Cashier to :System. Parameter amount is cash tendered, for example \$40.00. System operation: System records the Payment, computes change = amount - runningTotal when amount ≥ runningTotal, updates the store account, and returns change and receipt data. Concrete: amount = 40.00, runningTotal = 29.00 + taxes (say 2.90) = 31.90, then change = 40.00 − 31.90 = \$8.10. If amount < total, the extension "insufficient cash, ask for alternate payment" would be a separate alternate-path SSD, not shown here.

Ordering is strictly top to bottom: makeNewSaleenterItem (loop) → endSalemakePayment. Each incoming arrow is a system event crossing the border; each activation box is a system operation of the whole system. The system is never opened into internal objects. Later design sequence diagrams will allocate these four operations to collaborating objects: for example enterItem will become RegisterSaleProductCatalog interactions.

Sense-check: The customer arrived with goods, each enterItem adds a line and bumps the total predictably, and payment closes with change and a receipt. The SSD shows exactly four distinct message types for one clean story — any fifth message inside this scenario would be a sign you are mixing an alternate path into the main success picture.

Common guidance for drawing this SSD that markers check: keep one lifeline for the Cashier and one for :System. Place messages in the same order as the scenario sentences. Keep labels domain-oriented and verb-first. Accompany the picture with the scenario text so a reader can follow either form and cross-check. Apply the simplicity rule reinforced in class: if the message list starts to get long and hard to read, split into two diagrams rather than letting one diagram become dense and messy. This is the professor's most repeated analysis warning — simplicity over completeness in a single picture.

#### Campaign management case study — analysis exercise after SSD introduction

This case appears as a one-page problem statement taken from a software engineering textbook — Opti-Planet Software Engineering Panet (textbook by authors cited as starting with Panet — cited in the talk as available on the internet for further reading). Students are given five minutes in class to identify actors and use cases before discussion, so medium granularity is exercised under time pressure.

Problem context in brief: an organization that runs campaigns for clients. Work includes recording client details, managing campaigns, recording campaign completion, assigning staff to campaign work, and handling payment.

Worked use case sketch — Campaign management (analysis exercise).

Actors and candidate use cases identified in discussion:

  • Actor sketch: Campaign Manager appears in dual role in the discussion. The lecture explains that the same person can be shown as primary actor in some interactions and as secondary / supporting actor in others. The double placement in one sketch is for readability only; it does not mean two different systems or two different people. For this case it is a primary actor when initiating campaign work (creating clients and campaigns), and it supports when recording completion. A Client appears as a secondary actor in the payment flow, and an Accountant (or Accounts Department) appears when Generate Invoice is performed. Not every actor touches every use case — that is expected.
  • Candidate use cases drawn at medium abstraction (not one-liner tiny steps, not huge packed functions):
  • Add Client — record client details (name, contact, address). Creates a Client conceptual object.
  • Add Contact / Manage Contact Details — record or update contact information. Kept separate from Add Client only if contact handling is independently significant; otherwise folded into one Manage Client Details use case — the lecture explicitly allows both groupings and grades for consistent medium granularity, not for a single canonical list.
  • Add Campaign — create a new campaign record for a client. The flow is modeled with guard context [no campaign to add] versus [campaign to add] at a decision point (borrowed into use case thinking from activity guards) — if a client has no campaign to add, the branch skips creation; if there is a campaign to add, the branch creates a Campaign object linked to the Client.
  • Assign Staff to Campaign — allocate staff members to campaign work (system-side assignment). Conceptually creates or links Staff / Assignment objects to the Campaign. Shown from the campaign manager's initiative even when staff execution is elsewhere.
  • Record Completion of Campaign — mark that campaign work is done, capturing completion date and outcome.
  • Generate Invoice — after completion, the accountant role generates an invoice (creates an Invoice object / document).
  • Record Client Payment — campaign manager records payment from the client, closing the billing flow.

Operations like Add, Delete, or Update for the same entity are noted as candidates to fold into a single manage-style use case rather than splitting into many near-identical ellipses. For example, Add Client, Update Client, Delete Client collapse into Manage Client. Subjectivity is expected: different students group slightly differently, and both "one Manage use case" and "two separate Add/Update use cases" can be acceptable if the grouping stays at medium granularity suitable for a 30- to 40-minute classroom exercise. In real industry the problem is larger and supports multiple granularity levels; for this course a medium level is the right calibration.

Diagram notes for the use case diagram of this exercise:

  • Each use case is an ellipse with the actor connected by an association line (solid line, no arrow at this level). System boundary is a rectangle enclosing use cases if shown.
  • A comment note, shown as a folded-corner rectangle (resembling a sticky note with the corner folded), can hold explanatory text. Its notation is that folded-corner shape with text inside, attached by a dashed line to the element it comments on. It is used for readability remarks, for example to note "Campaign Manager shown twice for clarity — same role" — that dashed attachment makes it a comment, not a use case.
  • A fuller specification of each use case — preconditions, success steps, extensions — is written separately as use case text in fully dressed format. The diagram plus that text together form the use case model. Neither alone is the model.

Guard illustration linked to campaign handling choice:

  • When a request to add a campaign arrives, the flow checks a guard such as [campaign to add] versus [no campaign to add]. Only the true branch is taken. Guards are written in square brackets on the decision outgoing edges and must be mutually exclusive so the reader knows which path is taken. This same guard language reappears formally in activity diagrams (7.4), which is intentional — the condition concept is shared.

Sense-check: The five-minute exercise deliberately cannot produce a perfect diagram. What it can produce is a defensible actor list (who initiates which goal) and a use case list at the right altitude (neither "do everything" nor "one ellipse per click"). If you left the room with seven to nine ellipses grouped at that middle level, you captured the case.

7.3.5 Student Questions and Answers

Q: Is the way we use the system clear from the SSD alone, or do we need extra text? How are SSDs coordinated with use case text?

A: An SSD is usually accompanied by a textual description of the same scenario. The text sentences and the ordered messages mirror each other: "customer arrives, cashier starts a new sale, cashier enters items, system shows price and running total, repeat." Either form alone is readable, but together they let a reader cross-check: the picture shows time order at a glance, the text spells out preconditions, stakes, and business intent (who wants accurate fast entry because cash-drawer shortages are deducted from salary). Keep both. For revision, practice translating a paragraph to arrows and back — that round trip catches missed events.

Q: Should we draw one SSD for a full use case with all alternates, or per scenario?

A: One diagram depicts one scenario only. Draw the main success scenario first because it covers most executions (about 90 percent in Process Sale). Include an alternate scenario in a separate diagram only when that alternate is important or frequent enough to deserve its own picture — for example a credit-payment denial or an invalid item ID. This keeps each diagram simple and avoids a reader having to disentangle many interleaved guard conditions in one vertical flow. If an alternate is minor (a one-line exception), write it as an extension in text rather than drawing it.

Q: What is the challenge when doing the campaign case study in limited time? How detailed should use cases be?

A: The challenge is choosing the right abstraction level under time pressure. With only five minutes you cannot expand every tiny click into its own ellipse. Aim for medium granularity: neither huge "manage everything" blocks nor single-line micro steps. Merging small Add or Delete variants into one Manage use case is a typical way to stay at the intended level for a classroom exercise. In industry you could legitimately go finer or coarser depending on scope and audience; in the course a balanced middle is expected and markers accept more than one grouping provided it is justified and consistent across the SSD and operation list. The discipline to carry away: use names the business recognizes, keep events at domain level, and keep any single diagram simple enough to read at a glance.

Recap + Bridge. An SSD captures one scenario's system events (messages that cross the boundary from an actor into the single :System black box) and names the system operations that must exist, using device-independent, domain-level verbs. Notation is intentionally small — two lifelines, solid arrows, activation boxes, vertical time, and an optional loop frame — but the discipline is large: one scenario per diagram, one system, consistency across text, picture, and operation list. With this boundary picture you now have the operation list that 7.5 will later ground in conceptual classes, and you have the story that 7.4 can also show as an activity flow. Keep the simplicity rule: when a diagram grows crowded, split it.

Exam note: When you capture system events in a written answer, writing clear domain names like makeNewSale, enterItem(itemID, quantity), endSale, makePayment(amount) and keeping them identical everywhere is graded. If you invent a device-tied name, you will be asked to justify the premature commitment.

Real-world and domain connection: Retail POS, telecom call-flow diagrams, and campaign management billing all use the same black-box operation-identification habit before any class diagram is drawn. The SSD's operation list seeds three downstream artifacts at once: operation contracts (pre/postconditions on the domain model), the glossary (parameter and return-value definitions such as "receipt layout" with a sample picture), and the design interaction diagrams where one enterItem expands into a collaboration among Register, Sale, ProductCatalog, and ProductDescription. Starting from a correct boundary event list prevents rework in all three.

7.4 Activity Diagrams — Business Process Flow, Branching and Concurrency

If SSDs tell you which boundary events exist for one scenario, activity diagrams tell you how a whole business process moves — its order, its choices, its parallel lanes, and the objects that travel with it. This is the richest dynamic view in the lecture, and the most checked for notation literacy: start, activity, decision, merge, fork, join, guards, swimlanes, and object nodes must each be placed correctly, and guards must be mathematically precise and mutually exclusive.

7.4.1 Definition and Role of Activities and Business Processes

Hook — beyond "what happens next" to "what happens at the same time." An SSD can tell you that enterItem repeats. Can it tell you that two departments could work on two halves of a campaign at the same time and then rendezvous? What notation would make parallel work visible before you hire the second team?

An activity is any operation performed by the system or organization — any task or function the system needs to carry out, named as a short domain phrase such as "enter item," "generate invoice," or "write chapter draft." An activity diagram is the UML replacement for data flow diagrams (DFDs). There is no DFD in UML; you show the flow of inputs and outputs through activities instead. The diagram is very close to a flowchart, but with richer features taken from state charts — notably the bar notation for concurrency and the formal guard language.

Think of it as business process modeling at the flow-of-activities level. You take a business process — any coherent group of tasks that achieves a business outcome such as "buy items," "process a sale," "admit a student," "write a chapter of a book," "dry clothes in a washing machine," or "manage a campaign" — break it into numbered activities, and show how to move from one activity to the next. The output is a controlled flow that says what to do, in what order, and what data or object travels along. That "controlled" word matters: unlike free-form prose, the diagram has executable semantics loosely grounded in Petri nets — tokens flow through the graph, activities fire when tokens arrive, joins wait for all tokens.

Where to use it in the Unified Process vision:

  • In requirement analysis: to represent the real-world business process as it exists or as it is desired — the "as-is" and "to-be" before automation. This is the Business Modeling discipline view.
  • In design: to draw the logic of an algorithm or the flow of an operation when you need precise step order, branching conditions, and parallel work — effectively a flowchart for a method, but with fork/join for concurrency.

In both phases it is a dynamic, behavioral diagram. It captures what the system does as action unfolds, not just what the system contains at rest. You can create one activity diagram per business process, and you can also create one per use case when that clarity helps, but doing both at full depth for a large organization can produce a large number of diagrams, so judgment is needed. In practice many teams start at a high business-process level, keep level-0 diagrams short (five to seven activities), and expand each complex activity in its own sub-diagram using the rake symbol — rather than letting one page become crowded.

Formal distinction — flowchart heritage versus activity richness. Flowcharts gave us start, activity, decision diamond, and end. UML activity diagrams inherit those and add: (1) guard conditions in square brackets on every branching edge, (2) fork/join thick bars for true parallelism (not just choice), (3) partitions (swimlanes) for "who does what," (4) object nodes for "what thing is carried," and (5) signals for time or cancellation events. Those five additions are what make an activity diagram more than a flowchart and why the lecture's recurring phrase is "activity diagram = flowchart plus state chart ideas."

7.4.2 Notational Elements — Start, Activity, Transitions, Objects and Guards

Core elements taught in sequence, each with a precise visual form examiners check:

  • Start node: a solid filled circle. It marks where the flow begins. This is the first symbol on the page, placed top-left or top-center by convention for Western reading. Every activity diagram should have one start (a missing start is a common deduction).
  • Activity node: a rounded rectangle. It denotes performance of an operation. Examples: "enter item," "show running total," "record client payment," "write chapter draft," "add exercises to chapter." Give each activity a meaningful name that summarizes the task in a few words, at a consistent level of abstraction across the diagram. While the activity is running, its internal steps are not expanded — the view stays at functionality level. Once the activity completes successfully, there is an automatic outgoing transition — you do not need an explicit "done" event; completion triggers the arrow.
  • Transition arrow: a directed arrow from one activity to another. The trigger is completion of the source activity. You are not modeling event interrupts at this level; you are modeling normal forward movement once the current task is done. Data flow and control flow both travel along the arrow: inputs arrive, outputs leave, preconditions and postconditions hold at the arrow ends. Think of a file moving from one office desk to the next in a physical workflow — the file is the carried information, the arrow is the corridor.
  • Guard condition: a condition in square brackets, for example \[hours \le 40\] or \[hours > 40\] or \[draft\ satisfactory\] or \[no\ campaign\ to\ add\]. A guard on an outgoing edge means the flow can proceed along that edge only if the condition evaluates to true. Guards on edges leaving the same decision point must be mutually exclusive (no overlap) and complete (every possible value chooses one edge) — exactly one path taken, not both and not none. Guards are how you encode if-else logic inside the activity flow without cluttering the activity names themselves.
  • Decision node: a diamond shape. It marks a branch point where the flow chooses among outgoing edges based on guard evaluations. It corresponds to a conditional choice. The decision diamond itself carries no label beyond perhaps the condition name — the guards on outgoing edges carry the logic.
  • Merge node: also a diamond. It marks where alternative branches rejoin into one flow. In the lecture the combined use is spoken of as decision/merge using the same diamond shape, with guards determining which edge arrives. Keeping merge explicit helps the reader follow alternative histories that meet again. Do not confuse merge with join: merge is "any one incoming history suffices to continue" (OR), join is "all incoming parallel histories must have arrived to continue" (AND).
  • End node: a bullseye — a filled inner circle inside an outer circle. Some teaching sketches show a plain empty circle as an alternate, but the bullseye is the more widely recognized UML end symbol and the one to use on an exam. It marks termination of that flow path. Some flows have multiple ends; some continuous processes omit an end with justification, but for exam diagrams include a bullseye.
  • Object node / object flow: an optional rectangle (often with an underlined name using colon object notation such as new Client : Client) showing an object or document that is created or used as the flow moves. For example, "new client object" after Add Client, or a "new campaign" object after Add Campaign, or a receipt document after Generate Invoice. An arrow from an activity to an object node shows creation; an arrow from an object node into the next activity shows that activity needs that object as input. This piece is optional while you are still identifying objects, but it anticipates the later object-identification phase and shows data flow alongside control flow. In more advanced notation the UML 2 object node may show a «datastore» stereotype for persistent storage.
  • Subactivity state / bigger states (hierarchical decomposition): when an activity itself becomes large, you may show its internal steps as sub-activities inside a larger rounded rectangle, or break the complex diagram into a separate, smaller activity diagram that details that one task. The rake symbol (a small fork-like icon in the corner of an activity) indicates "this activity is expanded in a child diagram." Complex diagrams should be split into a parent plus children (level 0, level 1, level 2) instead of letting one page become crowded — a guideline repeated with SSD simplicity and later with domain model decomposition.

Reading direction is left to right and top to bottom, consistent with flowchart habit. State-chart notation is the source of many of these symbols. In activity-diagram terms, states are treated as activities and transitions are triggered by activity completion rather than by external events.

Guard math — the one formula you must write precisely. The lecture's guard inequality is the only place where a mathematical symbol carries marks, and it is examined for three properties:

A guard condition such as \[hours \le 40\] is a Boolean predicate: for a real-valued variable (number of hours logged, ), the guard is true exactly when the inequality holds; otherwise false. Paired guards on one decision must satisfy:

  • Mutual exclusion: at most one true. For \[hours \le 40\] and \[hours > 40\], no value of satisfies both, because and cannot hold simultaneously (boundary at 40 belongs only to the first).
  • Completeness: at least one true for every admissible . Together, \[hours \le 40\] and \[hours > 40\] cover all with no gap: if the first is false, the second is true by construction.
  • Notation hygiene: square brackets \[...\] are mandatory, the inequality uses \le (not < =), and the variable is spelled once and consistently. Writing \[hours < 40\] and \[hours > 40\] would leave the value uncovered — a completeness failure — and would be marked wrong.

In display form the two complementary guards are:

and

with the reading: take the Do Normal Payroll edge only when \[hours \le 40\]; otherwise take Do Overtime Payroll. The same Boolean discipline applies to non-numeric guards like \[campaign\ to\ add\] versus \[no\ campaign\ to\ add\] — exactly one holds.

Visual intuition: imagine a river with a single source (filled start circle), widening into activity pools (rounded rectangles), then splitting at a diamond weir (decision) whose sluice gates are labeled with guards — water can go only through the open gate — then either reuniting at a second diamond pool (merge) where either stream suffices to fill the onward channel, or truly splitting into parallel canals at a thick dam (fork) where water goes both ways at once and only reunites at a thick collector dam (join) that waits for water from every canal before releasing onward. Object nodes are the barges on the water — created at one pool, carried downstream, consumed at the next. One sentence takeaway: diamonds choose one history (OR), bars run many histories at once (AND).

7.4.3 Decisions, Merges, Forks, Joins and Concurrency

Every activity diagram can show three patterns of control: sequential flow, branched flow, and concurrent flow.

Sequential flow: one activity completes and the next begins. This is the default arrow chain. It models "do A, then do B" where completion of A triggers B.

Branched flow: at a decision diamond the flow examines guard conditions and takes one path. The decision node splits; the merge node reunites. The shape read is decision (split) then merge (meet again).

  • Example given for iteration: writing a chapter is described as an iterative loop. The author writes a draft, evaluates \[review\ satisfactory\]. If not satisfactory, the loop revises the draft again. If satisfactory, the flow exits the loop. The text words this as "if this condition is not satisfied, if you are not satisfied, you will keep on revising this particular thing" and only then proceed. The guard controls whether the loop repeats — a loop is just a decision-plus-merge cycling back.
  • Payroll illustration: hours worked is checked at a decision node. Guard \[hours \le 40\] leads to Do Normal Payroll. Guard \[hours > 40\] leads to Do Overtime Payroll. Both paths later merge. Because guards are mutually exclusive and complete, exactly one of the two payroll actions runs for a given employee; the merge then carries the chosen history to End or to the next step. Writing hours with symbols: guard \[hours \le 40\] and guard \[hours > 40\], where is the number of hours logged, . Precision is numeric at that check — a student who writes \[hours = 40\] as a case loses both mutual exclusion and completeness.
  • Campaign addition guards: \[campaign\ to\ add\] versus \[no\ campaign\ to\ add\] illustrate the same pattern in a requirements setting — a business choice with no arithmetic, still Boolean and still needs mutual exclusion.

Concurrent flow: when tasks can run in parallel, you show that with fork and join.

  • Fork: a thick horizontal or vertical bar (spoken of as a double bar) where one flow divides into two or more flows that proceed at the same time. It spreads control into parallel tracks. Semantically it replicates the flow token onto every outgoing edge.
  • Join: a matching thick bar where parallel flows synchronize and merge back into one flow before the next activity continues. Conceptually no output token emerges until every incoming token has arrived. A join is not a merge — merge fires on any one arrival, join waits for all.

Think of fork as splitting the file into two copies processed by different desks simultaneously, and join as collecting both processed copies before the next step proceeds. That parallel structure is what makes activity diagrams richer than simple flowcharts and is the idea loosely grounded in Petri-net token flow.

You also show repetition where needed — some activities repeat or loop back, sometimes with a merge feeding back to an earlier decision. The lecture stresses control flow, data flow, and guard-controlled branching together rather than picking only one; a mature diagram shows all three where each adds clarity.

Scope — when to branch, when to fork, when to simply sequence. Assumption for decisions: only one guard is true per token visiting the diamond. If you need "do both when eligible for overtime and also when eligible for bonus," do not model that as a decision; model it as a fork (parallel) or as sequential guards where each bonus check is its own decision. Assumption for forks: the parallel branches are independently executable — no hidden data dependency that forces sequence. If testing shows the second branch reads what the first writes, replace the fork/join with sequence. What breaks if you confuse merge with join: using a merge where a join was needed lets the flow continue after only one parallel task completed, silently leaving the other task orphaned; using a join where a merge was needed deadlocks the flow waiting for a token that will never come because only one branch was taken.

Exam note: Being able to name each node type — decision versus merge, fork versus join — and point to which bar is which is part of diagram literacy checks. Knowing that fork splits into parallel and join brings parallel back together is expected; markers often ask "which thick bar is the fork?" and check that your join has one outgoing edge, not two.

7.4.4 Swimlanes and Object Flows

When different people, organizations, or departments carry out different activities within one business process, you make that responsibility visible with swimlanes (also called partitions).

Visual idea: like lanes in a swimming pool. Each lane is a vertical (or for business processes, often horizontal) column labeled with who does the work — for example Campaign Manager, Accountant, Client, or Accounts Department, Admission Department, Welfare Division. Every activity is placed inside the lane of the party responsible for it. Transitions may stay inside one lane when one party does several steps in a row, or they may cross a lane border when the baton passes to another party. Swimlanes add "who" without changing the flow logic — the underlying edges, guards, forks, and object nodes remain the same.

  • Campaign example with lanes: the Campaign Manager records campaign data; when done, the Accountant generates the invoice; the Client makes the payment; finally the Campaign Manager records the client payment. Placing those four activities in three lanes (Campaign Manager | Accountant | Client) makes the handoff visible without extra text — a crossing arrow tells you a different role now acts. If you removed lanes, the order would look identical; you would just lose responsibility assignment.
  • Practice guidance: create lanes whenever a business process touches several places or several roles. If the process stays with one actor, you can skip lanes and keep the diagram flat (no need to add a single lane that contains everything). There is no mandatory rule; use lanes where responsibility handoff adds clarity, omit them where they would clutter. Textbooks suggest fewer than five lanes before splitting into sub-diagrams.

Object flows connect to swimlanes naturally. When an activity creates an object — such as a new client record or a new campaign record as a rectangle node — that object node sits after the creation activity and before the consuming activity. A simple version says: after Add New Client, a new Client object is created; after Add New Campaign, a new Campaign object is created. Shown with lanes, the object may sit in the creator's lane and then be needed in the next lane's activity, emphasizing cross-lane information transfer. Syntax options include a rectangle on the arrow, or an explicit pin (small square on the activity border) labeled with the object type — an input pin on the left or top of the activity, an output pin on the right or bottom, named with the parameter. For exam level, a plain rectangle with new Client : Client on the transition suffices; pins are bonus literacy.

The notes emphasize that showing objects and object flows at this stage is optional. Full object identification comes next. For now the point is to demonstrate that activity diagrams can carry data together with control, and that both can be made precise. A mature activity diagram is judged on whether it shows both when the case hinges on a document: for example, the Invoice must exist before Make Payment can consume it, and that dependency is visible as an object node between them.

7.4.5 Worked Examples — Book Chapter, Washing Machine, and Campaign Management

#### Worked example 1 — Writing a particular chapter of a book (instructional flowchart-like activity diagram)

Setup: Goal is to produce a complete chapter. Steps are tasks within that business process, not software internals — the domain is deliberately non-software to show notation generality.

Worked flow — Book chapter production (iteration until satisfactory).

Flow narrative paired with diagram symbols, top to bottom:

  • Start (filled circle at top-left) → Write Chapter Draft (rounded rectangle). This first activity is at coarse granularity — it hides word-by-word editing inside.
  • Decision diamond evaluating \[chapter\ satisfactory?\] — the diamond follows Write Chapter Draft immediately, implying the decision concerns whether the draft is good enough. Two guard-labeled outgoing edges leave the diamond:
  • Guard \[not\ satisfactory\] loops back to Revise Chapter (rounded rectangle). The lecture words this as "if this condition is not satisfied, if you are not satisfied, you will keep on revising this particular thing." This is the iteration edge — it feeds via a merge back to the decision test, forming a loop. Each circuit produces a new draft version.
  • Guard \[satisfactory\] passes forward out of the loop. This instructional narrative illustrates loops with bracketed guards, and the spelling check for exercises versus excelsis is included so the loop condition is spelled correctly.
  • Once the draft is satisfactory, transition to Add Exercises to Chapter (rounded rectangle). Then transition to Add Diagrams to Chapter (rounded rectangle). These are shown as sequential activities, each named by its summarizing task, at roughly the same abstraction level as the draft step once expanded.

Reading direction is strictly left-to-right and top-to-bottom, so the business judgment — "is the chapter good enough yet" — becomes visually explicit: a diamond with a backward arrow means "keep looping until the exit guard holds."

Concrete walk-through: suppose an author drafts v1 → evaluator says \[not\ satisfactory\] (needs more examples) → revise to v2 → still \[not\ satisfactory\] (needs diagrams) → revise to v3 → now \[satisfactory\] → proceed to exercises and diagrams and then bullseye End.

The lecture flags the spelling nuance "exercises" versus "excelsis" inside this example as a reminder to keep guard and activity names business-meaningful and checked with the domain vocabulary — a guard that misspells the business term looks careless even if the shape is right.

This example is presented as analogous to a recipe. The activity names are simple business phrases. The value of the diagram is to make hidden decision policy — when to keep revising — openly readable rather than buried in prose.

Sense-check: A flowchart-loop story must have both a backward edge (the "again" path) and a forward edge (the "done" path) with complementary guards; if your diagram has only a backward edge, the flow can never terminate, and if it has only a forward edge, it can never repeat — both fail the completeness test.

#### Worked example 2 — Dry clothes with a washing machine (appliance business process)

Setup: Business process name is "Dry Clothes." Activities are appliance tasks, but the focus is still on flow, not on internal mechanics.

Worked flow — Dry clothes (mutually exclusive branching before merge).

Flow shape, paired with symbols:

  • StartWash Clothes (rounded rectangle) → decision diamond checking the drying condition.

Guard logic illustrates mutually exclusive branching: one set of clothes may need machine drying, another may be set to line dry, with conditions determining the next activity. Individual guard text is business-facing, for example \[dryer\ available\] versus \[line\ dry\ needed\] (or \[machine\ dry\] versus \[air\ dry\]), placed on the two outgoing edges from the diamond. As with the payroll pattern, guards are in square brackets and complementary — exactly one true per execution. The lecture shorthand for this pattern is "\[hours \le 40\] then normal payroll, \[hours > 40\] then overtime" applied to an appliance context: conditional work before merging.

  • The two competing branches each contain their own activity (for example Machine Dry on one path, Line Dry on the other), then both converge at a merge diamond before reaching End (bullseye). Even though the choice splits the flow, the process ends at one termination point. The merge diamond is the visual signal "either drying history leads here; no synchronization needed."

The example is used to show that activity diagrams are not limited to software examples; any process with tasks and choices — cooking, washing, invoicing, admitting a student — can be shown with the same five symbols. A student who draws two merges instead of one (one per branch) has misunderstood that merge is "any one arrival suffices" and does not need duplication.

Sense-check: If clothes are washed and the dryer is available, the diagram must route through Machine Dry and still end at the same End as line-dried clothes. A missing merge would leave two separate ends — technically legal in UML but harder to read and not intended for this simple case.

#### Worked example 3 — Stock processing and campaign management (consolidated swimlane + object flow view)

Setup: Comprehensive view of the campaign business process, combining sequencing, branching, parallel possibility, lanes, and objects. This diagram reads like a high-level business process model that could be mapped to data-flow alternatives, and it directly prepares object identification (what objects were created and where they are needed).

Worked flow — Campaign management with lanes, decisions, objects, and optional parallelism.

Flow narrative with lanes and objects, combining every element:

  • Start (in Campaign Manager lane) → Add New Client (rounded rectangle in that lane) → object node new Client : Client (rectangle) created. An arrow from the activity to the object node means creation; the object node sits on the transition to the next step.

Guard check \[need\ to\ add\ campaign?\] as decision diamond: guard \[campaign\ to\ add\] leads forward inside the same lane, guard \[no\ campaign\ to\ add\] may skip campaign creation or branch to a contact-only path, as per the problem variant described ("add a new client at the staff contact: it is no campaign to add" versus "there is campaign to add"). The guard labels are business judgments, still Boolean and still complementary.

  • Continue in Campaign Manager lane: Add New Campaign → object node new Campaign : Campaign. Then Assign Staff to Campaign (still in that lane, or crossing to a Staff lane depending on organizational boundary chosen — both are defensible if used consistently). Transitions between these activities are triggered by successful completion; no failure internals are expanded to keep the page readable — detail goes in text extensions.
  • Cross lane border to Accountant lane: Generate Invoice once assignment and completion records exist. An object flow may show the Invoice document as an object node created here and then consumed by the payment step — the invoice must exist before the client can pay against it, and the object node makes that data dependency explicit rather than implied.
  • Cross to Client lane: Make Payment (the client's act of paying). Then the return crossing to Campaign Manager lane: Record Client Payment (the manager recording that the payment happened), then bullseye End.
  • Parallelism hint from the lecture that examiners may probe: some campaign organizations perform sets of tasks "in balance" — for example Prepare Campaign Materials and Recruit Additional Staff could be done in parallel across departments when the business allows. Those parallel tracks are shown by a fork thick bar dividing one thread into two, and a matching join thick bar collecting both tokens before the final Record Completion. Textually: fork → Branch A Prepare Materials and Branch B Recruit Staff run concurrently → join → next step. The lecture's concrete language for that efficiency gain uses fork and join as the thick double bars that separate and reunite concurrent paths. Only use fork/join when true independence holds; if one branch feeds the other, keep them sequential.

Sense-check: The lane picture must still read correctly if lanes are removed: order, guards, and object dependencies do not change — lanes only answer "who." If removing lanes changes the story, a transition was drawn to the wrong lane. And the object nodes should be readable as a sentence: "Add New Client creates new Client; Add New Campaign creates new Campaign; Generate Invoice needs the campaign and produces an invoice; Record Client Payment needs the payment" — that sentence is your cross-check against the domain model of 7.5.

All three patterns are called out as concrete building blocks: sequential chain, conditional decision/merge with bracketed guards, and concurrent fork/join with synchronization. Together they let the activity diagram serve as a modern process model for analysis and also as algorithm logic for later design, where an activity might represent a loop body in code.

Real-world view: This pattern is how organizations document real workflows before building software — banking funds transfer from Operations to Risk to Finance, insurance claim assessment across branches, admission office file movement from desk to desk — so the eventual system mirrors an efficient business order rather than imposing an arbitrary software order. The most common failure is drawing a beautiful sequence that no business person recognizes; the fix is to validate the activity flow on the wall with the people who actually carry the files.

Pitfalls — exam traps for activity diagrams. 1) Forgetting square brackets on guards or writing prose like if hours > 40 without brackets — brackets are the notation, not decoration. 2) Letting guards overlap or gap — \[hours < 40\] and \[hours > 40\] gaps at exactly 40, while \[hours \le 40\] and \[hours \le 50\] overlaps for 30 — both are errors. 3) Using a diamond where a thick bar belongs — decision/merge is OR (choose one), fork/join is AND (do all and sync); swapping them changes semantics from "pick one payroll type" to "run both payrolls in parallel." 4) Drawing swimlanes but placing every activity in one lane — you have added visual weight without information; drop lanes or add a crossing handoff. 5) Adding object nodes everywhere — model objects only when the document or entity is created and later consumed and that dependency is worth making explicit; otherwise keep the diagram at activity-plus-control level.

7.4.6 Student Questions and Answers

Q: What is the point of fork and join when branches already show choice? Why use both forms?

A: Decision and merge choose one path among alternatives based on a guard — exactly one branch runs, like an if-else. Fork and join run several branches at the same time and then wait for all of them, like a team splitting to do two tasks in parallel and only regrouping when both are done. Fork spreads one thread into parallel threads (thick bar dividing one arrow into two or more), join reunites them before moving on (thick bar collecting two or more arrows into one). The double bar is the visual cue for parallel spread and parallel sync. If your guards already guarantee "only one of these will ever be true," use decision/merge; if your requirement says "do these together for speed," use fork/join. Confusing the two changes the system from "pick the right payroll type" to "run both payrolls at once" — a different program entirely.

Q: When should swimlanes be used and when can they be skipped?

A: Use swimlanes when the business process touches different places or different people — different departments, different roles, different organizations — and you want to show who does what. Label each lane with the responsible party (for example Campaign Manager, Accountant, Client) and place each activity inside its owner's lane. If the whole flow stays with one actor or one department, you can skip lanes and keep a simple top-to-bottom diagram without the partition overhead. There is no mandatory rule in UML that every activity diagram must have lanes; use them where responsibility handoff adds clarity, omit them where a single responsible party makes them redundant. Textbooks often cite "fewer than five lanes or split into sub-diagrams" as a readability guide.

Q: How should we start a new activity diagram from a paragraph of text? What is the fastest way into the notation?

A: Start with the filled-circle start symbol, list activities as rounded rectangles using task names lifted directly from the text (keep the business phrasing), connect them in the order the text says using transition arrows, add diamonds where the text says "if" or shows a choice, add thick bars where the text says "in parallel" or "at the same time," add guards in square brackets on the diamond's outgoing edges with mutually exclusive, complete conditions, and place a bullseye end at the bottom. Read left to right and top to bottom. If the picture starts to look crowded — more than about seven activities or more than two crossings — break it into a main (parent) diagram plus a sub-activity diagram for one complex step, marked with the rake symbol. That keeps each page simple and checkable, and each sub-diagram can be validated independently with a domain expert.

Q: Are data flows and object flows required in every activity diagram at this stage?

A: No. Show them when they help later object identification or when the case hinges on a document or object that is created and then consumed — for example when Generate Invoice creates an Invoice that Record Client Payment needs, or when Add New Client creates a new Client that later steps use. Otherwise keep the diagram at activity-plus-control level: rounded rectangles, diamonds, bars, and lanes. The notation allows object nodes but does not require them on every arrow. Later work, especially the domain model in 7.5, will make the object set precise, and you will add any missing data dependencies then. For now the principle is minimal sufficiency: model control fully, add data only where it clarifies who carries what.

Recap + Bridge. An activity is a named operation; an activity diagram is UML's rich replacement for DFDs and plain flowcharts, built from start (filled circle), activity (rounded rectangle), transition (completion-triggered arrow), decision/merge (diamond for OR branching), fork/join (thick bar for AND parallelism), guards (square-bracket Boolean conditions that must be mutually exclusive and complete), end (bullseye), partitions (swimlanes for who), and optional object nodes (rectangles for what is carried). Three concrete patterns cover everything: sequence (chain), choice (decision → one path → merge), and concurrency (fork → parallel paths → join) with the crucial OR-versus-AND distinction. The book-chapter, washing-machine, and full campaign examples together show iteration, mutually exclusive branching, and lane-plus-object integration — the same building blocks asked for on exams.

Exam note: Markers check that you can name each symbol, write guards like \[hours \le 40\] and \[hours > 40\] correctly, keep fork and join matched (one entry to fork, one exit from join, entered/exited from the same side), and know when to add and when to skip swimlanes and object nodes. If your decision guards overlap or leave a value uncovered, or your fork lacks a join, you will lose those literacy marks even if the story is plausible.

Real-world and domain connection: Activity modeling is how express-parcel shippers (Larman's client case), banks, insurers, and admission offices validate processes before automating them. The parcel shipper pins one wall-sized activity diagram with partitions for Customer, Driver, Sorting Hub, and Finance and walks it with operators — missing guards and orphaned branches become visible in a way paragraphs hide. That is the same habit behind the proficiency note in 7.4: transitions are triggered by completion, data travels with control, and the diagram is the contract for what "done" means at each desk.

7.5 Domain Model — Conceptual Class Diagram as the Bridge Out of Analysis

The domain model is where analysis stops describing stories and starts naming the enduring kinds of things that make every story possible. If SSDs gave you the verbs (system events) and activity diagrams gave you the flows, the domain model gives you the nouns — with attributes and associations precise enough that a designer can later turn them into software classes without inventing the vocabulary.

7.5.1 Conceptual Class Diagram as an Analysis-Class Picture

Hook — when does "what happens" need "what exists"? You have just listed makeNewSale, enterItem, endSale, and makePayment as system operations. But what kinds of things does the system remember between those operations — and how would you know if you invented a kind that belongs to the software and not the world?

A domain model is another name for a conceptual class diagram. It is the class diagram of analysis. It is not the design class diagram that later shows software classes with full method signatures, visibility, attribute types, and framework types. It shows real-world objects — often called conceptual classes — as they exist in the problem domain in the analyst's understanding, before any software decision is made.

For example, the same retail and campaign worlds that gave you Client, Campaign, Invoice, and Sale as use-case and activity elements now appear as classes with attributes and associations that a business expert would recognize as ordinary business language: a Campaign has a title and budget; a Client has name and contact; an Invoice has invoiceDate and amount. You are still in the analysis space. The objects here come from the problem side, not from a design invention. You will use this analysis information later in the design space by refining these conceptual classes into software classes — but the conceptual names already inspire the software names, which lowers the representational gap between how stakeholders think and how code is written.

Formally this is a static diagram. At any moment in time it shows the kinds of things and their relations — a snapshot of structure — not the order in which messages are sent. It has no lifelines, no time axis, no activation bars. That is why it pairs well with the dynamic diagrams already covered: the SSD tells you how the system is stimulated over time (which events, which operations), activity diagrams tell you how business tasks flow (which activity triggers which), and the domain model tells you what the enduring kinds of things are that underlie both — the things that must be remembered across events.

A concrete placement: the lecture positions the domain model as the point where requirement analysis ends and object orientation begins. Up to this point you were modeling requirements (goals, events, flows). From the next class forward you will model objects (responsibilities, collaborations, visibility). The domain model is the bridge: its classes are still conceptual (not software), but they are named and related using UML class-diagram notation (boxes and lines) that designers will keep.

Formalize — what belongs in a domain model and what does not. Using UML class-diagram notation at conceptual perspective:

  • Conceptual class: a box named for a real-world kind (Sale, Payment, ProductDescription, Campaign). No operations compartment at this stage — responsibilities and methods belong to design.
  • Attribute: a logical data value inside the lower compartment of the class box, typed as a data type, not as a class. For example Sale has date : Date and /total : Money (the slash means derived — computable from line items). Avoid modeling a complex domain concept as an attribute — if it occupies space or has its own attributes, make it a class (see pitfalls below).
  • Association: a line between two classes with a capitalized reading-direction name and multiplicity. For example Sale Paid-by Payment or SalesLineItem Records-sale-of Item. Associations answer "what relationship must be remembered?" If you need to remember which SalesLineItems belong to a Sale to reconstruct a receipt, that Contains association must appear; if a transient lookup does not need memory, do not add it.

What is excluded, even though it looks object-like: software artifacts such as SaleDatabase, PaymentWindow, or a method name like print() — unless the domain being modeled actually is software (for example, modeling a GUI framework). A domain model is a visual dictionary of the business, not a picture of the code.

Scope — conceptual perspective versus software perspective. Assumption: the domain model describes real-situation concepts as a domain expert would name them, not software implementation choices. When this holds: ProductDescription describes information about an item type (price, description) that survives even when all Item instances of that product are sold out — a need correctly captured by a description class. What breaks if you mix perspectives: adding software-only classes like SqlSaleMapper pollutes the business vocabulary and will later be mistaken for a business kind; adding responsibilities like Sale.print() presumes a design decision before you have agreed on what a sale is. Guideline: if a proposed element would still matter when the software is switched off and work continues on paper, it is a candidate conceptual class; if it only matters to programmers, defer it to the Design Model.

Visual intuition: picture a dictionary where each headword is a class box, each definition includes attributes (what you remember about one entry) and see-also links as associations (how entries relate). The domain model is that dictionary drawn as a graph: boxes are words, lines are meaningful sentences ("a Sale is Paid-by one Payment," "a Campaign is Managed-for one Client"), and multiplicities are the grammar (one versus many). You can read it left-to-right or top-to-bottom by following the reading-direction arrow on each line, but no single line has temporal priority — it is a map, not a timeline.

Practical cues the lecture pairs with this view: the textbook advice is to sketch a domain model on a whiteboard in a couple of hours early in each iteration, bounded by the use case scenarios under development (for this lecture, the cash-only Process Sale and the campaign case), rather than attempting a waterfall "model everything perfectly." An agile habit is to photograph the whiteboard and move on — the model has served its purpose of aligning vocabulary.

Pitfalls — analysis traps that later cost design time. 1) Attribute versus class confusion (the most common mistake, per Larman). If you cannot think of the concept as a pure number or text in the real world, make it a class, not an attribute. A Store is not just a string — it occupies space, has an address, and employs cashiers — so Store is a class, not a store : String attribute of Sale. Likewise, a destination is not a string; Airport is a class. 2) Showing software types early. Types like SaleDatabase do not belong here; they belong in the deployment view later. 3) Over-modeling associations. In a graph with 20 classes you could draw 190 lines; avoid visual noise by showing only "need-to-remember" associations — those required to reconstruct a transaction, handle a use-case step, or satisfy a domain rule. 4) Adding operations. A domain model with method signatures is a premature design class diagram; keep the operations compartment empty at analysis.

Real-world and domain connection: Teams that separate analysis artifacts (use cases, SSDs, activity flows, conceptual domain model) from design artifacts (design class diagrams, detailed sequence diagrams, deployment diagrams) keep the business conversation distinct from the technical conversation. That separation helps stakeholders approve what is wanted before debating how it is built — for example, a retail chain can approve "a Sale contains SalesLineItems each recording a sale of an Item described by a ProductDescription" without yet approving whether ProductDescription is cached in memory. That approval then becomes the shared vocabulary that designers reuse verbatim as software class names (ProductDescription, Sale) to lower the gap between mental model and code.

7.5.2 Exam Scope and Transition to Object Orientation

Exam note: The block ending at the domain model marks the limit of analysis-phase material for this segment. The lecturer states explicitly that the syllabus up to the domain model is inclusive for the current analysis portion — every topic from static/dynamic views through use cases, UML views, SSDs, activity diagrams, and the conceptual domain model is fair game. System contracts, while related to SSD system operations (pre/postconditions on domain objects), are noted as a possible addition when SSDs are discussed in fuller detail, but they are not the focus of this diagram-building assessment and may be introduced time-permitting alongside SSDs.

Study guidance paired with that scope:

  • Read Larman Chapter 6 third edition — the prescribed chapter for use case writing and use case diagram conventions alongside SSD material. The textbook presents the SSD as sequence-diagram notation at system level, consistent with the lecture; reading it cleans up "LAMAT versus UML" confusion.
  • Review the notations and the dual importance of activity diagrams as business process models (analysis) and as design flow models (later use for algorithms). Be able to draw both uses — a business case with swimlanes and a method's branching logic — so you recognize the same symbols in different contexts.
  • Treat UML as notation you can extend rather than as a fixed process to memorize. The value of UML in the Unified Process is that it is flexible and can host any useful practice that adds value, not that it prescribes a single workflow.
  • Practical readiness means being able to draw the diagram a prompt asks for from a one-page case text, not just naming parts. For a prompt like the campaign management case, you should be able to produce a medium-granularity use case model, one SSD for the main success scenario, one activity diagram showing decision, merge, fork, join, guards, and optionally swimlanes and object nodes, and a small domain model.

Future direction signaled: the next class will cover object orientation in depth and the method for identifying objects — turning the conceptual classes of the domain model into a design-ready object view. System contracts, time permitting, are noted as a possible addition when SSDs are discussed in fuller detail. Activity diagram sub-topics such as sub-activities (rake), object flows with pins and rationales, and lane details will reappear once object identification makes them more concrete.

Recap + Bridge. The domain model closes the analysis phase as a static snapshot of the business vocabulary — conceptual classes with attributes and need-to-remember associations, drawn with class-diagram notation but without software operations. It is the bridge to the next phase: the same names (Client, Campaign, Sale) will inspire software classes, and the same associations will guide visibility and navigation decisions in design. With it, the analysis set is complete: use cases and the domain model tell you what exists and what goals are served; SSDs and activity diagrams tell you what happens and in what order; the domain model tells you what must be remembered across those happenings. The next phase keeps the vocabulary and adds behavior allocation — which object does what, with which method, collaborating with whom.

Exam note: The syllabus through the domain model inclusive is the analysis block. Larman Chapter 6 third edition is the prescribed alignment. Activity diagram and SSD diagram-construction fluency is explicitly assessed — creation tasks, not just labeling — so timed practice on fresh cases matters more than re-reading.

Real-world recap: In product teams, the domain model is often the first wall artifact that survives from story to sprint: business analysts, domain experts, and engineers all point at the same boxes and argue about one line ("should a Campaign be described by a CampaignDescription?") rather than about code. That argument, settled early, prevents a later persistence or pricing bug where a price is duplicated on every Item instance instead of living once on its description.

Exam Guidance Summary

The analysis phase through the domain model is the assessed block. This summary consolidates what to revise, what textbook page to open, what a task prompt looks like, and which visual details examiners check for marks.

  • Scope for this block: analysis phase through system sequence diagrams, activity diagrams, and domain models inclusive. The domain model as a conceptual class diagram is the endpoint of analysis before object-oriented design begins. System contracts may be introduced alongside SSDs when time permits as pre/postconditions on domain objects, but contracts are not the focus of this diagram-building assessment — focus revision time on creating SSDs and activity diagrams, not on contract prose.
  • Textbook alignment: Read Larman Chapter 6 third edition for use-case writing, use-case diagram reading, and SSD handling where the SSD is presented using sequence-diagram notation at system level. Larman Chapter 6 is the single prescribed source bridging lecture and textbook; later chapters on SSDs (Chapter 10) and activity diagrams (Chapter 28) and domain models (Chapter 9) deepen the same examples with the NextGen POS case.
  • Format of assessment tasks: Expect to be given a one-page case study — for example a campaign management organization serving clients with campaigns, staff allocation, invoice, and payment, or a retail point-of-sale Process Sale, or a chapter-writing or washing-machine workflow. You will need to name actors and use cases (at medium granularity), describe the main success scenario in text, and draw the requested diagrams: a use case model (ellipses plus actors with a comment note where needed), one or more SSDs for the main success scenario with correct :System notation, and one or more activity diagrams with decisions, merges, forks, joins, guards in brackets, and optionally swimlanes and object nodes where responsibility or data matters.
  • Medium granularity is the norm for classroom exercises. Avoid scattering the model into many tiny single-step ellipses (one ellipse per button press) and also avoid packing everything into one overly generic "Manage System" use case. Merging fine-grained Add or Delete variants into one manage-style use case (for example Manage Client Details) is explicitly accepted as a way to stay at the intended level. In industry the granularity naturally varies with scope and audience; in the course a balanced middle is expected and more than one grouping can earn full marks if it is consistent and justified.
  • Visual literacy checks examiners use as quick filters: start node as filled circle at the top, end as bullseye, activity as rounded rectangle, decision and merge as diamonds with bracketed mutually exclusive and complete guards such as \[hours \le 40\] and \[hours > 40\], fork and join as thick bars for parallel split and synchronization (one entry to a fork, one exit from a join, entered and exited from the same side), swimlanes as labeled partitions for responsibility by actor or department (few enough to stay readable), object nodes as rectangles for created or used documents or entities (for example new Client : Client), comments as folded-corner rectangles attached by a dashed line, and system object notation :System (colon = instance) versus class notation System (no colon = type).
  • Simplicity and splitting rule: If any diagram becomes complex, break it into multiple simpler diagrams rather than crowding one page — one SSD per scenario, one activity diagram per coherent process level with sub-diagrams for complex steps marked by the rake symbol. A picture should be readable left to right and top to bottom at a glance. Accompany an SSD with its scenario text so both forms reinforce each other and inconsistency becomes visible.
  • Time order carries meaning: In SSDs the vertical order is the time order of events — reordering arrows changes the story. In activity diagrams transitions are triggered by completion of the source activity, not by an external event; the arrow means "when this task finishes, that one starts."
  • Practice contract: Solve at least five varied case studies end to end and draw each diagram family for each study using a tool at hand — ArgoUML, StarUML, or similar. Notation can be memorized quickly (hours), but modeling thought becomes fluent only through repeated application across domains (weeks). Timed practice on a fresh one-page case is the single best predictor of creation-task marks.

Exam note: Revision priority is creation fluency: can you, in 30–40 minutes from a fresh paragraph, produce a correctly scoped domain model, a one-scenario SSD with device-independent verbs, and an activity diagram whose guards are precise and whose fork/join are matched? If yes, labeling questions become trivial; the reverse is not true.

Key Industry Applications

These applications show where the analysis views taught in this lecture actually earn their keep outside the classroom — the same SSD, activity, and domain model habits appear wherever a business process must be understood before it is automated.

  • Point-of-sale retail systems — modeling cashier–system interactions with SSD events makeNewSale, enterItem(itemID, quantity), endSale, makePayment(amount) to define system operations for a black-box store terminal before designing internal collaborations among Register, Sale, ProductCatalog, and Payment. The SSD operation list directly seeds operation contracts and the design sequence diagrams.
  • Campaign management organizations — modeling the end-to-end flow from Add Client and Add Campaign through Assign Staff to Campaign, Generate Invoice, and Record Client Payment across Campaign Manager, Accountant, and Client swimlanes. Swimlanes make responsibility handoff visible, guard conditions like \[campaign\ to\ add\] keep the business rule explicit, and object nodes (new Client : Client, Invoice) make the data that must travel between departments checkable before automation.
  • Business process redesign in banking, insurance, and admission offices — documenting file movement and control flow from department to department with decisions, merges, forks, joins, and object flows before a workflow system is built. Teams pin a wall-sized activity diagram with partitions for each office and walk it with the clerks who actually carry the files; missing guards and orphaned parallel branches become visible in a way paragraphs hide, and the fork → parallel work → join pattern shows where staffing can speed the process.
  • Appliance and operational workflows — washing machine dry cycle and similar task-choice scenarios modeled as activity flows to distinguish conditional work (\[dryer\ available\] versus \[line\ dry\ needed\]) before merging to a single End. The same branching pattern appears in logistics, cooking, and checkout — any process where one history is chosen among alternatives.
  • Publishing and content workflows — book chapter production with draft, revision loop until \[satisfactory\], addition of exercises and diagrams as sequential and iterative activities. This non-software domain teaches the notation without letting students hide behind code, and its loop pattern reappears in software sprints and review cycles.
  • Database design practice — industry shift from entity-relationship (ER) diagrams to UML class modeling for persistence structure, and use of UML across component and deployment views for product teams building at scale. The same class-box notation that draws Client and Campaign in the domain model later draws tables and services, keeping the vocabulary aligned from analysis to deployment.
  • Tooling chain in practice — Visual Paradigm (VGO), ArgoUML, StarUML, and IBM Rational Rose as selection options for creating and maintaining UML diagrams in academic and commercial settings, supporting the "picture is worth a thousand words" role of visual models in reviews. The tool choice matters less than the habit: teams that keep a shared, versioned set of use case, SSD, activity, and domain views can hold a design review where each stakeholder validates their own window — domain experts the flows, engineers the classes, infrastructure the deployment — using consistent names.

The common thread: analysis artifacts are cheapest to change when they are pictures on a wall, and most expensive when they become code. Investing in one SSD per scenario and one clear activity diagram per process — plus a domain model that names the nouns once — prevents the class of errors where the system faithfully automates the wrong order.

OODAP Lecture 7 notes · System Sequence Diagrams, Activity Diagrams and UML Foundations

Object Oriented Design, Analysis and Programming Architecture· postgraduate· 2026-08-19

Sections Breakdown

17.1 Static and Dynamic Views — Where Requirement Analysis Sits

Introduces the two complementary modeling views — static snapshot (class/domain model) and dynamic time-ordered interaction (use case, SSD, activity) — and shows how business processes map to use cases with a snapshot-vs-movie analogy.

27.2 Unified Modeling Language — A Notation System for Modeling

Defines UML as a standardized notation (not language or process) since 1997 covering many views, its replacement of ER diagrams, and tool/practice guidance that notation takes hours but object thinking takes cases.

37.3 System Sequence Diagrams — Events and Operations at the System Boundary

Teaches the SSD as a black-box, one-scenario, actor-plus-:System interaction that names system events/operations with device-independent verbs, with two fully worked cases (POS Process Sale and campaign management).

47.4 Activity Diagrams — Business Process Flow, Branching and Concurrency

Comprehensive activity diagram notation — start, activity, transitions, guards, decision/merge (OR), fork/join (AND), swimlanes, object nodes — plus four worked flows (book chapter loop, payroll, washing machine, campaign with lanes/objects) replacing DFDs.

57.5 Domain Model — Conceptual Class Diagram as the Bridge Out of Analysis

Defines the domain model as the static conceptual class diagram (no operations) showing real-world kinds, attributes, and need-to-remember associations, bridging analysis vocabulary to design and closing the analysis block.

6Exam Guidance Summary

Consolidates scope through domain model, Larman Chapter 6 alignment, assessment formats, medium granularity guidance, visual literacy checks, simplicity rule, and five-case practice contract.

7Key Industry Applications

Maps lecture views to industry uses: POS SSD operations, campaign swimlanes, banking/admission reengineering, appliance flows, publishing workflows, UML replacing ER, and tool chains for visual reviews.

Postgraduate students in Object-Oriented Analysis, Design, and Programming

Exam Revision Notes

Below is the distilled, exam-ready core. Every entry comes from the full explanation above. Use this section for rapid review; return to the main notes when a point needs more context.

Static and Dynamic Views — Where Requirement Analysis Sits

Must-know: Static = frozen structure (class/domain model); Dynamic = time-ordered interaction (use case, SSD, activity, sequence). Use the 'what happens next?' test to classify.

⚠️ Top pitfall: Calling a use case diagram static because it looks structural — interaction over time makes it dynamic; calling a domain model dynamic because it has associations.

Self-check: Is a domain model static or dynamic, and why does it pair with an SSD rather than replace it?

Connects to: 7.2; 7.3; 7.5

Unified Modeling Language — A Notation System for Modeling

Must-know: UML is notation for specifying/visualizing/constructing artifacts, not a programming language or process; started 1997, de facto standard, many views onto one system.

⚠️ Top pitfall: Treating UML as a waterfall process or memorizing symbols while skipping essential UI-free use case writing and object-thinking practice.

Self-check: Name three tools (ArgoUML, StarUML, Visual Paradigm/Rational) and explain why 'learn notation in a day, think in objects over cases' matters for creation tasks.

Connects to: 7.1; 7.3; 7.4

System Sequence Diagrams — Events and Operations at the System Boundary

Must-know: SSD = analysis, one system :System, one scenario, verb-first intent names (enterItem not scanBarcode); vertical order is time. One system lifeline only.

⚠️ Top pitfall: Opening the black box with :Sale/:Register inside an SSD, or using scanBarcode (device) instead of enterItem (intent), or drawing one SSD for all alternates.

Self-check: Draw the Process Sale SSD messages in order with loop for enterItem and explain why :System not System.

Connects to: 7.1; 7.4; 7.5

Activity Diagrams — Business Process Flow, Branching and Concurrency

Must-know: Activity diagram = flowchart + state chart richness; decision/merge = OR choose one (mutually exclusive complete guards), fork/join = AND do all and sync; guards in [] like [hours <= 40] vs [hours > 40]; swimlanes for who, object nodes for what is carried.

\text{ and } \text{ — mutually exclusive and complete for } hours \in \mathbb{R}_{\ge 0}

⚠️ Top pitfall: Guards overlapping or gapping (e.g., <40 and >40 misses 40), using diamond where thick bar needed, confusing merge (any arrival) with join (all arrivals).

Self-check: Draw payroll decision with two guards and merge, and a fork/join pair for two parallel campaign tasks — label which bar is fork and which is join.

Connects to: 7.1; 7.3; 7.5

Domain Model — Conceptual Class Diagram as the Bridge Out of Analysis

Must-know: Domain model is static analysis class diagram of real-world conceptual classes (no methods); shows attributes and associations that must be remembered; inspires software class names and bridges to design.

⚠️ Top pitfall: Modeling a complex concept as attribute (Store as string), adding software artifacts (SaleDatabase) or operations, or drawing 190 noisy associations instead of need-to-remember links.

Self-check: Explain why ProductDescription exists separately from Item using the sold-out price-loss example.

Connects to: 7.1; 7.3; 7.4

Exam Guidance Summary

Must-know: Scope through domain model inclusive; create SSD (one scenario, :System) and activity diagram (guards, fork/join matched, lanes optional) from a one-page case at medium granularity.

\text{ vs }

⚠️ Top pitfall: Crowding one diagram with all alternates instead of splitting; forgetting vertical time or completion-triggered transitions.

Self-check: Given a fresh paragraph, can you produce a use case list, SSD, and activity diagram with correct guard notation in 30 minutes?

Connects to: 7.3; 7.4

Key Industry Applications

Must-know: SSD operations seed contracts and design; activity fork/join shows where parallelism saves time; domain model keeps one vocabulary from analysis to code.

⚠️ Top pitfall: Automating the wrong order because the business activity flow was never drawn and validated with operators.

Self-check: Name one industry example for each of SSD, swimlane activity, and domain model application.

Connects to: 7.3; 7.4; 7.5

Was this lecture useful?

Loading comments…
🤖

BitsNotes AI Assistant

Subject Notes Assistant

Configure AI Chat

Choose how to access the chatbot
Have your own API key?

Switch to "Bring Your Own Key" tab above for unlimited access with any OpenAI-compatible provider.

🔑 Enter API key above to fetch live models from provider, or enter model name manually.
OpenAI-Compatible API Support

Choose any provider preset (Gemini, DeepSeek, Kimi, GLM, MiniMax, Qwen, OpenAI, Groq, Ollama, etc.) or enter a custom endpoint URL.

Security & Privacy First

Your API key is sent directly from your browser to your specified provider. BitsNotes servers never store or see your key.