ICS 52 - Introduction to Software Engineering
Fall, 1999

Midterm Exam

  1. (5 points each, 30 points total) Define each of the following terms, as used in software engineering.
    1. Information Hiding

    2. Interoperability

    3. Feasibility Study

    4. Internal (describing a software quality)

    5. The IS_COMPONENT_OF relationship

    6. Module Interface (not Java's interface construct)

  2. (12 points) The book says ``Delivering on time a product that is lacking in other qualities, such as reliability or performance, is pointless.'' (See p. 33)

    Do you agree? Write a brief argument supporting your point of view.

    What are the implications of the point of view you expressed above on selecting and following a software process model?

  3. (14 points) Consider a small software development effort, a medium effort, a large effort, and an immense effort. For each effort, select a (different) software process model which was described in the book or in class, briefly describe the model, and explain why it is appropriate for this size development effort.

    1. Small (1 developer, 2 person-days).

    2. Medium (1 developer, 2 person-months)

    3. Large (6 developers, 72 person-months)

    4. Immense (20 developers, 480 person-months)

  4. (12 points) The book mentions Parnas' motto ``design for change.'' Select two software engineering qualities that would be positively affected by successfully designing for change, and explain the relationship between each quality and ``design for change.''

    Name a software quality on which ``design for change'' would have relatively little impact, and explain why.

  5. (12 points) Write, using Engligh prose, a brief descriptive specification for the functionality of a washing machine.

    Write, using English prose, an brief operational specification for a washing machine's function.

  6. (3 points) Which of the following Java language elements might correspond to the software engineering notion of a ``module''? (Choose one.)
    1. A class.
    2. A method.
    3. A package.
    4. A public static final variable.
    5. All of the above.

  7. (3 points) Traditionally, the only phase of software development where a formal approach is used is (choose one)
    1. Requirements.
    2. Programming.
    3. Design.
    4. Planning.
    5. Testing.

  8. (3 points) When a module M is decomposed into other modules, we say they are used to (choose one)
    1. Design M.
    2. Inherit from M.
    3. Implement M.
    4. Abstract M.
    5. Import M.

  9. (4 points) Which of the following are not approaches to evaluating system performance? (Choose two.)
    1. Abstraction.
    2. Measurement.
    3. Analysis.
    4. Prototyping.
    5. Simulation.

  10. (4 points) The primary sources of change in software are (choose two)
    1. Shortfalls in externally furnished components.
    2. Adaptive maintenance.
    3. Perfective maintenance.
    4. Corrective maintenance.
    5. The spiral model.

  11. (3 points) Which of the following activities could be associated with the lower right hand quadrant of the spiral model? (Choose one [except I made a mistake and there are two correct answers].)
    1. Prototyping and resolving risks.
    2. Determining objectives.
    3. Acceptance testing.
    4. Evaluating alternatives.
    5. Developing software requirements.