James J. Horning

dblp:h/JamesJHorning · also Jim Horning · DBLP profile ↗
← Back
13ranked-venue papers
1as first author
0since 2021 · last 1994
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 9 · 1 first-authorTheory of computation · 4

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
6 papers
Requirements engineering and software design · 48% Program verification · 17% Program analysis · 15%
Theoretical computer science
1 paper
Logic in computer science · 100%

Topics — the 16 heaviest of 17, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Requirements engineering and software design
formal specification
0.031994
LCLint: A Tool for Using Specifications to Check Code · SIGSOFT FSE 1994
Synchronization Primitives for a Multiprocessor: A Formal Specification · SOSP 1987
Formal Specification as a Design Tool · POPL 1980
Requirements engineering and software design › inconsistency management
consistency checking
0.011994
LCLint: A Tool for Using Specifications to Check Code · SIGSOFT FSE 1994
Program verification
specification verification
0.011994
LCLint: A Tool for Using Specifications to Check Code · SIGSOFT FSE 1994
Program analysis
static analysis
0.011994
LCLint: A Tool for Using Specifications to Check Code · SIGSOFT FSE 1994
Requirements engineering and software design › specification
specification debugging
0.011990
Debugging Larch Shared Language Specifications · IEEE Trans. Software Eng. 1990
Concurrent programming › synchronization
synchronization primitives
0.011987
Synchronization Primitives for a Multiprocessor: A Formal Specification · SOSP 1987
Software maintenance and evolution › software maintenance
legacy code
0.011994
LCLint: A Tool for Using Specifications to Check Code · SIGSOFT FSE 1994
Software maintenance and evolution
software reengineering
0.011994
LCLint: A Tool for Using Specifications to Check Code · SIGSOFT FSE 1994
Logic in computer science
algebraic specification
0.011990
Debugging Larch Shared Language Specifications · IEEE Trans. Software Eng. 1990
Programming languages and type systems
language semantics
0.011980
Formal Specification as a Design Tool · POPL 1980
Program verification
predicate transformers
0.011980
Formal Specification as a Design Tool · POPL 1980
Requirements engineering and software design › specification
software specification
0.011980
Formal Specification as a Design Tool · POPL 1980
Concurrent programming
synchronization
0.011987
Synchronization Primitives for a Multiprocessor: A Formal Specification · SOSP 1987
Computing education
software engineering education
0.011977
Software Hut: A Computer Program Engineering Project in the Form of a Game · IEEE Trans. Software Eng. 1977
Empirical software engineering
controlled experiment
0.011975
Language Design for Programming Reliability · IEEE Trans. Software Eng. 1975
Programming languages and type systems
language design
0.011975
Language Design for Programming Reliability · IEEE Trans. Software Eng. 1975

Methods — techniques the papers use, named apart from their topics

formal specification · 0.0LSLC checker · 0.0LP theorem prover · 0.0static analysis · 0.0specification analysis · 0.0game-based learning · 0.0algebraic axioms · 0.0error frequency analysis · 0.0controlled experiment · 0.0
YearPublicationVenuePosition
1994 LCLint: A Tool for Using Specifications to Check Code
abstract
This paper describes LCLint, an efficient and flexible tool that accepts as input programs (written in ANSI C) and various levels of formal specification. Using this information, LCLint reports inconsistencies between a program and its specification. We also describe our experience using LCLint to help understand, document, and re-engineer legacy code.
David Evans 0001, John V. Guttag, James J. Horning, Yang Meng Tan
SIGSOFT FSE3
1993 Using Transformations and Verification in Circuit Design
James B. Saxe, James J. Horning, John V. Guttag, Stephen J. Garland
Formal Methods Syst. Des.2
1990 Debugging Larch Shared Language Specifications
abstract
The checkability designed into the LSL (Larch shared language) is described, and two tools that help perform the checking are discussed. LP (the Larch power) is the principal debugging tool. Its design and development have been motivated primarily by work on LSL, but it also has other uses (e.g. reasoning about circuits and concurrent algorithms). Because of these other uses, and because they also tend to use LP to analyze Larch interface specifications, the authors have tried not to make LP too LSL-specific. Instead, they have chosen to build a second tool, LSLC (the LSL checker), to serve as a front-end to LP. LSLC checks the syntax and static semantics of LSL specifications and generates LP proof obligations from their claims. These proof obligations fall into three categories: consistency (that a specification does not contradict itself), theory containment (that a specification has intended consequences), and relative completeness (that a set of operators is adequately defined). An extended example illustrating how LP is used to debug LSL specifications is presented.>
Stephen J. Garland, John V. Guttag, James J. Horning
IEEE Trans. Software Eng.3
1987 Synchronization Primitives for a Multiprocessor: A Formal Specification
abstract
Formal specifications of operating system interfaces can be a useful part of their documentation. We illustrate this by documenting the Threads synchronization primitives of the Taos operating system. We start with an informal description, present a way to formally specify interfaces in concurrent systems, give a formal specification of the synchronization primitives, briefly discuss the implementation, and conclude with a discussion of what we have learned from using the specification for more than a year.
Andrew Birrell, John V. Guttag, James J. Horning, Roy Levin
SOSP3
1986 Report on the Larch Shared Language
John V. Guttag, James J. Horning
Sci. Comput. Program.2
1986 A Larch Shared Language Handbook
John V. Guttag, James J. Horning
Sci. Comput. Program.2
1982 Some Notes on Putting Formal Specifications to Productive Use
John V. Guttag, James J. Horning, Jeannette M. Wing
Sci. Comput. Program.2
1980 Formal Specification as a Design Tool
abstract
The formulation and analysis of a design specification is almost always of more utility than the verification of the consistency of a program with its specification. Good specification tools can assist in this process, but have generally not been proposed and evaluated in this light. In this paper we outline a specification language combining algebraic axioms and predicate transformers, present part of a non-trivial example (the specification of a high-level interface to a display), and finally discuss the analysis of this specification.
John V. Guttag, James J. Horning
POPL2
1978 The Algebraic Specification of Abstract Data Types
John V. Guttag, James J. Horning
Acta Informatica2
1978 Proof Rules for the Programming Language Euclid
Ralph L. London, John V. Guttag, James J. Horning, Butler W. Lampson, James G. Mitchell, Gerald J. Popek
Acta Informatica3
1977 Software Hut: A Computer Program Engineering Project in the Form of a Game
abstract
The Software Hut (a small software house) is a course project designed for a graduate-level course in computer program engineering. This paper describes the Software Hut project and discusses the authors' experience using it in graduate courses at the University of Toronto. Suggestions for improvements in the project are given.
James J. Horning, David B. Wortman
IEEE Trans. Software Eng.1
1975 Language Design for Programming Reliability
abstract
The language in which programs are written can have a substantial effect on their reliability. This paper discusses the design of programming languages to enhance reliability. It presents several general design principles, and then applies them to particular languages constructs. Since the validity of such design principles cannot be logically proved, empirical evidence is needed to support or discredit them. A major experiment to measure the effect of nine specific language-design decisions in one context has been performed. Analysis of the frequency and persistence of errors shows that several decisions had a significant impact on reliability.
John D. Gannon, James J. Horning
IEEE Trans. Software Eng.2
1973 Efficient LR(1) Parsers
J. Eve, James J. Horning
Acta Informatica3