ICS 52 - Systematic Software Construction
Fall, 1997

Midterm Exam



  1. (6 points each, 36 points total) Define each of the following terms, as used in software engineering.
    1. Module

    2. Process Model

    3. Abstract Data Type

    4. Separation of Concerns

    5. Robustness

    6. Abstraction

  2. (3 points) The textbook states that to achieve modular composability, decomposability, and understanding, modules must have (choose one)
    1. low cohesion and low coupling.
    2. low cohesion and high coupling.
    3. high cohesion and low coupling.
    4. high cohesion and high coupling.
    5. either (a) or (d).

  3. (3 points) Which of the following is not one of Boehm's Top 10 software risk items?
    1. Personnel shortfalls.
    2. Undue emphasis on requirements specification.
    3. Shortfalls in externally furnished components.
    4. Developing the wrong user interface.
    5. Gold plating.

  4. (3 points) Why would a class in Java contain a field designated as private (choose one)?
    1. So that it can be accessed by inherited classes.
    2. So that it retains its value for the life of the program.
    3. So that it cannot be accessed by code outside the class.
    4. For reasons of efficiency.
    5. Trick question: fields are not private, only classes are private.

  5. (21 points) Identify and briefly discuss three benefits of using the spiral model as opposed to the waterfall model.

  6. (10 points) A Java class can be declared ``abstract,'' as in
    abstract class Shape { . . . }.
    1. From the Java compiler's perspective, what are the implications of a class being abstract?

    2. From the software architecture point of view, why would the software architect decide to use an abstract class?

  7. (24 points) Suppose you decide to describe a car. You take a modular approach, where each module is a small cube 15 inches on a side. Discuss this modularization in terms of how strongly linked all of the elements within a module are (cohesion), and in terms of the interdependencies between modules (coupling). Draw general conclusions about how one should modularize a complex system.