Three Criteria for Designing Computing Systems to Facilitate Debugging The designer of a computing system should adopt explicit criteria for accepting or rejecting proposed system features. Three possible criteria of this kind are input recordability, input specifiability, and asynchronous reproducibility of output. These criteria imply that a user can, if he desires, either know or control all the influences affecting the content and extent of his computer's output. To define the scope of the criteria, the notion of an abstract machine of a programming language and the notion of a virtual computer are explained. Examples of applications of the criteria concern the reading of a time-of-day clock, the synchronization of parallel processes, protection in multiprogrammed systems, and the assignment of capability indexes. CACM May, 1968 Van Horn, E. C. computer design, computer design criteria, computer systems, computer systems design, input equipment, input equipment design, operating systems, operating systems design, multiprogramming, multiprogrammed systems, multiprogrammed system design, virtual computers, programming languages, programming language design, program semantics, programming language semantics, determinism, reproducibility, repeatability, deterministic computers, protection, memory protection, information security, information privacy, computing reliability, debugging, program debugging, program testing, parallel processing, parallel programming, multiprocessing 2.11 4.12 4.13 4.20 4.30 4.42 4.43 5.24 6.20 6.35 CA680509 JB February 23, 1978 9:06 AM 1458 4 1747 1523 4 1747 1603 4 1747 1698 4 1747 1747 4 1747 1748 4 1747 1854 4 1747 1877 4 1747 1960 4 1747 2377 4 1747 2378 4 1747 2497 4 1747 2558 4 1747 2625 4 1747 2632 4 1747 2840 4 1747 2941 4 1747 3105 4 1747 3144 4 1747 1471 5 1747 1747 5 1747 1747 5 1747 1747 5 1747 2151 5 1747 1653 6 1747 1747 6 1747 1860 6 1747