Results 1 - 10
of
16
Evolution of Object Behavior using Context Relations
, 1996
"... A collection of design patterns was described by Gamma, Helm, Johnson, and Vlissides in 1994. Each pattern ensures that a certain system aspect can vary over time, for example the operations that can be applied to an object or the algorithm of a method. The patterns are described by constructs such ..."
Abstract
-
Cited by 60 (4 self)
- Add to MetaCart
A collection of design patterns was described by Gamma, Helm, Johnson, and Vlissides in 1994. Each pattern ensures that a certain system aspect can vary over time, for example the operations that can be applied to an object or the algorithm of a method. The patterns are described by constructs such as the inheritance and reference relations, attempting to emulate more dynamic relationships. As a result, the design patterns demonstrate how awkward it is to program natural concepts of evolution when using a traditional object-oriented language. In this paper we present a new relation between classes: the context relation. It directly models dynamic evolution, and it is meaningful at both the design and implementation level. At the design level we extend the Unified Modeling Language (UML) to include the context relation as a new form of arrow between classes. At the implementation level we present a small extension of Java. The context relation introduces a new form of dynamic binding th...
Developing a Reflective Model of Collaborative Systems
- ACM Transactions on Computer-Human Interaction
, 1995
"... Recent years have seen a shift in perception of the nature of HCI and interactive systems. As interface work has increasingly become a focus of attention for the social sciences, we have expanded our appreciation of the importance of issues such as work practice, adaptation, and evolution in interac ..."
Abstract
-
Cited by 59 (10 self)
- Add to MetaCart
Recent years have seen a shift in perception of the nature of HCI and interactive systems. As interface work has increasingly become a focus of attention for the social sciences, we have expanded our appreciation of the importance of issues such as work practice, adaptation, and evolution in interactive systems. The reorientation in our view of interactive systems has been accompanied by a call for a new model of design centered around user needs and participation. This article argues that a new process of design is not enough and that the new view necessitates a similar reorientation in the structure of the systems we build. It outlines some requirements for systems that support a deeper conception of interaction and argues that the traditional system design techniques are not suited to creating such systems. Finally, using examples from ongoing work in the design of an open toolkit for collaborative applications, it illustrates how the principles of computational reflection and metaobject protocols can lead us toward a new model based on open abstraction that holds great promise in addressing these issues.
Mediators: Easing the Design and Evolution of Integrated Systems
, 1994
"... People benefit from tightly integrated systems that can be designed, realized and evolved affordably. Unfortunately, common software design methods do not easily accommodate requirements for tightly integrated systems. Indeed, when used to meet such requirements, common methods tend to yield unnec ..."
Abstract
-
Cited by 37 (14 self)
- Add to MetaCart
People benefit from tightly integrated systems that can be designed, realized and evolved affordably. Unfortunately, common software design methods do not easily accommodate requirements for tightly integrated systems. Indeed, when used to meet such requirements, common methods tend to yield unnecessarily complex structures that complicate design and realization and that inhibit subsequent evolution. After substantiating this claim, I present the mediator method as a solution. This method combines behavioral entity-relationship (ER) modeling for design with a mediator approach to implementation. The mediator method is better than common methods for designing, realizing, and evolving many integrated systems. I support this claim both by rational argument from simplifying models and by careful...
CONS Should not CONS its Arguments, or, a Lazy Alloc is a Smart Alloc
- ACM Sigplan Not
, 1992
"... Lazy allocation is a model for allocating objects on the execution stack of a high-level language which does not create dangling references. Our model provides safe transportation into the heap for objects that may survive the deallocation of the surrounding stack frame. Space for objects that do no ..."
Abstract
-
Cited by 15 (11 self)
- Add to MetaCart
Lazy allocation is a model for allocating objects on the execution stack of a high-level language which does not create dangling references. Our model provides safe transportation into the heap for objects that may survive the deallocation of the surrounding stack frame. Space for objects that do not survive the deallocation of the surrounding stack frame is reclaimed without additional effort when the stack is popped. Lazy allocation thus performs a first-level garbage collection, and if the language supports garbage collection of the heap, then our model can reduce the amortized cost of allocation in such a heap by filtering out the short-lived objects that can be more efficiently managed in LIFO order. A run-time mechanism called result expectation further filters out unneeded results from functions called only for their effects. In a shared-memory multi-processor environment, this filtering reduces contention for the allocation and management of global memory. Our model performs s...
Encapsulating and exploiting change with Changeboxes
- 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
Meta-environment and executable meta-language using smalltalk: an experience report
- JOURNAL OF SOFTWARE AND SYSTEMS MODELING (SOSYM
, 2008
"... ..."
MELDC: A Reflective Object-Oriented Coordination Language
, 1993
"... A coordination language, MELDC, for open systems programming is presented. MELDC is a Cbased, concurrent, distributed object-oriented language built on a reflective architecture. Unlike other language research, the focus of MELDC is not only to study what specific language features should be desi ..."
Abstract
-
Cited by 5 (1 self)
- Add to MetaCart
A coordination language, MELDC, for open systems programming is presented. MELDC is a Cbased, concurrent, distributed object-oriented language built on a reflective architecture. Unlike other language research, the focus of MELDC is not only to study what specific language features should be designed for solving certain open system problems but also to provide programmers a high-level and efficient way to construct new features without modifying the language internals. The key to the reflective feature is the metaclass that supports shadow objects to implement secondary behaviors of objects. Thus, the behavior of an object can be extended by dynamically composing multiple secondary behaviors with the object's primary behavior defined in the class. In this paper, both the MELDC programming model and the reflective architecture are described. Then, we introduce the mechanism of dynamic composition as well as its application in building distributed and persistent systems. In par...
Applying Dynamic Integration as a Software Infrastructure for Context-Aware Computing
, 1997
"... Much of the software engineering literature examines techniques and practices that help us to build systems that we have been building for many years already. While there is merit in seeking ways to raise the floor of software engineering practice, we also have an obligation to research software des ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Much of the software engineering literature examines techniques and practices that help us to build systems that we have been building for many years already. While there is merit in seeking ways to raise the floor of software engineering practice, we also have an obligation to research software design issues that push the envelope of existing computing technology. One of the features of future interactive computing environments is that they will provide context-aware services that leverage off of knowledge of a person's physical state and surrounding environment. With the proliferation of network-based computing services that are a characteristic of an emerging ubiquitous computing society, there is a real issue with providing a software infrastructure that will support context-aware services. In this paper, we examine software engineering work on component integration and introduce a prototype infrastructure that provides a dynamic and scalable context-aware computing environment. We...
Time and space efficient multi-method dispatching
- IN SWAT: SCANDINAVIAN WORKSHOP ON ALGORITHM THEORY
, 2002
"... ..."
The Nimble Type Inferencer for Common Lisp-84
- Tech. Rept., Nimble Comp
, 1990
"... data types model the semantic intent of the programmer with respect to individual variable values, so that global properties of these individual values (e.g., evenness or primeness of an integer value) are maintained. The assert construct allows for the specification of complex relationships among s ..."
Abstract
- Add to MetaCart
data types model the semantic intent of the programmer with respect to individual variable values, so that global properties of these individual values (e.g., evenness or primeness of an integer value) are maintained. The assert construct allows for the specification of complex relationships among several variables. However, since we are interested in improving run-time efficiency, we will assume that the program is already semantically correct, and will therefore concern ourselves only with the determination of tight lattice bounds on the values of variables. Performing type inference requires proving many small theorems about programs, and therefore runs the risk of being confused with the more difficult task of theorem-proving for the purpose of proving programs correct relative to some external criteria. While some of the techniques may be similar to both tasks, the goals are completely different. For example, it is considered acceptable and routine for correctness provers to inte...

