1,466 research outputs found
Semantics-directed implementation of method-call interception
We describe a form of method-call interception (MCI) that allows the programmer to superimpose extra functionality onto method calls at run-time. We provide a reference semantics and a reference implementation for corresponding language constructs. The setup applies to class-based, statically typed, compiled languages such as Java. The semantics of MCI is used to direct a language implementation with a number of valuable properties: simplicity of the implementational model and run-time adaptation capabilities and static type safety and separate compilation and reasonable performance. Our implementational development employs sourcecode instrumentation. We start from a naive implementational model, which is subsequently refined to optimise program execution. The implementation is assessed via benchmarks
Aspect-Oriented Programming with Type Classes
We consider the problem of adding aspects to a strongly typed language which supports type classes. We show that type classes as supported by the Glasgow Haskell Compiler can model an AOP style of programming via a simple syntax-directed transformation scheme where AOP programming idioms are mapped to type classes. The drawback of this approach is that we cannot easily advise functions in programs which carry type annotations. We sketch a more principled approach which is free of such problems by combining ideas from intentional type analysis with advanced overloading resolution strategies. Our results show that type-directed static weaving is closely related to type class resolution -- the process of typing and translating type class programs
AO-OpenCom: an AO-Middleware architecture supporting flexible dynamic reconfiguration
Middleware has emerged as a key technology in the construction of distributed systems. As a consequence, middleware is increasingly required to be highly modular and configurable, to support separation of concerns between services, and, crucially, to support dynamic reconfiguration: i.e. to be capable of being changed while running. Aspect-oriented middleware is a promising technology for the realisation of distributed reconfiguration in distributed systems. In this paper we propose an aspect-oriented middleware platform called AO-OpenCom that builds AO-based reconfiguration on top of a dynamic component approach to middleware system composition. The goal is to support extremely flexible dynamic reconfiguration that can be applied at all levels of the system and uniformly across the distributed environment. We evaluate our platform by the capability in meeting flexible reconfiguration and the impact of these overheads
Intrusion detection mechanisms for VoIP applications
VoIP applications are emerging today as an important component in business
and communication industry. In this paper, we address the intrusion detection
and prevention in VoIP networks and describe how a conceptual solution based on
the Bayes inference approach can be used to reinforce the existent security
mechanisms. Our approach is based on network monitoring and analyzing of the
VoIP-specific traffic. We give a detailed example on attack detection using the
SIP signaling protocol
On the Pursuit of Static and Coherent Weaving
Aspect-oriented programming (AOP) has been shown to be a useful
model for software development. Special care must be taken
when we try to adapt AOP to strongly typed functional languages
which come with features like type inference mechanism, polymorphic
types, higher-order functions and type-scoped pointcuts.
Specifically, it is highly desirable that weaving of aspect-oriented
functional programs can be performed statically and coherently. In
[13], we showed a type-directed weaver which resolves all advice
chainings coherently at static time. The novelty of this paper lies in
the extended framework which supports static and coherent weaving
in the presence of polymorphic recursive functions, advising
advice bodies and higher-order advices
The Design and Implementation of Bloqqi - A Feature-Based Diagram Programming Language
This dissertation presents the design and implementation of a new block diagram programming language, Bloqqi, for building control systems with focus on variability. The language has been developed in collaboration with industry with the goal of reducing engineering time and improving reuse of functionality.When building a control system for a plant, there are typically different variants of the same base functionality. A plant may have several variants of a tank, for example, one variant with heating and another one without. This dissertation presents novel language mechanisms for describing this kind of variability, based on diagram inheritance. For instance, Bloqqi supports specifying what features, like heating, the base functionality can have. These specifications are then used to automatically derive smart-editing support in the form of a feature-based wizard. In this wizard, the user can select what features the base functionality should have, and code is generated corresponding to these features. The new language mechanisms allow feature-based libraries to be created and extended in a modular way.This dissertation presents techniques for implementing rich graphical editors with smart editing support based on semantic analysis. A prototype compiler and graphical editor have been implemented for the language, using the semantic formalism reference attribute grammars (RAGs). RAGs allow tools to share the semantic specifications, which makes it possible to modularly extend the compiler with support for advanced semantic feedback to the user of the graphical editor
Concepts and their Use for Modelling Objects and References in Programming Languages
In the paper a new programming construct, called concept, is introduced.
Concept is pair of two classes: a reference class and an object class.
Instances of the reference classes are passed-by-value and are intended to
represent objects. Instances of the object class are passed-by-reference. An
approach to programming where concepts are used instead of classes is called
concept-oriented programming (CoP). In CoP objects are represented and accessed
indirectly by means of references. The structure of concepts describes a
hierarchical space with a virtual address system. The paper describes this new
approach to programming including such mechanisms as reference resolution,
complex references, method interception, dual methods, life-cycle management
inheritance and polymorphism.Comment: 43 pages. Related papers: http://conceptoriented.com
Recommended from our members
Debugging Woven Code
The ability to debug woven programs is critical to the adoption of Aspect Oriented Programming (AOP). Nevertheless, many AOP systems lack adequate support for debugging, making it difficult to diagnose faults and understand the program's structure and control flow. We discuss why debugging aspect behavior is hard and how harvesting results from related research on debugging optimized code can make the problem more tractable. We also specify general debugging criteria that we feel all AOP systems should support. We present a novel solution to the problem of debugging aspect-enabled programs. Our Wicca system is the first dynamic AOP system to support full source-level debugging of woven code. It introduces a new weaving strategy that combines source weaving with online byte-code patching. Changes to the aspect rules, or base or aspect source code are rewoven and recompiled on-the-fly. We present the results of an experiment that show how these features provide the programmer with a powerful interactive debugging experience with relatively little overhead
Constructing a reproducible testing environment for distributed Java applications.
The emergence of the global Internet, wireless data communications, and the availability of powerful computers is enabling a new generation of distributed and concurrent systems. However, the inherent complexity of such systems introduces many new challenges in system testing and maintenance. One of the major problems in testing such systems is that executions with internal non-deterministic choices make the testing procedure non-repeatable. A natural solution is to artificially force the execution of a program to take desired paths so that a test can be reproduced. However, with geographically distributed processes and heterogeneous platform architectures, distributed systems have imposed new challenges in developing effective techniques for reproducible testing. The goal of this research is to build an environment to automate testing for distributed and concurrent Java applications. We will focus on controlling the order of occurrences of input and remote call events according to a user-specified test scenario, which is composed of input data, a constraint expressed as a partial order over the input and remote call events, and expected output. The testing environment is by itself distributed and does not require source code intrusion into the application under test. With minor changes, the testing components can also be reused in CORBA-based applications implemented in Java.Dept. of Computer Science. Paper copy at Leddy Library: Theses & Major Papers - Basement, West Bldg. / Call Number: Thesis2003 .W35. Source: Masters Abstracts International, Volume: 42-05, page: 1769. Adviser: Jessica Chen. Thesis (M.Sc.)--University of Windsor (Canada), 2003
- …