Winter 2026 · University of Toronto · Faculty of Applied Science & Engineering

MIE350
Design & Analysis of Information Systems

Final Exam Review — everything in one place.

Final Exam

Saturday, April 18 · 2:00–4:30 PM EDT

VO AUDB — St Volodymyr Institute, 620 Spadina Ave

17 lectures · 2 practice exams · 6 UML diagrams · structural testing

Exam Logistics

  • Date: Saturday, April 18, 2026
  • Time: 2:00 PM – 4:30 PM EDT
  • Duration: 2 ½ hours
  • Location: VO AUDB — St Volodymyr Institute
  • Address: 620 Spadina Ave
  • Arrive by: 1:45 PM with TCard
  • 6 long-answer questions · 100 pts
  • Calculator Type 4 (non-programmable)
  • Exam Type B (no aids except calculator)
  • Examiner: E. Cohen
QTopicPts
1UML Class Diagram15
2UML Sequence Diagram14–16
3UML Statechart15
4UML Activity Diagram14–16
5Architecture OR Short Essays20
6Software / Structural Testing20

Time budget: 2.5 hrs / 100 pts ≈ 1.5 min per point. The UML questions are ~60% of the exam and draw directly from scenario text — practice sketching fast. Structural testing Q6 is always 20 pts and always includes CFG, coverage, and cyclomatic complexity.

Instructor tips from the practice exams: for coverage questions, "to receive full points, make sure your set of test cases is minimal." For activity diagram analysis, justify all your answers. For class diagrams, pay attention to subtyping cues in the scenario ("each X is either a Y or a Z").

◊ ◊ ◊

Course Topics

Course Topics: Planning, Analysis, UML, Design, Implementation

Fig. 1 — Course map. UML (centre) has the most exam weight.

Project Initiation / Staffing / Planning was explicitly marked not in the exam. Everything else is fair game.

Software Development Methodologies

◊ ◊ ◊

The SDLC (Software Development Life Cycle) has four phases: Planning (why + how), Analysis (who / what / where / when), Design (how the system will operate), and Implementation (construct, install, maintain). A methodology is a formalised approach to implementing the SDLC.

Structured Design

V-Model of testing

Fig. 2 — V-Model: analysis/design on the left, unit/integration/system/acceptance testing on the right.

Rapid Application Development (RAD)

Agile

Agile Manifesto: individuals/interactions > processes/tools; working software > documentation; customer collaboration > contract negotiation; responding to change > following a plan.

Selection cheatsheet: Unclear requirements → RAD / XP. High reliability → V-Model. Short schedule → Iterative / Prototyping / XP. Schedule visibility → RAD / XP.

Software Architecture

◊ ◊ ◊

SEI definition: the architecture is "the structure or structures of the system, which comprise software components, the externally-visible properties of those components, and the relationships among them." Two views: static (what components exist and their arrangement) and dynamic (runtime interactions and control).

Every component has

Externally-visible properties: functional (inputs/outputs, interfaces, response to input) and quality / non-functional (performance, security, availability, modifiability, testability, usability).

Static Architectural Styles

Layered

Layers of services; each depends only on layer below.

+ replaceable layers, localised changes, security isolation
clean separation hard, overhead from multiple layers

Repository

Shared central data; all components read/write it.

+ efficient sharing, components independent, central mgmt
single point of failure, schema compromise, data evolution hard

Client–Server

Services distributed over network; clients call servers.

+ distributed load, easy to add servers, networked CPUs
unpredictable performance, each service a failure point

Pipe & Filter

Output of one component is input to the next (Unix pipes).

+ easy to understand, reusable filters, matches workflows
must agree on format, overhead, limited reuse

Dynamic Control Styles

Compiler architecture evolution

Fig. 3 — Compiler architecture evolves: pipeline → pipeline-with-symbol-table → full repository (attributed parse tree + symbol table). Drivers: shared data, tool support.

Exam move: when asked to choose an architectural pattern for a scenario, name it, then state two advantages and two disadvantages specific to that scenario. The airline reservation diagram (clients with Presentation/BL/DB/Network over WAN to central DB) is client–server (thin/fat hybrid).

Requirements Engineering

◊ ◊ ◊

Requirement (IEEE 610): "a condition or capability needed by a user to solve a problem or achieve an objective." Fred Brooks: "the hardest single part of building a software system is deciding precisely what to build."

Four activities

Elicitation techniques

Interviews, JAD sessions, questionnaires, document analysis, observation.

Questionnaires — two strengths / two weaknesses

+ Reach many stakeholders at low cost. + Data is easily aggregated / quantified.
No follow-up, so tacit knowledge and context are lost. Low response rates and self-selection bias skew results.

Functional vs Non-Functional

Functional = a process the system must perform, OR information it must maintain (what it should / should not do). Non-functional = behavioural properties / constraints on services. Failing a non-functional can render the system unusable.

Test: Is this a specific process? Is this specific information? If both no → it's non-functional.

Non-functional taxonomy

Common pitfalls: requirements confusion (mixing F and NF); amalgamation (many in one sentence); lack of clarity ("user-friendly", "fast" — not testable). Quality requirements must be objective and measurable.

Use Cases

◊ ◊ ◊

A use case is a step-by-step description of how an actor uses the system-to-be to achieve a goal. Each use case covers one or more functional requirements.

Use case template

Use case diagrams

Alternate / Exceptional flows (short-essay prompt)

Alternate flows are valid variations of the normal path that still achieve the use case goal. Exceptional flows handle failure or abnormal input (e.g. invalid credentials, system offline). Both are enumerated separately from the normal flow so that requirements tied to error handling and variation are traceable.

Traceability matrix: rows = requirements with priority weight (PW), columns = use cases, X marks coverage. Lets you (1) confirm every requirement is covered, (2) spot orphan use cases, (3) prioritise by Max PW and Total PW per use case.

Process Modelling & DFD

◊ ◊ ◊

A process model represents how a business system operates, abstracted from implementation. MIE350 uses Data Flow Diagrams (DFDs) — business processes and the data passed between them.

Four symbols

Hierarchy & numbering

Balancing: data flows on the parent must match those on the child. Adding data flows not reflected on the parent breaks balancing and loses marks.

Common errors

UML Class Diagrams

◊ ◊ ◊

Class diagrams give a static view of the system: what classes exist and how they're related. From scenario text: nouns become classes, verbs become methods, relationships between nouns become associations.

Notation

Relationships

RelationshipArrowMeaning
Inherits (class)Solid line, white triangleIs-a. Points to parent.
Inherits (abstract)Solid line, white triangle, parent italicIs-a, parent cannot be instantiated.
Implements (interface)Dashed line, white triangleRealises interface. Can implement many.
AssociationPlain line + multiplicityUses / knows-about.
AggregationLine with white diamond at containerHas-part. Parts may outlive whole.
CompositionLine with filled diamond at containerStrong has-part. Parts die with whole.
DependencyDashed arrow, e.g. «create»Uses temporarily.

Multiplicity cheatsheet

1 exactly one · 0..1 zero or one · * or 0..* zero+ · 1..* one+ · 2..4 2 to 4 · 1..3, 5 disjoint ranges.

Association class

When the association itself has attributes (e.g. Pharmacist works at Pharmacy with hoursPerWeek), attach an association class by a dashed line to the association line. The association class carries the extra attributes.

Pharmacy scenario cues (Practice Exam 1): "Each pharmacy is either public or private" → generalisation (abstract Pharmacy, subclasses PublicPharmacy / PrivatePharmacy). "Pharmacists can work for more than one pharmacy… hours-per-week" → many-to-many + association class. "Not required to stock all drugs… drugs not stocked by any pharmacy" → multiplicities 0..* on both sides of the stocks association, with a Stock association class recording units.

UML Sequence Diagrams

◊ ◊ ◊

A sequence diagram models a single scenario — the dynamic view of how objects collaborate over time.

Parts

Message arrow styles

TypeArrow
Synchronous callSolid line, filled arrowhead
Asynchronous callSolid line, stick arrowhead
ReturnDashed line, stick arrowhead
CreateArrow labelled new into a new participant box placed lower on the page
DestroyLarge X at the bottom of the lifeline

Combined fragments

Control style signals: many short activations spreading off one object → centralised ("fork" shape). Activations chaining down objects → distributed ("stair-step" shape).

Sequence diagram recipe

  1. Identify objects from the scenario (tip on the exam).
  2. Place them left-to-right in interaction order.
  3. For each step: determine caller, callee, and sync / async / return.
  4. Wrap conditional steps in opt / alt; repeated steps in loop.
  5. Use new / X only if the scenario clearly creates or ends objects.

UML Statecharts

◊ ◊ ◊

Statecharts describe the lifetime of one object whose behaviour depends on history. A state is an interesting configuration of attributes; statecharts abstract the real state space into a manageable FSM.

Syntax

Four event types

Shipment scenario (Practice Exam 2): states chain Created → Verified → Collected → Checked → Shipped → Waiting-for-Delivery → Out-for-Delivery → Delivered, with side branches for Cancelled, Mismatched, Waiting-for-Client. Watch for: "two more attempts" → self-loop with counter guard; "five days to pay difference" → after[5 days] elapsed-time event; "if delivery fails… second fails" → guarded self-transitions.

Linear Temporal Logic

◊ ◊ ◊

LTL expresses properties of a single infinite trace. Model checking computes model ⊨ property; if false, you get a counter-example trace.

Temporal operators

SymbolNameReads
□f / G fGlobally / henceforthf holds in this and all future states.
◊f / F fEventuallyf holds now or in some future state.
○f / X fNextf holds in the very next state.
f U gUntilg eventually holds, and f holds at every state until g. Implies ◊g.
f W gWeak until / unlessf holds indefinitely OR until g. f W g ≡ (f U g) ∨ □f.

Compound idioms

Turnstile pattern (per state): one "stay" formula (□(S → (S W e))) and one "transition" formula (□((S ∧ e) → ○S')). For branching: □(X → (X W (a∨b))), plus one transition formula per outgoing edge.

UML Activity Diagrams

◊ ◊ ◊

Activity diagrams model workflows — algorithms, business processes, and concurrent execution. They do NOT show which object executes each activity; for that, use a sequence diagram.

Notation

Analysis rules (Q4 pattern)

Worked reasoning — "Will F always occur before G?"

If F is on the same sequential edge directly feeding into G (F→G with no parallel path to G), answer yes. If F and G are on different branches of a fork, answer no: they are concurrent and execution order is not constrained. If G is guarded by a decision that excludes F's branch, answer yes (trivially) when F occurs G cannot follow. Always justify by naming the specific fork / decision / sequential edge.

Software Testing

◊ ◊ ◊

"Testing can be used to show the presence of bugs, but never their absence." — Dijkstra. Testing investigates system quality with sequences of stimuli, observations, and verdicts.

Terminology

Why multiple test suites?

Different suites serve different resource / time budgets and goals (fast smoke suite per commit, heavier integration / performance suite nightly, long-running system suite before release). Splitting lets teams get rapid feedback without waiting for the slowest tests.

Test oracles

False positive vs false negative

False positive = oracle says "pass" when a real fault exists (missed bug). False negative = oracle says "fail" when there is no fault (spurious alarm). A faulty oracle produces either.

Testing stages (V-Model)

Black box vs white box

The two are complementary — structural testing fills gaps in functional tests.

Structural testing: CFG

Coverage criteria

Subsumption: criterion A subsumes B iff every test suite that achieves 100% A also achieves 100% B. Branch coverage subsumes statement coverage (executing every branch visits every statement). Statement coverage does NOT subsume branch — an if with no else can be 100% statement but not 100% branch.

"Minimal" test case design (scored on the exam)

After you list each test case, walk through the CFG and mark every statement / branch each test covers. Then justify that removing any test breaks 100% coverage. Examiner marks off if a suite has redundant cases.

Cyclomatic Complexity

◊ ◊ ◊

McCabe's cyclomatic complexity V(G) counts the number of linearly independent paths through a program's control flow graph. It is an upper bound on the number of test cases needed for branch coverage.

Three equivalent formulas

V(G) = E − N + 2 (edges minus nodes plus 2) V(G) = P + 1 (decision points + 1) V(G) = number of regions (in a planar CFG)

where E = edges, N = nodes, P = decision points (predicates). For an && or || inside a condition, each short-circuit boolean operator counts as an additional decision point.

Cyclomatic complexity formula

Fig. 4 — V(G) = E − N + 2 · independent paths through the CFG.

Worked example — findMax(a,b,c)

int findMax(int a, int b, int c) { int temp; if (a > b) temp = a; else temp = b; // decision 1 if (c > temp) temp = c; // decision 2 return temp; }

CFG has 2 decisions ⇒ V(G) = 2 + 1 = 3. Verify: nodes = 6 (entry, cond1, temp=a, temp=b, cond2, temp=c, return — merge handled), edges = 7. V(G) = 7 − 6 + 2 = 3. ✓

Risk thresholds (McCabe)

1–10 — simple, low risk · 11–20 — moderate · 21–50 — complex, high risk · 50+ — untestable, refactor.

On the exam: always show the computation. Draw the CFG, count E / N / P, and state the formula you used. A correct number with no justification loses marks.

Final Exam — 6 Questions · 100 Points

◊ ◊ ◊

Based on MIE350 Practice Finals #1 and #2. Scenarios are from the real practice exams; click "Show Answer" for a model response. For the UML questions, an answer outline replaces the drawn diagram.

Q1. UML Class Diagram — Pharmacy Association

15 pts

"Create a class diagram that describes the classes and their relationships based on the following scenario description for the pharmacies information system."

  • Pharmacy: unique number, name, address. Either Public (govt license number) or Private (owner name, address).
  • Each pharmacy employs Pharmacists (license number, expiration) and Administrative Staff (role). Both inherit from Employee (first name, last name, unique ID).
  • Pharmacists can work for multiple pharmacies with different hours-per-week per pharmacy. Administrative staff work for one pharmacy full-time.
  • Each pharmacy stocks a range of drugs (not required to stock all; drugs may be unstocked). Drug = common name, unique code, manufacturer. System records units in stock per pharmacy.

Q2. UML Sequence Diagram — Art Gallery Order

16 pts

Customer searches the gallery, adds paintings to cart, and checks out for delivery or pickup. For delivery: payment details + address, painting marked "ordered", confirmation number. For pickup: painting marked "reserved", reservation number.

Q3. UML Statechart — Quiz Object (Undergrad Office)

15 pts

Quiz uploaded → plagiarism check → if detected, professor reviews and records mark; if not, TA records mark. Marks posted on Quercus → 7-day appeal window. If no appeal, final; if appeal, professor reviews and records final mark.

Q4. Activity Diagram Analysis

14 pts

Given an activity diagram with a top fork into two concurrent branches. Left branch has a sequential activity A on one path and a decision leading to B or B→C→D on the other. Right branch has E, a decision to F or G (with G nested under F), and H. Branches join at the end.

a. F before G? b. C after D? c. F implies H? d. A and E both occur? e. A then C possible? f. min activities? g. max activities?

Q5. Architecture & Short Essays

20 pts

a. Choose an architectural pattern for a personal health app with sensors + analysis components; justify. b. Pattern for a photo-editor with a chain of filters; justify. c. Identify pattern in the airline reservation diagram (clients ↔ WAN ↔ central DB) with advantages / disadvantages.

Q6. Unit Testing — findMax(a,b,c)

20 pts
int findMax(int a, int b, int c) { int temp; if (a > b) temp = a; else temp = b; if (c > temp) temp = c; return temp; }

a. Expected-value oracles for (1,5,2), (1,5,5), (1,1,1). b. Draw CFG. c. Minimal test set for 100% statement coverage. d. Minimal test set for 100% branch coverage. e. T/F: branch coverage guarantees statement coverage. f. Compute cyclomatic complexity.

Q6-alt. Testing — doSomething(x, y) (Practice #2)

20 pts
int doSomething(int x, int y) { if (y > 0) print("y is positive"); while (y > 0) { if (x > 0) y = y - x; else x = x + 1; print("loop"); } return x + y; }

a. Draw CFG. b. Minimal set giving 100% statement but NOT 100% branch coverage. c. Minimal set giving 100% branch coverage. d. Cyclomatic complexity. e. What does "A subsumes B" mean?

Track Your Review

0 / 14 complete