We can discuss them in term of: Usability, Facilities, Cost, and Adaptability.
Usability:
- Robustness
OS accept all valid inputs withour error, and gracefully handle all invalid inputs. OS would not be crashed in any circumtances, and could be recovered in the case that we suddenly remove hardware while they are running, or lost of power supplied.
- Consistency
For example, if "-" means options flags in one place, it means it in another. The key idea is conventions. We should base on the concept: The Principle of Least Astonishment. This helps us easy to understand and adapt with the new system.
- Proportionality Simple, cheap and frequent things are easy. Also, expensive and disastrous things are hard.
- Forgiving Errors can be recovered from. Reasonable error messages. Example from "rm"; UNIX vs. TOPS.
- Convenient Not necessary to repeat things, or do awkward procedures to accomplish things. Example copying a file took a batch job.
- Powerful Has high level facilities.
Facilities
- The system should supply sufficient for intended use
- The facilities is complete, don’t leave out any part of a facility.
- Appropriate, e.g. do not use fixed-width field input from terminal
Cost
- Want low cost and efficient services.
- Good algorithms. Make use of space/time tradeoffs, special hardware.
- Low overhead. Cost of doing nothing should be low. E.g., idle time at a terminal.
- Low maintenance cost. System should not require constant attention.
Adaptability
- Tailored to the environment. Support necessary activities. Do not impose unnecessary restrictions. What are the things people do most -- make them easy.
- Changeable over time. Adapt as needs and resources change. E.g., expanding memory and new devices, or new user population.
- Extendible-Extensible: Adding new facilities and features - which look like the old ones.







