25-Comp-B11 Advanced Software Design · December 2018
Question 14 of 28: Creational, Structural, and Behavioural Patterns
Nivaar worked solution (AI-drafted; not reviewed by a licensed engineer)
Notes on this paper
17-Comp-B11 Advanced Software Design — National Exams, December 2018. 3 hours, closed book exam with up to 2 aid sheets allowed (written on both sides), no calculator permitted. The paper is organized into five parts, and candidates were instructed to answer any five (5) questions in Part I, any three (3) in Part II, any four (4) in Part III, any two (2) in Part IV, and any five (5) in Part V — only the first questions answered, in each part, as they appear in the answer book are marked. All questions carry equal weight, so the 19 questions actually marked (5+3+4+2+5 of 28) each count for 100/19 ≈ 5.26% of the paper. All 28 questions are answered below for completeness.
Reference texts: Sommerville, Software Engineering (10th ed., Pearson) — software processes, requirements engineering, design principles, dependability; Pressman, Software Engineering: A Practitioner's Approach (9th ed.) — supplementary process and quality coverage; Gamma, Helm, Johnson & Vlissides (GoF), Design Patterns: Elements of Reusable Object-Oriented Software — creational/structural/behavioural pattern catalogue and the "program to an interface, not an implementation" / "favor object composition over class inheritance" principles; Sebesta, Concepts of Programming Languages (12th ed.) — polymorphism, dynamic binding, inheritance and language-level object semantics; Bertrand Meyer, Object-Oriented Software Construction — design by contract, preconditions/postconditions/invariants; Barbara Liskov's 1987 substitutability paper for Question 11; Karl Wiegers, Software Requirements (3rd ed.) — the functional/quality/process/implementation/business requirements taxonomy of Question 2; Kruchten, The Rational Unified Process: An Introduction, for Question 1; Myers, The Art of Software Testing, for Questions 6 and 28.
PART I — General Principles (answer any 5 of 7)
Question 14: Creational, Structural, and Behavioural Patterns (Part III)
Creational patterns are concerned with the PROCESS OF OBJECT CREATION itself — abstracting away how, when, and which concrete class gets instantiated (Singleton, Factory Method, Abstract Factory, Builder, Prototype). Their defining concern is CONTROLLING instantiation.
Structural patterns are concerned with how classes and objects are COMPOSED into larger structures (Adapter, Bridge, Composite, Decorator, Façade, Proxy). Their defining "shape" is a static COMPOSITION relationship between the participant classes.
Behavioural patterns are concerned with algorithms and the assignment of RESPONSIBILITY / communication between objects (Strategy, Observer, Command, Template Method, State, Iterator). Their defining "shape" is a runtime PROTOCOL of collaboration.
Creational example — Singleton. Its entire contribution is controlling instantiation: it ensures a class has exactly one instance and provides a single global access point to it. It says nothing about composing objects into a structure, nor about a runtime communication protocol — its purpose begins and ends at controlled, single instantiation.
Structural example — Proxy (Question 15). Proxy's core contribution is a static composition: a surrogate object implementing the same interface as its real subject. This is a wiring decision made once, at object-assembly time — it defines no creation policy and no multi-object runtime protocol.
Behavioural example — Observer (Questions 13, 16). Observer's core contribution is a runtime protocol: a subject notifies an open-ended set of registered observers whenever its state changes. The pattern is entirely about the assignment of responsibility and sequencing of communication AT RUNTIME — it says nothing about how the subject or observers were created, nor is it a static, fixed-role composition the way Proxy is.