SENG 365 — Software Engineering
2026-07-24
Reading: Robillard, 3rd ed. — Ch. 8, Inversion of Control (pp. 193–239). (Concurrency material is supplementary.)
Observer/Observable in the JDK.Problem: support an open-ended number of operations on an object graph without changing the objects’ interface.
Visitor (Wikipedia)
accept().accept() method (the latter has direct iterator access).CardSource without bloating the interface (ISP, YAGNI).Class–Responsibility–Collaborators (Beck & Cunningham, OOPSLA 1989).
Apply CRC cards to design a library management system (separate from checkout/patron code): items (book/magazine/video), subject, purchase, author, condition.
Thread created off the main thread.Runnable.The biggest challenge is avoiding resource contention. Thread execution is non-deterministic.
Challenge: design a solution that prevents deadlock and starvation. What if everyone picks up their left chopstick?

Neil Ernst ©️