• Documents
  • Authors
  • Tables
  • Other Seers ▼
    RefSeer AckSeer CollabSeer SeerSeer
  • Log in
  • Sign up
  • MetaCart

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

Making Reliable Distributed Systems in the Presence of Software Errors (2003)

by Joe Armstrong, To Helen
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 33
Next 10 →

The Oz-E project: Design guidelines for a secure multiparadigm programming language

by Fred Spiessens, Peter Van Roy - In Multiparadigm Programming in Mozart/Oz: Extended Proceedings of the Second International Conference MOZ 2004, volume 3389 of Lecture Notes in Computer Science , 2005
"... Abstract. The design and implementation of a capability secure multiparadigm language should be guided from its conception by proven principles of secure language design. In this position paper we present the Oz-E project, aimed at building an Oz-like secure language, named in tribute of E [MMF00] a ..."
Abstract - Cited by 11 (2 self) - Add to MetaCart
Abstract. The design and implementation of a capability secure multiparadigm language should be guided from its conception by proven principles of secure language design. In this position paper we present the Oz-E project, aimed at building an Oz-like secure language, named in tribute of E [MMF00] and its designers and users who contributed greatly to the ideas presented here. We synthesize the principles for secure language design from the experiences with the capability-secure languages E and the W7-kernel for Scheme 48 [Ree96]. These principles will be used as primary guidelines during the project. We propose a layered structure for Oz-E and discuss some important security concerns, without aiming for completeness at this early stage. 1

Self Management and the Future of Software Design

by Peter Van Roy - In: Formal Aspects of Component Software (FACS , 2006
"... Most software is fragile: even the slightest error, such as changing a single bit, can make it crash. As software complexity has increased, development techniques have kept pace to manage this fragility. But today there is a new challenge. Complexity is increasing rapidly as a result of two factors: ..."
Abstract - Cited by 10 (6 self) - Add to MetaCart
Most software is fragile: even the slightest error, such as changing a single bit, can make it crash. As software complexity has increased, development techniques have kept pace to manage this fragility. But today there is a new challenge. Complexity is increasing rapidly as a result of two factors: the increasing use of distributed systems as a result of the sufficient reliability and bandwidth of the Internet, and the increasing scale of these systems as a result of the addition of many new computers to the Internet (e.g., mobile phones and other devices). To manage this new complexity, we propose an approach based on selfmanaging systems: systems that can maintain useful functionality despite changes in their environment. The paper motivates this approach and gives some ideas on how to build general self-managing software systems. An important part of the approach is to build systems as hierarchies of interacting feedback loops. We give several examples of these systems and we deduce some rules of thumb for their design.

Encapsulating and exploiting change with Changeboxes

by Marcus Denker, Oscar Nierstrasz, Lukas Renggli, Pascal Zumkehr - In Proceedings of the 2007 International Conference on Dynamic Languages (ICDL 2007 , 2007
"... www.iam.unibe.ch/∼scg Abstract. Real world software systems change continuously to meet new demands. Most programming languages and development environments, however, are more concerned with limiting the effects of change rather than enabling and exploiting change. Various techniques and technologie ..."
Abstract - Cited by 10 (6 self) - Add to MetaCart
www.iam.unibe.ch/∼scg Abstract. Real world software systems change continuously to meet new demands. Most programming languages and development environments, however, are more concerned with limiting the effects of change rather than enabling and exploiting change. Various techniques and technologies to exploit change have been developed over the years, but there exists no common support for these approaches. We propose Changeboxes as a general-purpose mechanism for encapsulating change as a firstclass entity in a running software system. Changeboxes support multiple, concurrent and possibly inconsistent views of software artifacts within the same running system. Since Changeboxes are first-class, they can be manipulated to control the scope of change in a running system. Furthermore, Changeboxes capture the semantics of change. Changeboxes can be used, for example, to encapsulate refactorings, or to replay or analyze the history of changes. In this paper we introduce Changeboxes by means of a prototype implementation. We illustrate the benefits that Changeboxes offer for evolving software systems, and we present the results of a preliminary performance evaluation that assesses the costs associated with Changeboxes while suggesting possible strategies for improvement. 1

A semantics for distributed erlang

by Koen Claessen - In Proceedings of the ACM SIPGLAN 2005 Erlang Workshop , 2005
"... We propose an extension to Fredlund’s formal semantics for Erlang that models the concept of nodes. The motivation is that there exist sequences of events that can occur in practice, but are impossible to describe using a single-node semantics, such as Fredlund’s. The consequence is that some errors ..."
Abstract - Cited by 6 (3 self) - Add to MetaCart
We propose an extension to Fredlund’s formal semantics for Erlang that models the concept of nodes. The motivation is that there exist sequences of events that can occur in practice, but are impossible to describe using a single-node semantics, such as Fredlund’s. The consequence is that some errors in distributed systems might not be detected by model checkers based on Fredlund’s original semantics, or by other single-node verification techniques such as testing. Our extension is modest; it re-uses most of Fredlund’s work but adds an extra layer at the top-level.

McErlang: A Model Checker for a Distributed Functional Programming Language

by Lars-Ake Fredlund, Hans Svensson - ICFP'07 , 2007
"... We present a model checker for verifying distributed programs written in the Erlang programming language. Providing a model checker for Erlang is especially rewarding since the language is by now being seen as a very capable platform for developing industrial strength distributed applications with e ..."
Abstract - Cited by 6 (1 self) - Add to MetaCart
We present a model checker for verifying distributed programs written in the Erlang programming language. Providing a model checker for Erlang is especially rewarding since the language is by now being seen as a very capable platform for developing industrial strength distributed applications with excellent failure tolerance characteristics. In contrast to most other Erlang verification attempts, we provide support for a very substantial part of the language. The model checker has full Erlang data type support, support for general process communication, node semantics (inter-process behave subtly different from intra-process communication), fault detection and fault tolerance through process linking, and can verify programs written using the OTP Erlang component library (used by most modern Erlang programs). As the model checking tool is itself implemented in Erlang we benefit from the advantages that a (dynamically typed) functional programming language offers: easy prototyping and experimentation with new verification algorithms, rich executable models that use complex data structures directly programmed in Erlang, the ability to treat executable models interchangeably as programs (to be executed directly by the Erlang interpreter) and data, and not least the possibility to cleanly structure and to cleanly combine various verification sub-tasks. In the paper we discuss the design of the tool and provide early indications on its performance.

A Design Rationale for Pervasive Computing -- User Experience, . . .

by Markus Bylund - CONTEXTUAL CHANGE, AND TECHNICAL REQUIREMENTS , 2005
"... The vision of pervasive computing promises a shiſt from information technology per se to what can be accomplished by using it, thereby fundamentally changing the relationship between people and information technology. In order to realize this vision, a large number of issues concerning user experien ..."
Abstract - Cited by 5 (1 self) - Add to MetaCart
The vision of pervasive computing promises a shiſt from information technology per se to what can be accomplished by using it, thereby fundamentally changing the relationship between people and information technology. In order to realize this vision, a large number of issues concerning user experience, contextual change, and technical requirements should be addressed. We provide a design rationale for pervasive computing that encompasses these issues, in which we argue that a prominent aspect of user experience is to provide user control, primarily founded in human values. As one of the more significant aspects of the user experience, we provide an extended discussion about privacy. With contextual change, we address the fundamental change in previously established relationships between the practices of individuals, social institutions, and physical environments that pervasive computing entails. Finally, issues of technical requirements refer to technology neutrality

Concurrency oriented programming in termite scheme

by Guillaume Germain, Marc Feeley, Stefan Monnier, Université De Montréal - LaBRI, University of Bordeaux , 2006
"... Termite Scheme is a variant of Scheme intended for distributed computing. It offers a simple and powerful concurrency model, inspired by the Erlang programming language, which is based on a message-passing model of concurrency. Our system is well suited for building custom protocols and abstractions ..."
Abstract - Cited by 5 (0 self) - Add to MetaCart
Termite Scheme is a variant of Scheme intended for distributed computing. It offers a simple and powerful concurrency model, inspired by the Erlang programming language, which is based on a message-passing model of concurrency. Our system is well suited for building custom protocols and abstractions for distributed computation. Its open network model allows for the building of non-centralized distributed applications. The possibility of failure is reflected in the model, and ways to handle failure are available in the language. We exploit the existence of first class continuations in order to allow the expression of high-level concepts such as process migration. We describe the Termite model and its implications, how it compares to Erlang, and describe sample applications built with Termite. We conclude with a discussion of the current implementation and its performance.

Convergence in language design: a case of lightning striking four times in the same place. FLOPS

by Peter Van Roy - in the Same Place, 8th International Symposium on Functional and Logic Programming (FLOPS 2006), April 2006, Springer LNCS , 2006
"... Abstract. What will a definitive programming language look like? By definitive language I mean a programming language that gives good solutions at its level of abstraction, allowing computer science researchers to move on and work at higher levels. Given the evolution of computer science as a field ..."
Abstract - Cited by 4 (2 self) - Add to MetaCart
Abstract. What will a definitive programming language look like? By definitive language I mean a programming language that gives good solutions at its level of abstraction, allowing computer science researchers to move on and work at higher levels. Given the evolution of computer science as a field with a rising level of abstraction, it is my belief that a small set of definitive languages will eventually exist. But how can we learn something about this set, considering that many basic questions about languages have not yet been settled? In this paper, I give some tentative conclusions about one definitive language. I present four case studies of substantial research projects that tackle important problems in four quite different areas: fault-tolerant programming, secure distributed programming, network-transparent distributed programming, and teaching programming as a unified discipline. All four projects had to think about language design. In this paper, I summarize the reasons why each project designed the language it did. It turns out that all four languages have a common structure. They can be seen as layered, with the following four layers in this order: a strict functional core, then deterministic concurrency, then message-passing concurrency, and finally shared-state concurrency (usually with transactions). This confirms the importance of functional programming and message passing as important defaults; however, global mutable state is also seen as an essential ingredient. 1

Bristlecone: A language for robust software systems

by Brian Demsky, Alokika Dash , 2007
"... We present Bristlecone, a programming language for robust software systems. The Bristlecone language contains two components: a high-level organization specification component that describes how the software system’s conceptual operations interact, and a low-level operational specification component ..."
Abstract - Cited by 3 (2 self) - Add to MetaCart
We present Bristlecone, a programming language for robust software systems. The Bristlecone language contains two components: a high-level organization specification component that describes how the software system’s conceptual operations interact, and a low-level operational specification component that describes the sequence of instructions that comprise an individual conceptual operation. The Bristlecone implementation uses the high-level organization specifications to detect software errors, to recover the software system from an error to a consistent state, and to reason how to safely continue the software system’s execution after the error. We have implemented a compiler and runtime for the Bristlecone language. We have evaluated this implementation on three benchmark applications: a web crawler, a web server, and a multi-room chat server. We developed both a Bristlecone version and a multi-threaded Java version of each of the benchmark applications. We designed the Java versions of the benchmark applications to use threads to tolerate many software faults. We injected failures into each version of the benchmark applications and then

Failboxes: Provably Safe Exception Handling ⋆

by Bart Jacobs, Frank Piessens
"... Abstract. The primary goal of exception mechanisms is to help ensure that when an operation fails, code that depends on the operation’s successful completion is not executed (a property we call dependency safety). However, the exception mechanisms of current mainstream programming languages make it ..."
Abstract - Cited by 3 (0 self) - Add to MetaCart
Abstract. The primary goal of exception mechanisms is to help ensure that when an operation fails, code that depends on the operation’s successful completion is not executed (a property we call dependency safety). However, the exception mechanisms of current mainstream programming languages make it hard to achieve dependency safety, in particular when objects manipulated inside a try block outlive the try block. Many programming languages, mechanisms and paradigms have been proposed that address this issue. However, they all depart significantly from current practice. In this paper, we propose a language mechanism called failboxes. When applied correctly, failboxes have no significant impact on the structure, the semantics, or the performance of the program, other than to eliminate the executions that violate dependency safety. Specifically, programmers may create failboxes dynamically and execute blocks of code in them. Once any such block fails, all subsequent attempts to execute code in the failbox will fail. To achieve dependency safety, programmers simply need to ensure that if an operation B depends on an operation A, then A and B are executed in the same failbox. Furthermore, failboxes help fix the unsafe interaction between locks and exceptions and they enable safe cancellation and robust resource cleanup. Finally, the Fail Fast mechanism prevents liveness issues when a thread is waiting on a failed thread. We give a formal syntax and semantics of the new constructs, and prove dependency safety. Furthermore, to show that the new constructs are easy to reason about, we propose proof rules in separation logic. The theory has been machine-checked. 1
The National Science Foundation
  • About CiteSeerX
  • Submit Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2010 The Pennsylvania State University