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.
A set of versions of a software product.
All elements (of a module) are strongly related.
(Of a software process) all steps and current status are documented clearly.
Specification that describes the intended behavior of a system.
A design strategy that is partly top-down and partly bottom-up.
Both . . .
export a type
have an interface
have an internal state
hide implementation details
are based on information hiding
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.
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).
Corrective -- to remove residual errors.
Adaptive -- to adjust to change in the environment.
Perfective -- to improve qualities or add functionality.
(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.
The correct pairings are shown on the same line.
| spiral model | risk driven |
| transformation-based | specification driven |
| waterfall | document driven |
| evolutionary | increment driven |