scispace - formally typeset
Search or ask a question

Showing papers in "Software - Practice and Experience in 1987"



Journal ArticleDOI
TL;DR: A general‐purpose browser for directed graphs is described, which provides operations to examine and edit graphs and to generate a layout for a graph automatically that minimizes edge crossings.
Abstract: A general-purpose browser for directed graphs is described. The browser provides operations to examine and edit graphs. An operation is also provided to generate a layout for a graph automatically that minimizes edge crossings. Two layout algorithms were implemented. A hierarchical graph layout algorithm was found to be best for directed graphs. The graph browser also has facilities that allow it to be integrated with other applications (e.g., a program browser or a database design tool). These facilities and our experiences building a program call-graph browser are described.

134 citations






Journal ArticleDOI
Rob Pike1
TL;DR: Sam is an interactive multi‐file text editor intended for bitmap displays where a textual command language supplements the mouse‐driven, cut‐and‐paste interface to make complex or repetitive editing tasks easy to specify.
Abstract: Sam is an interactive multi-file text editor intended for bitmap displays. A textual command language supplements the mouse-driven, cut-and-paste interface to make complex or repetitive editing tasks easy to specify. The language is characterized by the composition of regular expressions to describe the structure of the text being modified. The treatment of files as a database, with changes logged as atomic transactions, guides the implementation and makes a general ‘undo’ mechanism straightforward. Sam is implemented as two processes connected by a low-bandwidth stream, one process handling the display and the other the editing algorithms. Therefore it can run with the display process in a bitmap terminal and the editor on a local host, with both processes on a bitmap-equipped host, or with the display process in the terminal and the editor in a remote host. By suppressing the display process, it can even run without a bitmap terminal.

62 citations


Journal ArticleDOI
TL;DR: A secure programming language called Joyce based on CSP and Pascal that permits unbounded (recursive) activation of communicating agents and is illustrated by a variety of examples.
Abstract: This paper describes a secure programming language called Joyce based on CSP and Pascal. Joyce permits unbounded (recursive) activation of communicating agents. The agents exchange messages through synchronous channels. A channel can transfer messages of different types between two or more agents. A compiler can check message types and ensure that agents use disjoint sets of variables only. The use of Joyce is illustrated by a variety of examples.

62 citations




Journal ArticleDOI
TL;DR: A modification to the garbage collector is suggested which solves this problem in some cases and related work is discussed.
Abstract: Some functional programs may use more space than would be expected. A modification to the garbage collector is suggested which solves this problem in some cases. Related work is discussed.

Proceedings ArticleDOI
TL;DR: In this article, le modele du pendule is used for decrire le mouvement du trepan, integre les effets de frottement en fonds de puits and a description simplifiee du train de tige.
Abstract: Le modele du pendule est utilise pour decrire le mouvement du trepan. La modelisation integre les effets de frottement en fonds de puits et une description simplifiee du train de tige. L'amortissement des oscillations et le controle de la vitesse de rotation du trepan sont discutes. Les valeurs du couple calculees sont comparees a celles mesurees sur le terrain


Journal ArticleDOI
TL;DR: A brief introduction to object‐oriented programming and how it is supported by the C+ + programming language is given and two of the class library's more interesting features, object I/O and processes are described.
Abstract: The Object-Oriented Program Support (OOPS) class library is a portable collection of classes similar to those of Smalltalk-80 that has been developed using the C++ programming language under the UNIX operating system. The OOPS library includes generally useful data types, such as String, Date and Time, and most of the Smalltalk-80 collection classes such as OrderedCtn (indexed arrays), LinkedList (singly linked lists), Set (hash tables), and Dictionary (associative arrays). Arbitrarily complex data structures comprised of OOPS and user-defined objects can be stored on disk files or moved between UNIX processes by means of an object I/O facility. The classes Process, Scheduler, Semaphore and SharedQueue provide multiprogramming with coroutines. This paper gives a brief introduction to object-oriented programming and how it is supported by the C+ + programming language. An overview of the OOPS library is also presented, followed by a programming example. The implementation details of two of the class library's more interesting features, object I/O and processes, are described. The paper concludes with a discussion of the differences between the OOPS library and Smalltalk-80 and some observations based on our programming experience with C++ and OOPS.



Journal ArticleDOI
TL;DR: AIDA is an automated instrumentation system to perform data flow analysis for Pascal programs capable of detecting not only data flow anomalies, but also certain kinds of errors.
Abstract: This paper presents a description of, and experience in using, AIDA, an automated instrumentation system to perform data flow analysis for Pascal programs. AIDA is capable of detecting not only data flow anomalies, but also certain kinds of errors. It is a useful software testing and development tool for Pascal programs. The associated implementation problems and their solutions are presented.

Journal ArticleDOI
TL;DR: Computing facilities networked together but controlled by different administrations pose a problem of access control: who decides who can use what?
Abstract: SUMMARY Computing facilities networked together but controlled by different administrations pose a problem of access control. Who decides who can use what? We specify a formal model for an access control system which allows users and services from different administrations to communicate with each other, while still allowing the administrators to retain control of their own parts of the network. The model, written in the Z specification language, has been developed as the access control system for ADMIRAL, though it is not specific to ADMIRAL. It provides a framework for administrators to build access control systems to meet their differing requirements. A system based on the model would allow users to log in to a distributed computing system and to make requests for services in any part of the system, without having to provide any more information about themselves. After this initial log in all subsequent access control decisions are handled automatically, and remain invisible to the user unless access is refused. We also discuss the experience we have had animating this model in Prolog.



Journal ArticleDOI
TL;DR: The DEMOS/MP operating system has moved from a supercomputer with a simple addressing structure to a network of microcomputers without significant changes to the semantics of the original DEMOS.
Abstract: The DEMOS/MP operating system has moved from a supercomputer with a simple addressing structure to a network of microcomputers. This transformation was done without significant changes to the semantics of the original DEMOS, i.e. existing DEMOS programs should run on DEMOS/MP. The changes to DEMOS were simplified by the structure of its primitive objects and the functions over those objects. The structure of DEMOS links and processes were the major contributors to the simplicity. The changes made to produce DEMOS/MP involved the internal structure of link, modification to parts of the kernel, and limited changes to the various system processes.



Journal ArticleDOI
TL;DR: The combined use of user‐defined infix operators and higher order functions allows the programmer to invent new control structures tailored to a particular problem area.
Abstract: The combined use of user-defined infix operators and higher order functions allows the programmer to invent new control structures tailored to a particular problem area. This paper is to suggest that such a combination has beneficial effects on the ease of both writing and reading programs, and hence can increase programmer productivity. As an example, a parser for a simple language is presented in this style. The compactness of this parser and its notational similarity to the BNF of the language are important advantages of the approach taken. It is hoped that the presentation will be palatable to people unfamiliar with the concepts of functional programming.



Journal ArticleDOI
TL;DR: Two mechanisms – reproduction sets and metafiles – that provide low‐cost, semi‐automatic file replication and location transparency facilities for an interconnected collection of machines running Berkeley Unix are described.
Abstract: This paper describes two mechanisms – reproduction sets and metafiles – that provide low-cost, semi-automatic file replication and location transparency facilities for an interconnected collection of machines running Berkeley Unix. A reproduction set is a collection of files that the system attempts to keep identical; this is done on a ‘best effort’ basis, with the system relying on the user to handle unusual situations. A metafile is a special file that contains symbolic pathnames of other files, each of which may be on any machine in the network; opening a metafile results in opening an available constituent file. Examples are given to illustrate the use of these mechanisms. Their implementation and performance are also described.



Journal ArticleDOI
Matt Bishop1
TL;DR: A method for monitoring the execution of a program, and gathering relevant statistics during the run, and its advantages and disadvantages are discussed.
Abstract: Profiling under UNIX is done by inserting counters into programs either before or during the compilation or assembly phases. A fourth type of profiling involves monitoring the execution of a program, and gathering relevant statistics during the run. This method and an implementation of this method are examined, and its advantages and disadvantages are discussed.