NivaarExam PrepOfficial exam papers ↗

25-Comp-B11 Advanced Software Design · December 2014

Question 1 of 26: Incremental vs. Iterative Development

Nivaar worked solution (AI-drafted; not reviewed by a licensed engineer)

Notes on this paper

98-Comp-B11 Advanced Software Design — National Exams, December 2014. 3 hours, closed book, no calculator permitted. The paper is organized into five parts, and candidates were instructed to answer any three (3) questions in Part I, any four (4) in Part II, any four (4) in Part III, any two (2) in Part IV, and any two (2) 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 15 questions actually marked (3+4+4+2+2 of 26) each count for 100/15 ≈ 6.7% of the paper. All 26 questions are answered below for completeness.

Reference texts: Sommerville, Software Engineering (10th ed., Pearson) — software processes, requirements engineering, agile methods, design principles; 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 — structural/behavioural pattern catalogue (Proxy, Bridge, Strategy, Observer, Template Method, Composite, etc.); Sebesta, Concepts of Programming Languages (12th ed.) — polymorphism, dynamic binding, inheritance and language-level object semantics (also underpins the Java/C++ discussion in Part V); Brown, Malveau, McCormick & Mowbray, AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis — anti-pattern catalogue (Question 18). Bertrand Meyer's Object-Oriented Software Construction is cited by name where the paper's own vocabulary (design by contract, open–closed principle) originates there; Barbara Liskov's 1987 substitutability paper is likewise cited by name for Question 11.

PART I — General Principles (answer any 3 of 5)

Question 1: Incremental vs. Iterative Development (Part I)

Question text not reproduced: the examination questions are © Engineers and Geoscientists BC. Open the official past paper (linked at the top of this page) to read the question, then follow the worked solution below.

The two words are often used together ("iterative and incremental development") but describe two independent axes of a process, and a process can be one without being the other.

Iterative means the process repeatedly revisits the same body of work, refining it across successive passes: each cycle produces a more complete or more correct version of essentially the whole system (or the whole of the current increment), rather than adding a functionally new piece. The classical example is Boehm's Spiral model, in which each loop around the spiral repeats the same four activities (determine objectives, evaluate risk, develop & verify, plan next iteration) against a growing but continuously-revisited understanding of requirements and design — risk is reduced by refining the same artifact repeatedly, not by shipping new pieces of it.

Incremental means the system is partitioned into pieces, and each increment adds a new, separately usable slice of functionality to what already exists — once delivered, an increment is not normally revisited. A staged-delivery process that ships "core order entry" in increment 1, "payment processing" in increment 2, and "reporting" in increment 3 is incremental: the scope of the whole system grows increment by increment, and each increment is (ideally) a working subset a user could actually use.

The two are usually combined in modern practice: Scrum is incremental (each sprint delivers a new, potentially shippable increment of functionality) and iterative (within a sprint, and across sprints, earlier work — design, code, even requirements understanding — is revisited and refined via the retrospective and backlog-grooming cycle). By contrast, classical single-pass Waterfall is neither: it partitions the process into sequential PHASES (requirements → design → build → test), not into functional increments, and each phase is meant to be completed once, not revisited.

← Paper overview