ICS 52 - Systematic Software Construction
Fall, 1997

Final Exam

  1. (5 points each, 25 points total) Define each of the following terms, as used in software engineering.
    1. Testing Oracle

    2. Abstract Data Type

    3. Integration Testing

    4. Verification

    5. Design for Change

  2. (2 points) White box testing is another name for (choose one)
    1. specification-based testing.
    2. structural testing.
    3. verification.
    4. black box testing.
    5. none of the above.

  3. (2 points) If you select test cases so that every branch in the program's control flow is executed at least once, then you are (choose one)
    1. using the spiral process model.
    2. following the node coverage criterion for test cases.
    3. following the edge coverage criterion for test cases.
    4. guaranteed to catch all bugs in the program.
    5. always going to need an infinite number of test cases.

  4. (2 points) Which one of the following is not a reason for software maintenance?
    1. Adapting to new performance requirements.
    2. Adapting to new environmental requirements.
    3. Correcting errors.
    4. It's required every six months or 6,000 lines of code under the manufacturer's warranty.
    5. Revising in accordance with new functional requirements.

  5. (2 points) The set of services that each module provides is called its (choose one)
    1. interface.
    2. USES hierarchy.
    3. secret.
    4. resource.
    5. private data members.

  6. (2 points) A significant test case is a test case that (choose one)
    1. is listed in the acceptance test plan.
    2. is used for black-box testing.
    3. falls into a sub-domain.
    4. satisfies the complete coverage principle.
    5. has a high potential to uncover the presence of an error.

  7. (2 points) A module X's client is (choose one)
    1. another module that provides services to X.
    2. a module that is above X in the inheritance hierarchy.
    3. another module that uses services that X provides.
    4. any other module in the same USES diagram.
    5. another class defined inside of X (``inner class'' in Java).

  8. (6 points) There is a testing technique called ``Control Flow Coverage.''
    1. Briefly describe the technique.

    2. Is this a white-box technique or a black-box technique?

    3. What similar technique is Control Flow Coverage more thorough than?

    4. Under what circumstances would you not be able to use this technique?

  9. (4 points) Describe in a few words each the four quadrants of the spiral model.
    1. Upper left (northwest).
    2. Upper right (northeast).
    3. Lower right (southeast).
    4. Lower left (southwest).

  10. (10 points) According to the Scientific American article, ATAMS was successful because it ``combined several techniques that were shown years ago to produce better software faster.'' Name and briefly describe three of those techniques.

    Choose one of the three techniques you listed and explain why it can ``produce better software faster.''

  11. (8 points) In Java, object-oriented inheritance is indicated through the extends and implements keywords. Describe the potential advantages of inheritance in light of the following general Software Engineering principles.

    1. Separation of Concerns.
    2. Abstraction.
    3. Anticipation of Change.
    4. Incrementality.

  12. (15 points) Dijkstra has written ``Program testing can be used to show the presence of bugs, but never to show their absence.''
    1. Explain what this statement means. By ``bugs'' you think Dijkstra means errors, faults, or failures, or all three? Include in your explanation brief definitions of errors, faults, and failures.

    2. In light of this statement, why do any testing at all?

  13. (10 points) The user, Mary, agrees to a Requirements Specification. When the implementation is delivered, Mary agrees that the software mostly matches the Specification, but says that the system isn't what she had in her mind, because the Specification was incomplete and the programmers interpreted some ambiguous statements in the wrong way. Discuss the relationship between verification and validation, as it pertains to this situation.

  14. (10 points) Describe the code-and-fix process model. Discuss its strengths and weaknesses.