ICS 52 - Systematic Software Construction
Winter, 1998

Midterm Exam

    1. (4 points) Briefly describe the Year 2000 problem.
      The Y2K problem arises in computer systems that store just the last two digits of the year, making the assumption that the first two digits are ``19''. This assumption breaks down in the year 2000. For example, some credit cards with expiration dates 01/00 are being treated as having expired 98 years ago. A more general version of the problem arises whenever an insufficiently large field is used to store a date or time.

    2. (4 points) Which one of the desirable software qualities described in Chapter 2 of the textbook is most lacking from systems which exhibit the Year 2000 problem?
      4 pts: Robustness. 3pts: Evolvability, reliability, correctness, repairability, design for change. 2 pts: modularity, safety, adaptability.

    3. (8 points) Define the quality you proposed in 1(b) and explain why a system with the Year 2000 problem lacks this quality.
      Robustness is behaving reasonably under unanticipated circumstances. Correct system functioning with dates after 1999 may not have been explicitly stated in a system's requirements, but a robust system will still behave correctly when the century changes.

    1. (7 points) Define the quality ``correctness'' as used in Software Engineering.
      Behaves according to specifications.

    2. (7 points) Define the quality ``reliability'' as used in Software Engineering.
      Software is reliable if the user can depend on it.
    3. (6 points) Discuss the relationship between correctness and reliability.
      A system may still be reliable, even if it is incorrect in relatively minor ways. (Users can discount or ignore known bugs.) A system can be correct but not reliable, particularly if the specifications are unknown to or confusing to the user.

  1. In the section ``Module secrets and design for change'' the textbook says
    To maximize evolvability, the interface of a module should export the minimum possible amount of detail.
    Define the following terms, as used in this sentence:

    1. (6 points) Evolvability.
      The ability of a software system or module to be changed repeatedly over time and still maintain other desirable software qualities such as correctness and repairability.

    2. (6 points) Module.
      Hides a secret; communicates through well-defined interfaces; a provider of computational resources or services.

    3. (6 points) The interface of a module.
      The mechanism (public methods or variables) through which a module provides services or information to its clients.

    4. (6 points) Export.
      Make available to other modules.

    (6 points) Explain why having a module interface that exports the minimum possible amount of detail will maximize evolvability. (Make sure your answer focusses on ``why'' and doesn't repeat your definitions.)

    The reason has to do with minimizing coupling and maximizing cohesion. The less detail is in the module's interface, the more flexibility exists in the implementation of the module. A simple interface with few details makes it more likely that the module's clients will not have to change when the module does. It is easier to test and understand a module when the interface has fewer details.

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

    Still working on this one, folks!

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

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

  5. (3 points) Because it is difficult to achieve complete specifications, the use of which Software Engineering principle is especially important in deriving specifications? (Choose one.)
    1. Incrementality.
    2. Timeliness.
    3. User friendliness.
    4. Correctness.
    5. Formality.

  6. (3 points) Which of the following is not a shortcoming of stepwise refinement, according to the textbook? (Choose one.)
    1. It is intrinsically a bottom-up method.
    2. No attention is paid to data.
    3. Subproblems tend to be analyzed in isolation.
    4. No attention is paid to information hiding.
    5. The top function may not exist.

  7. (3 points) In the case of highly critical real-time systems, what term is often used to denote the absence of undesirable behaviors that can cause system hazards? (Choose one.)
    1. Safety.
    2. Correctness.
    3. Timeliness.
    4. Availability.
    5. Security.

  8. (15 points) Fill in the boxes of the waterfall process model below. Since there are different versions, you don't need to use exactly six boxes; a full credit answer might use more or fewer.

    See the overheads, p. 7 in the textbook, p. 361 in the textbook, and p. 372 in the textbook for four different versions. Points off as follows for missing steps: -2 for testing, maintenance, integration and systems test; -3 for other missing steps; -2 for wrong order.