ICS 52 - Introduction to Software Engineering
Fall, 1998

Midterm Exam

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

      Hides a secret; communicates through a well-defined interface; a software fragment; a provider of computational resources or services; a collection of routines, data, objects.

    2. Program Family

      A set of versions of a software product.

    3. High Cohesion

      All elements (of a module) are strongly related.

    4. Visibility (the software quality)

      (Of a software process) all steps and current status are documented clearly.

    5. Operational Specification

      Specification that describes the intended behavior of a system.

    6. Yo-yo Design

      A design strategy that is partly top-down and partly bottom-up.

  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.

      Both . . .
      export a type
      have an interface
      have an internal state
      hide implementation details
      are based on information hiding

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

      It might have just functions, no internal data or state, like java.util.Math or Debug from homework 2.
      It might be a user interface element, such as a frame.
      It might have public data members, which violates the principal of information hiding.
      It might use inheritance.
      It might be abstract, and therefore incapable of being instantiated.

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

    From Section 5.1:
    Statement of user needs.
    A statement of the requirements for the implementation.
    A reference point during product maintenance.
    Also:
    Serves as a contract between the developers and the customers.
    For verifying the implementation (acceptance test plan).

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

    Corrective -- to remove residual errors.
    Adaptive -- to adjust to change in the environment.
    Perfective -- to improve qualities or add functionality.

  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.

    (3 points for each definition, 8 points for the scenario and descriptions.)

    Two good pairs are portability and performance (Java's .class files and virtual machine architecture gain portability at the expense of performance) and correctness and timeliness (projects often sacrifice correctness to ensure timeliness).

    Answers that just described a situation in which software had one quality but not another generally received about half credit in this section.

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

    The correct pairings are shown on the same line.

    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 (see p. 53)
    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. implement M. (see p. 64)
    2. interface M.
    3. abstract 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. Evaluating alternatives.
    2. Planning.
    3. Designing the product.
    4. Determining objectives.
    5. Developing.

  10. (3 points) A good design should have a USES graph with (choose one)
    1. low fan-out and high fan-in. (see p. 77)
    2. levels of abstraction.
    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. malleable. (see p. 17)
    2. fragile.
    3. decomposable.
    4. robust.
    5. expensive.

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