ICS 52 - Systematic Software Construction
Fall, 1997
Midterm Exam
- (6 points each, 36 points total)
Define each of the following terms, as used in software
engineering.
- Module
- Process Model
- Abstract Data Type
- Separation of Concerns
- Robustness
- Abstraction
- (3 points) The textbook states that to achieve modular
composability, decomposability, and understanding,
modules must have (choose one)
- low cohesion and low coupling.
- low cohesion and high coupling.
- high cohesion and low coupling.
- high cohesion and high coupling.
- either (a) or (d).
- (3 points) Which of the following is not one
of Boehm's Top 10 software risk items?
- Personnel shortfalls.
- Undue emphasis on requirements specification.
- Shortfalls in externally furnished components.
- Developing the wrong user interface.
- Gold plating.
- (3 points) Why would a class in Java contain a field
designated as private (choose one)?
- So that it can be accessed by inherited classes.
- So that it retains its value for the life of the program.
- So that it cannot be accessed by code outside the class.
- For reasons of efficiency.
- Trick question: fields are not private, only classes are private.
- (21 points) Identify and briefly discuss three benefits of using the
spiral model as opposed to the waterfall model.
- (10 points) A Java class can be declared ``abstract,'' as in
abstract class Shape { . . . }.
- From the Java compiler's perspective, what are the implications
of a class being abstract?
- From the software architecture point of view, why would
the software architect decide to use an abstract class?
- (24 points)
Suppose you decide to describe a car. You take a modular
approach, where each module is a small cube 15 inches on a side.
Discuss this modularization in terms of how strongly linked
all of the elements within a module are (cohesion),
and in terms of the interdependencies between modules (coupling).
Draw general conclusions about how one should modularize a
complex system.