Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Ronald A. Olsson

dblp:90/1985 · DBLP profile ↗
← Back
52ranked-venue papers
14as first author
0since 2021 · last 2018
0000-0003-0725-5180ORCID · verified

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

Software engineering, systems software and programming languages · 27 · 8 first-authorSystems, architecture and hardware · 20 · 5 first-authorSecurity and privacy · 2Databases, data management, data science and information retrieval · 2 · 1 first-authorTheory of computation · 2 · 1 first-author

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
4 papers
Software maintenance and evolution · 65% Programming languages and type systems · 27% Software testing · 8%
Network and information security
2 papers
Network security · 100%
Computer architecture, parallel and distributed computing, and storage systems
2 papers
Distributed systems · 100%
Computer networks
1 paper
Routing and switching · 77% Network management and operations · 23%

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

TopicWeightPapersLastEvidence papers
Software maintenance and evolution › reverse engineering
design pattern detection
0.112006
Reverse Engineering of Design Patterns from Java Source Code · ASE 2006
Software maintenance and evolution
program comprehension
0.112006
Reverse Engineering of Design Patterns from Java Source Code · ASE 2006
Programming languages and type systems
concurrent programming languages
0.012004
JR: Flexible distributed programming in an extended Java · ACM Trans. Program. Lang. Syst. 2004
Routing and switching › routing
secure routing
0.011998
Detecting Disruptive Routers: A Distributed Network Monitoring Approach · S&P 1998
Network security › network measurement
network monitoring
0.011998
Detecting Disruptive Routers: A Distributed Network Monitoring Approach · S&P 1998
Distributed systems
distributed programming
0.022004
JR: Flexible distributed programming in an extended Java · ACM Trans. Program. Lang. Syst. 2004
An Overview of the SR Language and Implementation · ACM Trans. Program. Lang. Syst. 1988
Network security › intrusion detection and prevention
intrusion detection
0.011996
A Methodology for Testing Intrusion Detection Systems · IEEE Trans. Software Eng. 1996
Software testing › test optimization
test case selection
0.011996
A Methodology for Testing Intrusion Detection Systems · IEEE Trans. Software Eng. 1996
Distributed systems
remote procedure call
0.012004
JR: Flexible distributed programming in an extended Java · ACM Trans. Program. Lang. Syst. 2004
Network management and operations › fault management
fault diagnosis
0.011998
Detecting Disruptive Routers: A Distributed Network Monitoring Approach · S&P 1998
Programming languages and type systems
distributed programming languages
0.011988
An Overview of the SR Language and Implementation · ACM Trans. Program. Lang. Syst. 1988

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

static program analysis · 0.1conservation of flow · 0.0user-simulation scripts · 0.0record-and-replay · 0.0record and replay · 0.0semaphores · 0.0rendez-vous · 0.0remote procedure call · 0.0multicast · 0.0asynchronous message passing · 0.0
YearPublicationVenuePosition
2018 Reducing distributed JR program start-up time via extending JR's operation abstraction
abstract
Summary This paper shows how to simplify and speed up distributed JR program start‐up. We accomplish this goal by extending JR's operation abstraction so that it includes the creation of virtual machines and remote objects, the key components in distributed JR programs. This extension is conceptually simple, fits well with the rest of the JR language, and provides additional flexibility. Extending JR's operation abstraction yields a considerably less complex solution and a simpler implementation than other approaches, which would have led to redundant or ad‐hoc language mechanisms. The extension also allows for reduced distributed JR program start‐up costs because the creation of virtual machines and remote objects can now be done in parallel. This paper also describes how we have simulated this extension and have implemented a prototype that provides this extension. These reflect closely what we would need to do to actually include the extension within the standard JR implementation. Using the simulation and prototype, we obtained performance data on a few typical distributed applications written to use the extension. The data show large reductions, ranging from about 50% to 95%, in distributed JR program start‐up times. Our experiments also explored a few strategies to further reduce start‐up times, but, among our strategies, the straightforward strategies seem the best. This paper also discusses design alternatives for creating virtual machines and remote objects. Our experience suggests that the proposed extension to JR's operation abstraction is actually worthwhile to add to the standard JR language and implementation.
Ronald A. Olsson, Aaron W. Keen, Todd Williamson
Concurr. Comput. Pract. Exp.1
2016 RJ: a Java package providing JR-like concurrent programming
abstract
Summary The JR concurrent programming language extends Java with a richer concurrency model, by adding several new types and statements. JR provides dynamic remote virtual machine creation, dynamic remote object creation, remote method invocation, dynamic process creation, rendezvous, asynchronous message passing, semaphores, concurrent invocation, and shared variables. This paper presents RJ, a package for Java that provides JR‐like features. The paper gives an overview of RJ and its key features; describes the implications of RJ's design, including how RJ provides additional, useful flexibility; discusses the implementation of RJ; and gives qualitative and quantitative evaluations of our work with respect to feasibility and usability, experimentation, migration, and performance. RJ has been successful in meeting these goals and in providing insight into the trade‐offs between using a concurrent programming language versus using the equivalent concurrent package. Our work has yielded a few surprises in dealing with some concurrent programming language features, in understanding the run‐time performances of JR versus RJ programs, and in obtaining some additional, useful flexibility for concurrent programming applications. Copyright © 2015 John Wiley & Sons, Ltd.
Ronald A. Olsson, Todd Williamson
Softw. Pract. Exp.1
2015 User accessible reply capabilities in invoking and servicing operations
abstract
Summary Many message passing languages and packages include some form of synchronous invocation. In a synchronous invocation, the invoker waits for the invocation's servicer to pass back results. A synchronous invocation can be viewed as a pair of asynchronous invocations: one—initiating the computation—with parameter values from the invoker to the servicer and the other—once the requested computation has completed—with the ‘go‐ahead’ and return value from the servicer to the invoker. The target of the latter invocation is known as thereply operation, and a reference to it is known as areply capability. This paper addresses the issues of making such reply capabilities directly accessible to user code. It presents the design and prototype implementation of a new version of the JR concurrent programming language, called xJR, in which the reply capability can be explicit. This paper gives xJR examples, including realistic ones, to highlight the additional flexibility the new features offer (such as a non‐lexical reply). These additional features do not impact the run‐time performance of existing JR features and can even lead to more efficient code in some programming scenarios. Our experience with the prototype implementation indicates that an actual implementation would be fruitful and would preserve the prototype's performance advantages. Copyright © 2015 John Wiley & Sons, Ltd.
Ronald A. Olsson, Aaron W. Keen
Concurr. Comput. Pract. Exp.1
2015 Transformations for early reply and forward message passing mechanisms
abstract
Summary Message passing notations (language, package, etc.) typically include some form of asynchronous or synchronous invocation. In a synchronous invocation, the invoker waits for the invocation's servicer to pass back results. Some message passing notations also include early reply or deferred reply (including forwarding), which alters how and when the servicer passes back its results; this additional flexibility is useful in realistic applications. It is well known how to transform a synchronous invocation into only asynchronous invocations. This paper extends such transformations to early reply and forward. This paper also describes the use of these transformations within the implementations of programming notations. Using the transformation simplifies the implementation without significantly affecting run‐time costs. Copyright © 2015 John Wiley & Sons, Ltd.
Ronald A. Olsson, Aaron W. Keen, Todd Williamson
Concurr. Comput. Pract. Exp.1
2014 PySy: a Python package for enhanced concurrent programming
abstract
SUMMARY Over the last decade, the popularity of Python has increased considerably. Python is widely used and has been demonstrated to be effective over many problem domains including scripting, prototyping, and simulation. Python's easy to use and concise syntax is highly expressive and allows a developer to create considerably shorter and easier to understand programs than semantically equivalent programs written in languages like C, C++, or Java. An important aspect of any language's flexibility is a highly parallelizable environment that allows its users to write concurrent programs. However, Python is still lacking a high‐level, expressive concurrent and distributed programming environment. This paper presents our experience creating PySy, a Python package (on the basis of the SR and JR concurrent programming languages), which provides an easy to use and expressive concurrent environment and allows for the distributed sharing of resources. This paper discusses our design decisions, describes our implementation, and shows qualitative and quantitative analyses of well‐known concurrent programs written in PySy. Overall, PySy is reasonable to use for expressing the more common programming scenarios, while it provides acceptable performance. Copyright © 2012 John Wiley & Sons, Ltd.
Todd Williamson, Ronald A. Olsson
Concurr. Comput. Pract. Exp.2
2011 Application-specific thread schedulers for distributed applications
abstract
SUMMARY This paper describes our work to improve the performance of distributed applications. We aim at certain application characteristics such as balancing load, allowing separately written applications to work better together, allowing a distributed application to adapt its behavior in more flexible ways, and so on. Our approach is to write application‐specific schedulers, which can access the global state of the application in making scheduling decisions. To achieve this goal, we extended our earlier work on CATAPULTS (Creating And Testing APplication‐specific User Level Thread Schedulers), a domain‐specific language for creating and testing application‐specific user‐level thread schedulers, to distributed applications by adding ‘master schedulers’ for dealing with the distributed parts of applications. This paper presents our design of, experimentation with, and implementation of distributed CATAPULTS. This paper presents several realistic examples to measure the feasibility of this approach, specifically: a website application, an embedded application, and load balancing. Each example has a scheduling goal for which we developed a customized scheduler. We measured the performance with and without the customized scheduler. The customized scheduler for each example was fairly straightforward to develop and each achieved its scheduling goal. Copyright © 2011 John Wiley & Sons, Ltd.
Matthew D. Roper, Ronald A. Olsson
Concurr. Comput. Pract. Exp.2
2011 Application-specific thread schedulers for internet server applications
abstract
SUMMARY This paper describes CATAPULTS (CreatingAndTestingAPplication‐specificUserLevelThreadSchedulers), a domain‐specific language for creating and testing application‐specific user‐level thread schedulers. Using a domain‐specific language to write user‐level thread schedulers provides three advantages. First, doing so modularizes the thread scheduler, making it easy to plug in and experiment with different thread scheduling strategies. Second, using a domain‐specific language for scheduling code helps prevent several of the common programming mistakes that are easy to make when developing thread schedulers. Finally, the CATAPULTS translator has multiple backends that generate code for different languages and libraries. This makes it easy to prototype an application in a high‐level language and then later port it to a low‐level language; the CATAPULTS translator will take care of generating the appropriate code for both the prototype and the final version of the program from a single scheduler specification. This paper describes how we have used CATAPULTS to improve the performance of two important and representative Internet server applications. Copyright © 2011 John Wiley & Sons, Ltd.
Matthew D. Roper, Ronald A. Olsson
Concurr. Comput. Pract. Exp.2
2009 Generic operations and capabilities in the JR concurrent programming language
Hiu Ning (Angela) Chan, Andrew J. Gallagher, Appu S. Goundan, Yi Lin William Au Yeung, Aaron W. Keen, Ronald A. Olsson
Comput. Lang. Syst. Struct.6
2008 A definition of and linguistic support for partial quiescence
abstract
Abstract The global quiescence (GQ) of a distributed computation (or distributed termination detection) is an important problem. Some concurrent programming languages and systems provide GQ detection as a built‐in feature so that programmers do not need to write special synchronization code to detect quiescence. This paper introducespartial quiescence(PQ), which generalizes quiescence detection to a specified part of a distributed computation. PQ is useful, for example, when two independent concurrent computations that both rely on GQ need to be combined into a single program. The paper describes how we have designed and implemented a PQ mechanism within an experimental version of the JR concurrent programming language, and have gained experience with several representative applications. Our early results are promising qualitatively and quantitatively. Copyright © 2007 John Wiley & Sons, Ltd.
Billy Yan-Kit Man, Hiu Ning (Angela) Chan, Andrew J. Gallagher, Appu S. Goundan, Aaron W. Keen, Ronald A. Olsson
Concurr. Comput. Pract. Exp.6
2007 Automated bug isolation via program chipping
abstract
Abstract This paper introduces program chipping, a simple yet effective technique to isolate bugs. This technique automatically removes or chips away parts of a program so that the part that contributes to some symptomatic output becomes more apparent to the user. Program chipping is similar in spirit to traditional program slicing and debugging techniques, but chipping uses very simple techniques based on the syntactic structure of the program. We have developed a chipping tool for Java programs, called ChipperJ, and have run it on a variety of small to large programs, including a Java compiler, looking for various symptoms. The results are promising. The reduced program is generally about 20–35% of the size of the original. ChipperJ takes less than an hour on large programs to perform this reduction; even if it took overnight, that would be reasonable if it saves the developer time. Copyright © 2006 John Wiley & Sons, Ltd.
Chad D. Sterling, Ronald A. Olsson
Softw. Pract. Exp.2
2006 Toward a Definition of and Linguistic Support for Partial Quiescence
Billy Yan-Kit Man, Hiu Ning (Angela) Chan, Andrew J. Gallagher, Appu S. Goundan, Aaron W. Keen, Ronald A. Olsson
Euro-Par6
2006 Reverse Engineering of Design Patterns from Java Source Code
abstract
Recovering design patterns can enhance existing source code analysis tools by bringing program understanding to the design level. This paper presents a new, fully automated pattern detection approach. The new approach is based on our reclassification of the GoF patterns by their pattern intent. We argue that the GoF pattern catalog classifies design patterns in the forward-engineering sense; our reclassification is better suited for reverse engineering. Our approach uses lightweight static program analysis techniques to capture program intent. This paper also describes our tool, PINOT, that implements this new approach. PINOT detects all the GoF patterns that have concrete definitions driven by code structure or system behavior. Our tool is faster, more accurate, and targets more patterns than existing pattern detection tools. PINOT has been used successfully in detecting patterns in Java AWT, JHotDraw, Swing, Apache Ant, and many other programs and packages
Nija Shi, Ronald A. Olsson
ASE2
2005 Developing embedded multi-threaded applications with CATAPULTS, a domain-specific language for generating thread schedulers
abstract
This paper describes CATAPULTS, a domain-specific language for creating and testing application-specific user level thread schedulers. Using a domain-specific language to write thread schedulers provides three advantages. First, it modularizes the thread scheduler, making it easy to plug in and experiment with different schedulers. Second, using a domain-specific language for scheduling code helps prevent several of the common programming mistakes that are easy to make when programming in low-level C or assembly. Finally, the CATAPULTS translator has multiple backends that generate code for different languages and libraries. This makes it easy to prototype an embedded application on a regular PC, and then develop the final version on the embedded hardware; the CATAPULTS translator will take care of generating the appropriate code for both the PC prototype and the final embedded version of the program. Using our implementation of CATAPULTS for Z-World's embedded Rabbit processors, we obtained a performance gain of about 12.6% at the expense of about 12.7% increase in code size for a fairly typical embedded application.
Matthew D. Roper, Ronald A. Olsson
CASES2
2005 An Exception Handling Mechanism for the Concurrent Invocation Statement
Hiu Ning (Angela) Chan, Esteban Pauli, Billy Yan-Kit Man, Aaron W. Keen, Ronald A. Olsson
Euro-Par5
2004 A comparison of concurrent programming and cooperative multithreading under load balancing applications
abstract
Abstract Two models of thread execution are the general concurrent programming execution model (CP) and the cooperative multithreading execution model (CM). CP provides nondeterministic thread execution where context switches occur arbitrarily. CM provides threads that execute one at a time until they explicitly choose to yield the processor. This paper focuses on a classic application to reveal the advantages and disadvantages of load balancing during thread execution under CP and CM styles; results from a second classic application were similar. These applications are programmed in two different languages (SR and Dynamic C) on different hardware (standard PCs and embedded system controllers). An SR‐like run‐time system, DesCaRTeS, was developed to provide interprocess communication for the Dynamic C implementations. This paper compares load balancing and non‐load balancing implementations; it also compares CP and CM style implementations. The results show that in cases of very high or very low workloads, load balancing slightly hindered performance; and in cases of moderate workload, both SR and Dynamic C implementations of load balancing generally performed well. Further, for these applications, CM style programs outperform CP style programs in some cases, but the opposite occurs in some other cases. This paper also discusses qualitative tradeoffs between CM style programming and CP style programming for these applications. Copyright © 2004 John Wiley & Sons, Ltd.
Justin T. Maris, Aaron W. Keen, Takashi Ishihara, Ronald A. Olsson
Concurr. Comput. Pract. Exp.4
2004 JR: Flexible distributed programming in an extended Java
abstract
Java provides a clean object-oriented programming model and allows for inherently system-independent programs. Unfortunately, Java has a limited concurrency model, providing only threads and remote method invocation (RMI).The JR programming language extends Java to provide a rich concurrency model, based on that of SR. JR provides dynamic remote virtual machine creation, dynamic remote object creation, remote method invocation, asynchronous communication, rendezvous, and dynamic process creation. JR's concurrency model stems from the addition of operations (a generalization of procedures) and JR supports the redefinition of operations through inheritance. JR programs are written in an extended Java and then translated into standard Java programs. The JR run-time support system is also written in standard Java.This paper describes the JR programming language and its implementation. Some initial measurements of the performance of the implementation are also included.
Aaron W. Keen, Tingjian Ge, Justin T. Maris, Ronald A. Olsson
ACM Trans. Program. Lang. Syst.4
2003 An Inter-entry Invocation Selection Mechanism for Concurrent Programming Languages
Aaron W. Keen, Ronald A. Olsson
Euro-Par2
2003 DesCaRTeS: a run-time system with SR-like functionality for programming a network of embedded systems
Justin T. Maris, Matthew D. Roper, Ronald A. Olsson
Comput. Lang. Syst. Struct.3
2003 A comparison of concurrent programming and cooperative multithreading
abstract
Abstract This paper presents a comparison of the cooperative multithreading model with the general concurrent programming model. It focuses on the execution time performance of a range of standard concurrent programming applications. The overall results are mixed. In some cases, programs written in the cooperative multithreading model outperform those written in the general concurrent programming model. The contributions of this paper are twofold. First, it presents a thorough analysis of the performances of applications in the different models, i.e. to explain the criteria that determine when a program in one model will outperform an equivalent program in the other. Second, it examines the tradeoffs in writing programs in the different programming styles. In some cases, better performance comes at the cost of more complicated code. Copyright © 2003 John Wiley & Sons, Ltd.
Aaron W. Keen, Takashi Ishihara, Justin T. Maris, Eugene F. Fodor, Ronald A. Olsson
Concurr. Comput. Pract. Exp.6
2002 Exception Handling during Asynchronous Method Invocation (Research Note)
Aaron W. Keen, Ronald A. Olsson
Euro-Par2
2002 SIR: inter-program concurrency support for SR programs
Eugene F. Fodor, Ronald A. Olsson
Comput. Lang. Syst. Struct.2
2002 Fairness in shared invocation servicing
Ronald A. Olsson, Gregory D. Benson, Tingjian Ge, Aaron W. Keen
Comput. Lang. Syst. Struct.1
2002 Additional transformations for multiple-level escape statements
abstract
Abstract Earlier work suggests that program transformations can simplify program verification. A given program containing complex language features is transformed into a semantically equivalent program containing only simpler language features. The transformed program is proven using a set of proof rules for only the simpler features. That approach was illustrated by transforming a given program that may contain multiple‐level escape statements within nested loops into an equivalent program that contains no escape statements. This paper gives additional transformations, which map a given program that may contain multiple‐level escape statements to a semantically equivalent program (TP) that contains only single‐level escape statements. The proof of TP uses proof rules for single‐level escape statements, or the earlier transformations further map TP to a program with no escape statements, whose proof uses proof rules for loops without escape statements. This paper also discusses escape statements where the number of levels is determined at run‐time. Copyright © 2002 John Wiley & Sons, Ltd.
Ronald A. Olsson
Softw. Test. Verification Reliab.1
2001 JR: Flexible Distributed Programming in an Extended Java
abstract
Java provides a clean object-oriented programming model and allows for inherently system-independent programs. Unfortunately, Java has a limited concurrency model, providing only threads and remote method invocation (RMI). The JR programming language extends Java to provide a rich concurrency model. JR provides dynamic remote virtual machine creation, dynamic remote object creation, remote method invocation, asynchronous communication, rendezvous, and dynamic process creation. JR programs are written in an extended Java and then translated into standard Java programs. The JR run-time support system is also written in standard Java. This paper describes the JR programming language and its implementation. Some initial measurements of the performance of the implementation are also included.
Aaron W. Keen, Tingjian Ge, Justin T. Maris, Ronald A. Olsson
ICDCS4
2000 A Comparison of Concurrent Programming and Cooperative Multithreading
Takashi Ishihara, Eugene F. Fodor, Ronald A. Olsson
Euro-Par4
1999 Reproducible execution of SR programs
abstract
Reproducing the execution of a concurrent program is important in debugging and testing. It requires that, regardless of the actual order in which processes may execute, the reproduced execution is identical, with respect to the order in which certain activities occur, to a previously recorded execution. This paper presents a solution to the reproducibility problem for programs written in the SR concurrent programming language. Our solution transforms an arbitrary SR program into one for recording an event sequence and one for replaying from an event sequence. SR provides a rich collection of synchronization mechanisms, including rendezvous, asynchronous message passing, remote procedure call, and dynamic process creation. SR language features allow: flexible invocation servicing (e.g. use of invocation parameters in selecting an invocation to service in message passing or rendezvous); dynamically created processes and resource (module) instances; dynamic communication paths between processes; and dynamic distribution of programs across multiple machines. Because of these features, adaptations of previous solutions to the reproducibility problem for other languages and notations do not work for SR. Our solution handles all the above features. It results in a naturally distributed control algorithm for programs that are distributed. This paper also describes the implementations of our transformation tools. Copyright © 1999 John Wiley & Sons, Ltd.
Ronald A. Olsson
Concurr. Pract. Exp.1
1999 Towards a Transformational Approach to Program Verification
abstract
Although most typically used in other contexts, program transformations can simplify program verification by transforming a program containing complex language features into a semantically equivalent program containing only simpler language features. The proof of the transformed program can then be performed using a set of proof rules for only the simpler features. There are tradeoffs between the transformational approach and the standard approach to program verification with regard to proof understandability and compactness of programs and assertions, establishing soundness of the program verification method, and providing mechanized support for the method. The transformational approach has clear advantages in some of these aspects. This paper illustrates this transformational approach by considering proof rules for escape statements in iterative constructs, and discusses the tradeoffs with respect to its use. It also suggests how the approach can be applied to other language constructs, including some involving concurrency, and to solving some problems connected with the development of Hoare axiomatizations. Copyright © 1999 John Wiley & Sons, Ltd.
Myla Archer, Amy Lo, Ronald A. Olsson
Softw. Test. Verification Reliab.3
1999 LVT: A Layered Verification Technique for Distributed Computing Systems
abstract
This paper presents a layered verification technique, called LVT, for the verification of distributed computing systems with multiple component layers. Each lower layer in such a system provides services in support of functionality of the higher layer. By taking a very general view of programming languages as interfaces of systems, LVT treats each layer in a distributed computing system as a distributed programming language. Each relatively higher-level language in the computing system is implemented in terms of a lower-level language. The verification of each layer in a distributed computing system can then be viewed as the verification of implementation correctness for a distributed language. This paper also presents the application of LVT to the verification of a distributed computing system, which has three layers: a small high-level distributed programming language; a multiple processor architecture consisting of an instruction set and system calls for inter-process message passing; and a network interface. Programs in the high-level language are implemented by a compiler mapping from the language layer to the multiprocessor layer. System calls are implemented by network services. LVT and its application demonstrate that the correct execution of a distributed program, most notably its inter-process communication, is verifiable through layers. The verified layers guarantee the correctness of (1) the compiled code that makes reference to operating system calls, (2) the operating system calls in terms of network calls, and (3) the network calls in terms of network transmission steps. The specification and verification involved are carried out by using the Cambridge Higher Order Logic (HOL) theorem proving system. Copyright © 1999 John Wiley & Sons, Ltd.
Brian R. Becker, Dave Peticolas, Ronald A. Olsson, Karl N. Levitt
Softw. Test. Verification Reliab.4
1999 Formal Verification of a Programming Logic for a Distributed Programming Language
Ronald A. Olsson, Karl N. Levitt
Theor. Comput. Sci.2
1998 Detecting Disruptive Routers: A Distributed Network Monitoring Approach
abstract
An attractive target for a computer system attacker is the router. An attacker in control of a router can disrupt communication by dropping or misrouting packets passing through the router. We present a protocol called WATCHERS that detects and reacts to routers that drop or misroute packets. WATCHERS is based on the principle of conservation of flow in a network: all data bytes sent into a node, and not destined for that node, are expected to exit the node. WATCHERS tracks this flow, and detects routers that violate the conservation principle. We show that WATCHERS has several advantages over existing network monitoring techniques. We argue that WATCHERS' impact on router performance and WATCHERS' memory requirements are reasonable for many environments. We demonstrate that in ideal conditions WATCHERS makes no false-positive diagnoses. We also describe how WATCHERS can be tuned to perform nearly as well in realistic conditions.
Kirk A. Bradley, Steven Cheung, Nicholas J. Puketza, Biswanath Mukherjee, Ronald A. Olsson
S&P5
1998 New Mechanisms for Invocation Handling in Concurrent Programming Languages
Mandy Chung, Ronald A. Olsson
Comput. Lang.2
1998 Addressing the Shortcomings of Traditional Formal Reasoning Methods for Concurrent Programs: New Tools and Techniques for Source Code Correctness
Robert J. Shaw, Ronald A. Olsson
Inf. Sci.2
1997 Validation of Array Accesses: Integration of Flow Analysis and Program Verification Techniques
abstract
A program that accesses an out-of-bound array element can cause unexpected behaviour that is unacceptable to safety-critical or security-critical systems. Two traditional compile-time approaches to array bound checking are flow analysis and program verification. This paper presents a new approach, IFV, that integrates flow analysis and program verification techniques. IFV is generally about as effective as program verification yet runs in about the same time as flow analysis. Its typical runtime is proportional to the product of the program size and the number of declared variables. IFV matches loops to templates, which represent commonly occurring loop patterns, to discover loop invariants automatically, which it then uses to strengthen flow analysis. With only seven templates, it handles many common array-access patterns. Patterns not verified by flow analysis are processed with verification techniques entirely automatically. This paper also describes a prototype IFV system that performs compile-time array bound checking for programs in a subset of C. © 1997 John Wiley & Sons, Ltd.
Raymond W. Lo, Karl N. Levitt, Ronald A. Olsson
Softw. Test. Verification Reliab.3
1996 A layered model for building debugging and monitoring tools
W. Wilson Ho, Ronald A. Olsson
J. Syst. Softw.2
1996 Experience Using the C Preprocessor to Implement CCR, Monitor, and CSP Preprocessors for SR
abstract
We have recently implemented three preprocessors that, respectively, convert conditional critical region (CCR) notation, monitor notation, and Communicating Sequential Processes (CSP) notation into equivalent programs written in the SR concurrent programming language. The three preprocessors were built with \verb-cpp-, the C preprocessor. This paper describes our experience in this use of \verb-cpp- and especially how using \verb-cpp- influenced the design and implementation of the extended notations. This paper also describes the favorable experience obtained in using the preprocessors in several courses. The results should be of interest to others who are contemplating implementing language extensions.
Ronald A. Olsson, Carole M. McNamee
Softw. Pract. Exp.1
1996 A Methodology for Testing Intrusion Detection Systems
abstract
Intrusion detection systems (IDSs) attempt to identify unauthorized use, misuse, and abuse of computer systems. In response to the growth in the use and development of IDSs, the authors have developed a methodology for testing IDSs. The methodology consists of techniques from the field of software testing which they have adapted for the specific purpose of testing IDSs. They identify a set of general IDS performance objectives which is the basis for the methodology. They present the details of the methodology, including strategies for test-case selection and specific testing procedures. They include quantitative results from testing experiments on the Network Security Monitor (NSM), an IDS developed at UC Davis. They present an overview of the software platform that has been used to create user-simulation scripts for testing experiments. The platform consists of the UNIX tool expect and enhancements that they have developed, including mechanisms for concurrent scripts and a record-and-replay feature. They also provide background information on intrusions and IDSs to motivate their work.
Nicholas J. Puketza, Mandy Chung, Biswanath Mukherjee, Ronald A. Olsson
IEEE Trans. Software Eng.5
1995 Semantic Issues in the Design of Languages for Debugging
Richard H. Crawford, Ronald A. Olsson, W. Wilson Ho, Christopher E. Wee
Comput. Lang.2
1995 MCF: a malicious code filter
Raymond W. Lo, Karl N. Levitt, Ronald A. Olsson
Comput. Secur.3
1992 Static Inter-Module Analysis for Determining Processor Co-Residency
Carole M. McNamee, Ronald A. Olsson
ICPP (2)2
1992 Inter-Entry Selection: Non-Determinism and Explicit Control Mechanisms
Ronald A. Olsson, Carole M. McNamee
Comput. Lang.1
1991 An Overview of Compiler Optimization of Interprocess Communication and Synchronization Mechanisms
Ronald A. Olsson, Carole M. McNamee
ICPP (2)1
1991 Axiomatic Semantics for "Escape" Statements
Ronald A. Olsson, Daniel T. Huang
Inf. Process. Lett.1
1991 An Approach to Genuine Dynamic Linking
abstract
Abstract This paper describes a new approach to dynamic link/unlink editing. The basis of this approach is a library of link editing functions that can add compiled object code to or remove such code from a process any time during its execution. Loading modules, searching libraries, resolving external references, and allocating storage for global and static data structures are all performed at run time. This approach provides the efficiency of native machine code execution along with the flexibility to modify a program during its execution, thereby making many new applications possible. This paper also describes three sample applications of these dynamic link editing functions: program customization, incremental program development, and support for debugging and testing. A prototype of this approach is implemented under UNIX as a library package called dld for the C programming language and is available for VAX, Sun 3 and SPARCstation machines.
W. Wilson Ho, Ronald A. Olsson
Softw. Pract. Exp.2
1991 A Dataflow Approach to Event-based Debugging
abstract
Abstract This paper describes a novel approach to event‐based debugging. The approach is based on a (coarsegrained) dataflow view of events: a high‐level event is recognized when an appropriate combination of lower‐level events on which it depends has occurred. Event recognition is controlled using familiar programming language constructs. This approach is more flexible and powerful than current ones. It allows arbitrary debugger language commands to be executed when attempting to form higher‐level events. It also allows users to specify event recognition in much the same way that they write programs. This paper also describes a prototype, Dalek, that employs the dataflow approach for debugging sequential programs. Dalek demonstrates the feasibility and attractiveness of the dataflow approach. One important motivation for this work is that current sequential debugging tools are inadequate. Dalek contributes toward remedying such inadequacies by providing events and a powerful debugging language. Generalizing the dataflow approach so that it can aid in the debugging of concurrent programs is under investigation.
Ronald A. Olsson, Richard H. Crawford, W. Wilson Ho
Softw. Pract. Exp.1
1990 An Exception Handling Mechanism for SR
Daniel T. Huang, Ronald A. Olsson
Comput. Lang.2
1990 Using SR for Discrete Event Simulation: A Study in Concurrent Programming
abstract
Abstract This paper demonstrates the use of the SR concurrent programming language for discrete event simulation. SR provides a rich collection of synchronization mechanisms, whose use can lead to programs that are simpler and more efficient than those constrained to employ only one synchronization mechanism. Several SR solutions to a simulation problem are presented and contrasted with an Ada solution to the same problem. The paper also introduces a technique that exploits asynchronous message passing to program concise solutions to several problems involving lists. In the context of the simulation problem, this technique is used to manage the event list and the list of blocked processes. The technique can also be applied to several other concurrent programming problems. The results of this paper should be of interest both to programmers using concurrent programming languages and to language designers.
Ronald A. Olsson
Softw. Pract. Exp.1
1990 Comments on "Critical Races in Ada Programs''
abstract
Comments are made on the above named work by G.M. Karam, C.M. Stanczyk, and G.W. Bond (see ibid., vol.15, no.11, p.1471-80, 1989), in which the semantics of the Ada rendezvous mechanism are discussed in terms of the critical race problem and a method is proposed for designing critical race-free programs. It is noted that this problem has been well described and numerous solutions have been presented in the literature during the past ten years (1980-90).>
Carole M. McNamee, Ronald A. Olsson
IEEE Trans. Software Eng.2
1989 An SR Approach to Multiway Rendezvous
Michael H. Coffin, Ronald A. Olsson
Comput. Lang.2
1989 A Simple Technique for Automatic Recompilation in Modular Programming Languages
abstract
Abstract This paper presents simple techniques that can be used to automate recompilation and avoid unnecessary recompilation in modular programming languages. The basic technique generates a Makefile that reflects the dependencies among modules. This technique is demonstrated for programs written in SR, although it can easily be adapted to other modular languages. The recompilation problem for SR programs is complicated by the flexible way components can be placed in source files and by how an SR module's specification and implementation can be combined. A small modification to the basic technique reduces the amount of unnecessary compilation. This ‘semi‐smart’ approach is worth the small extra effort. The techniques described in this paper should be considered as an inexpensive, yet reasonably effective, alternative to smart recompilation. These techniques are especially applicable when the language's compiler cannot easily be modified.
Ronald A. Olsson, Gregory R. Whitehead
Softw. Pract. Exp.1
1988 Performance of Multi-tasking and Synchronization Mechanisms in the Programming Language SR
abstract
Abstract High‐level language primitives for concurrent programming exist in languages such as Ada and Modula‐2. However, each of these languages provides only a single means for specifying multitasking and synchronization, essential in the implementation of concurrent systems. The SR language provides several mechanisms for specifying multi‐tasking and synchronization, so it can be used to explore the performance of various communication techniques. This paper presents performance results for SR's multi‐tasking and synchronization mechanisms and discusses the effects of the generated code, the run‐time support and the hardware on these results. These results are compared with those for similar mechanisms in other languages, leading to some general conclusions about the performance of process communication primitives. These performance results can be used by programmers to make design choices that allow systems programs written in high‐level languages to meet real‐time performance specifications.
M. Stella Atkins, Ronald A. Olsson
Softw. Pract. Exp.2
1988 An Overview of the SR Language and Implementation
abstract
SR is a language for programming distributed systems ranging from operating systems to application programs. On the basis of our experience with the initial version, the language has evolved considerably. In this paper we describe the current version of SR and give an overview of its implementation. The main language constructs are still resources and operations. Resources encapsulate processes and variables that they share; operations provide the primary mechanism for process interaction. One way in which SR has changed is that both resources and processes are now created dynamically. Another change is that inheritance is supported. A third change is that the mechanisms for operation invocation—call and send—and operation implementation—proc and in—have been extended and integrated. Consequently, all of local and remote procedure call, rendezvous, dynamic process creation, asynchronous message passing, multicast, and semaphores are supported. We have found this flexibility to be very useful for distributed programming. Moreover, by basing SR on a small number of well-integrated concepts, the language has proved easy to learn and use, and it has a reasonably efficient implementation.
Gregory R. Andrews, Ronald A. Olsson, Michael H. Coffin, Irving Elshoff, Kelvin D. Nilsen, Titus D. M. Purdin, Gregg M. Townsend
ACM Trans. Program. Lang. Syst.2
1986 The Evolution of the SR Language
Gregory R. Andrews, Ronald A. Olsson
Distributed Comput.2