1,607 research outputs found

    Hybrid applications over XML - integrating the declarative and navigational approaches

    Get PDF
    We discuss the design of a quasi-statically typed language for XML in which data may be associated with different structures and different algebras in different scopes, whilst preserving identity. In declarative scopes, data are trees and may be queried with the full flexibility associated with XML query algebras. In procedural scopes, data have more conventional structures, such as records and sets, and can be manipulated with the constructs normally found in mainstream languages. For its original form of structural polymorphism, the language offers integrated support for the development of hybrid applications over XML, where data change form to re flct programming expectations and enable their enforcement

    A Notion of Dynamic Interface for Depth-Bounded Object-Oriented Packages

    Full text link
    Programmers using software components have to follow protocols that specify when it is legal to call particular methods with particular arguments. For example, one cannot use an iterator over a set once the set has been changed directly or through another iterator. We formalize the notion of dynamic package interfaces (DPI), which generalize state-machine interfaces for single objects, and give an algorithm to statically compute a sound abstraction of a DPI. States of a DPI represent (unbounded) sets of heap configurations and edges represent the effects of method calls on the heap. We introduce a novel heap abstract domain based on depth-bounded systems to deal with potentially unboundedly many objects and the references among them. We have implemented our algorithm and show that it is effective in computing representations of common patterns of package usage, such as relationships between viewer and label, container and iterator, and JDBC statements and cursors

    Object-oriented protocol hierarchies for distributed workflow systems

    Get PDF
    Distributed software systems such as groupware and workflow systems will play a key role in the near future. While numerous models which promise highly sophisticated functionality are proposed in the literature their implementation is still a difficult and very expensive task. Therefore existing systems fall far behind their promises. Entities of the workflow level are often autonomous. Consequently, they are related to each other in more than a fixed client/server configuration: they often perform their activities in collaboration. Workflow models also contain a lot of information about the system\u27s dynamics. If one uses objects as an implementation mode

    Run-time Variability with First-class Contexts

    Get PDF
    Software must be regularly updated to keep up with changing requirements. Unfortunately, to install an update, the system must usually be restarted, which is inconvenient and costly. In this dissertation, we aim at overcoming the need for restart by enabling run-time changes at the programming language level. We argue that the best way to achieve this goal is to improve the support for encapsulation, information hiding and late binding by contextualizing behavior. In our approach, behavioral variations are encapsulated into context objects that alter the behavior of other objects locally. We present three contextual language features that demonstrate our approach. First, we present a feature to evolve software by scoping variations to threads. This way, arbitrary objects can be substituted over time without compromising safety. Second, we present a variant of dynamic proxies that operate by delegation instead of forwarding. The proxies can be used as building blocks to implement contextualization mechanisms from within the language. Third, we contextualize the behavior of objects to intercept exchanges of references between objects. This approach scales information hiding from objects to aggregates. The three language features are supported by formalizations and case studies, showing their soundness and practicality. With these three complementary language features, developers can easily design applications that can accommodate run-time changes

    Top of the Heap: Efficient Memory Error Protection for Many Heap Objects

    Full text link
    Exploits against heap memory errors continue to be a major concern. Although many defenses have been proposed, heap data are not protected from attacks that exploit memory errors systematically. Research defenses focus on complete coverage of heap objects, often giving up on comprehensive memory safety protection and/or incurring high costs in performance overhead and memory usage. In this paper, we propose a solution for heap memory safety enforcement that aims to provide comprehensive protection from memory errors efficiently by protecting those heap objects whose accesses are provably safe from memory errors. Specifically, we present the Uriah system that statically validates spatial and type memory safety for heap objects, isolating compliant objects on a safe heap that enforces temporal type safety to prevent attacks on memory reuse. Using Uriah, 71.9% of heap allocation sites can be shown to produce objects (73% of allocations are found safe) that satisfy spatial and type safety, which are then isolated using Uriah's heap allocator from memory accesses via unsafe heap objects. Uriah only incurs 2.9% overhead and only uses 9.3% more memory on SPEC CPU2006 (C/C++) benchmarks, showing that many heap objects can be protected from all classes of memory errors efficiently

    A database model for object dynamics.

    Get PDF
    Object-oriented database systems, Dynamic object re-classification, Object role model, Dynamic class hierarchy, Object migration
    • …
    corecore