Screening exam questions for CSCI 5300—Software Design

Based on content for Spring 2004and Spring 2005 versions of class [instructor: Phil].

Define and explain the significance of the following terms.

stamp coupling

refactoring

future (i.e., in the context of nonblocking systems design)

constructor method

iterator class

façade

dominance

broker

content coupling

control coupling

model-view-controller

temporal cohesion

logical cohesion

upcasting

sequential cohesion

opaque reference

procedural cohesion

Identify the Following Design Patterns (patterns adapted from sern.ucalgary.ca/courses/SENG/609.04/W98/)

This pattern ecouples an abstraction from its implementation, typically for the purpose of varying the implementation..


This pattern supports recursive data structures, like trees.



This is one version of apattern that supports client notification of events of interest.

This pattern breaks the construction of an object into parts, decoupling the construction of a part from the logic that makes it.


This pattern, one of two wrapper class patterns, provides a unified…possibly simplified…interface to classes


This pattern allows an object to act as a substitute for another object, fielding requests on the second object’s behalf.


Short Answer

Explain the purpose of, or give one typical application for, the bridge design pattern.

Explain the purpose of, or give one typical application for, the composite design pattern.

Explain the purpose of, or give one typical application for, the builder design pattern.

Explain the purpose of, or give one typical application for, the factory design pattern.

Page-Jones distinguishes between four kinds of classes—foundation classes, architectural classes, business classes, and application classes. What practical rationale does Page-Jones cite for this distinction?

And what exactly does the ordering among these four sets of classes reflect?

C++ supports two ways of making a class abstract. Name them.

Is RTTI, as a rule, a sign of a good design? Justify your answer. If you say yes, state one strategy for promoting RTTI; if not, one strategy for removing it.

How does the principle of information hiding differ from the principle of encapsulation?

State the conditions that the principle of substitutability imposes on the relationship between a class FOO and a derived class BAR, relative to a public method in FOO, FOO::M.

State the principle of once and only once, as it relates to software design—and briefly explain its importance.

Is high fan-in a sign of a good design? What about high fan-out? In each case, justify your answer.

When a designer is defining a method’s purpose, and specifying that method’s interface, what goals should the designer strive for? Why?

How is the software design process jeopardized by requirements that are not sufficiently precise? that are overly precise?

Name and describe the five defining characteristics of an object.

What do abstract classes and interface classes have in common? How do they differ?

How does the use of floating point impact low-level design?