ICS 52 - Introduction to Software Engineering
Fall, 1998

Midterm Exam

  1. Define each of the following terms, as used in software engineering.
    1. Module

    2. Program Family

    3. High Cohesion

    4. Visibility (the software quality)

    5. Operational Specification

    6. Yo-yo Design

  2. (12 points) There are some similarities and differences between a class in Java and the Software Engineering concept of an Abstract Data Type (ADT).
    1. (6 points) Identify two similarities between Java classes and ADTs.

    2. (6 points) Identify two ways in which a valid Java class might not be a true ADT.

  3. (10 points) Requirements specifications can be used for different purposes. Describe two purposes.

  4. (6 points) Name and define three types of software maintenance.

  5. (14 points) Select two software qualities discussed in chapter 2 of the textbook or in lecture, and define them briefly. Describe a scenario in which the two qualities are in conflict -- that is, when achieving one quality is at the expense of the other. Carefully describe the source of the conflict.

  6. (4 points) Draw a line from each process model in the left column to the correct corresponding characterization in the right column.

    spiral model risk driven
    transformation-based specification driven
    waterfall document driven
    evolutionary increment driven

  7. (3 points) Which software quality may be viewed as ``low-grain evolvability, i.e., evolvability at the component level''? (Choose one.)
    1. reusability
    2. cohesion
    3. correctness
    4. reliability
    5. portability

  8. (3 points) When a module M is decomposed into other modules, we say that these are used to (choose one)
    1. interface M.
    2. abstract M.
    3. implement M.
    4. design M.
    5. export M.

  9. (3 points) In the spiral model, the upper right or northeast quadrant represents what activity in the software process? (Choose one.)
    1. Planning.
    2. Designing the product.
    3. Determining objectives.
    4. Developing.
    5. Evaluating alternatives.

  10. (3 points) A good design should have a USES graph with (choose one)
    1. levels of abstraction.
    2. low fan-out and high fan-in.
    3. high fan-out and low fan-in.
    4. transitive closure.
    5. an abstract (virtual) machine.

  11. (3 points) The characteristic that perhaps sets software apart from other engineering products the most is that software is (choose one)
    1. fragile.
    2. decomposable.
    3. robust.
    4. malleable.
    5. expensive.

  12. (3 points) Which of the following adjectives does not describe the waterfall model, according to the textbook? (Choose one.)
    1. Rigid.
    2. Monolithic.
    3. Linear.
    4. Cyclic.
    5. Ideal.