Winter 2026 · University of Toronto · Faculty of Applied Science & Engineering
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
Section I
When & Where
Format
Typical point breakdown
| Q | Topic | Pts |
|---|---|---|
| 1 | UML Class Diagram | 15 |
| 2 | UML Sequence Diagram | 14–16 |
| 3 | UML Statechart | 15 |
| 4 | UML Activity Diagram | 14–16 |
| 5 | Architecture OR Short Essays | 20 |
| 6 | Software / Structural Testing | 20 |
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").
Overview
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.
Lecture II
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.
Fig. 2 — V-Model: analysis/design on the left, unit/integration/system/acceptance testing on the right.
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.
Lecture III
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).
Externally-visible properties: functional (inputs/outputs, interfaces, response to input) and quality / non-functional (performance, security, availability, modifiability, testability, usability).
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
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).
Lecture IV
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."
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 = 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.
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.
Lecture V + IX
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.
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.
Lecture V-B + V-C
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.
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.
Lecture VI Exam Q1 — 15 pts
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.
| Relationship | Arrow | Meaning |
|---|---|---|
| Inherits (class) | Solid line, white triangle | Is-a. Points to parent. |
| Inherits (abstract) | Solid line, white triangle, parent italic | Is-a, parent cannot be instantiated. |
| Implements (interface) | Dashed line, white triangle | Realises interface. Can implement many. |
| Association | Plain line + multiplicity | Uses / knows-about. |
| Aggregation | Line with white diamond at container | Has-part. Parts may outlive whole. |
| Composition | Line with filled diamond at container | Strong has-part. Parts die with whole. |
| Dependency | Dashed arrow, e.g. «create» | Uses temporarily. |
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.
Lecture VI-B Exam Q2 — 14–16 pts
A sequence diagram models a single scenario — the dynamic view of how objects collaborate over time.
| Type | Arrow |
|---|---|
| Synchronous call | Solid line, filled arrowhead |
| Asynchronous call | Solid line, stick arrowhead |
| Return | Dashed line, stick arrowhead |
| Create | Arrow labelled new into a new participant box placed lower on the page |
| Destroy | Large X at the bottom of the lifeline |
Control style signals: many short activations spreading off one object → centralised ("fork" shape). Activations chaining down objects → distributed ("stair-step" shape).
Sequence diagram recipe
Lecture VIII-A Exam Q3 — 15 pts
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.
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.
Lecture VIII-B
LTL expresses properties of a single infinite trace. Model checking computes model ⊨ property; if false, you get a counter-example trace.
| Symbol | Name | Reads |
|---|---|---|
| □f / G f | Globally / henceforth | f holds in this and all future states. |
| ◊f / F f | Eventually | f holds now or in some future state. |
| ○f / X f | Next | f holds in the very next state. |
| f U g | Until | g eventually holds, and f holds at every state until g. Implies ◊g. |
| f W g | Weak until / unless | f holds indefinitely OR until g. f W g ≡ (f U g) ∨ □f. |
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.
Lecture VIII-C Exam Q4 — 14–16 pts
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.
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.
Lecture X + XI-A Exam Q6 — 20 pts
"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.
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.
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.
The two are complementary — structural testing fills gaps in functional tests.
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.
Lecture XII-A Always on Q6
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.
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.
Fig. 4 — V(G) = E − N + 2 · independent paths through the CFG.
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.
Practice Exam
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.
"Create a class diagram that describes the classes and their relationships based on the following scenario description for the pharmacies information system."
Model Answer
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.
Model Answer
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.
Model Answer
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?
Model Answer (justify each)
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.
Model Answer
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.
Model Answer
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?
Model Answer
Study Checklist
0 / 14 complete