
William HarrisonRegent University · School of Divinity
William Harrison
About
57
Publications
1,456
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
4,421
Citations
Citations since 2017
Introduction
Skills and Expertise
Publications
Publications (57)
Through its decade-and-a-half long evolution, the aspect-oriented software community has occasionally struggled with its identity -- revisiting the question "What kinds of technologies make up aspect-oriented software and who should be interested in it?" We attempt to de-construct "aspect-oriented" into several issues making up its foundation, beli...
Composition is the process of creating new artifacts from a set of input artifacts by combining the content of the input artifacts
according to some given specifications. Composition engines are a distinct kind of software component. Like compilers, parsers,
and UI-generators, they have their own domain of discourse and base of concepts, their own...
The Concern Manipulation Environment (CME) is an AOSD environment in which software is organized and manipulated in terms of concerns. This paper is about ConMan, the CME concern manager, which supports the identification, definition, encapsulation, extraction and composition of concerns. ConMan models software in terms of concerns, relationships,...
In the past few years, the application of aspect-oriented software development (AOSD) technologies has helped improve the development, integration, deployment, evolution, and quality of object-oriented and other software for a growing community of software developers. The Concern Manipulation Environment (CME) is an open-source Eclipse project that...
The area of aspect-oriented software development (AOSD) has seen much progress in the past few years towards improving the quality of object-oriented, generative, and component-based software engineering, including some use in large-scale applications. Large-scale AOSD requires tools, paradigms, and methodologies that support multiple aspect models...
The Concern Manipulation Environment (CME) aims to provide a set of open, extensible components and a set of tools that promote aspect-oriented software development (AOSD) throughout the software lifecycle. It has two main goals: To provide an open, integrated development environment (IDE) to enable software engineers to use AOSD techniques through...
Report for early dissemination of its contents. In view of the transfer of copyright to the outside publisher, its distribution outside of IBM prior to publication should be limited to peer communications and specific requests. After outside publication, requests should be filled only by reprints or legally obtained copies of the article (e.g. , pa...
Composition as an approach to software construction has been of interest since at least the beginning of work on Module Interconnection Languages in the late 1970's. Most recently, research in aspect-oriented software development (AOSD) has exploited composition approaches that provide more flexible extension, adaptation and integration of componen...
Aspect-Oriented Software is a broad term, encompassing several different views on the nature of the aspects and the relationships between aspects and objects. Attaching aspects to objects is one way of forming a group. While there are many useful patterns of interaction, e.g. strategies [2], decorators, and the like, we focus on groups in which the...
One of the difficult issues in mapping UML to Java is the question of how to deal with multiple-inheritance used in a high-level design. In the absence of composition, Tengger 1 (a UML-to-Java generator) makes an admittedly oversimplified design decision in answer. Work on the use of Tengger in design-for-composition situations has suggested a much...
Separation of concerns has been central to software engineering for decades, yet its many advantages are still not fully realized. A key reason is that traditional modularization mechanisms do not allow simultaneous decomposition according to multiple kinds of (overlapping and interacting) concerns. This workshop was intended to bring together rese...
In practice, object-oriented design models have been less useful throughout the lifetime of software systems than they should be. Design models are often large and monolithic, and the structure of the designs is generally quite different from that of requirements. As a result, developers tend to discard the design, especially as the system evolves,...
Tools and environments to aid developers in producing software have existed, in one form or another, since the early days of computer programming. They are becoming increasingly crucial as the demand for software increases, time-to-market decreases, and diversity and complexity grow beyond anything imagined a few decades ago. In this paper, we brie...
Introduction "Separation of concerns" is a fundamental principle within software engineering, with its benefits well-documented. Looking at "separation of concerns" from the perspective of its application to each phase of the software development lifecycle, considerable research exists applying the principle within each individual phase. Some examp...
Done well, separation of concerns can provide many software engineering benefits, including reduced complexity, improved reusability, and simpler evolution. The choice of boundaries for separate concerns depends on both requirements on the system and on the kind(s) of decomposition and composition a given formalism supports. The predominant methodo...
Done well, separation of concerns can provide many software engineering benefits, including reduced complexity, improved reusability, and simpler evolution. The choice of boundaries for separate concerns depends on both requirements on the system and on the kind(s) of decomposition and composition a given formalism supports. The predominant methodo...
Work on aspect-oriented programming [3] and subject-oriented programming [2,4] has identified difficulties associated with code tangling in software development. Each has provided solutions for separating code that affects many units of functionality in the system (i. e. cross-cutting code), with corresponding composition techniques to integrate cr...
This paper presents a simple and efficient data flow algorithm for escape analysis of objects in Java programs to determine (i) if an object can be allocated on the stack; (ii) if an object is accessed only by a single thread during its lifetime, so ...
iented programming is an enhancement of object-oriented programming that allows decentralizedclass definition. An application developer who needs new operations associated with classes canimplement them him/herself, not by editing existing code for the classes, but as a separate collection ofclass definitions called a subject. Multiple subjects can...
Subject-oriented programming supports composition of object-oriented programs or program fragments called subjects. This article presents an approach to specifying desired compositions in a convenient and concise manner. We motivate the need for subject composition, and illustrate the key issues. We define a low-level model in which composition is...
Subject-oriented programming supports composition of object-oriented programs or program fragments called subjects. This paper presents an approach to the composition rules used to specify composition details. Rules can be generic, allowing different subrules to be "plugged into" higher-level rules, and they include a means of specifying exceptions...
Subjectivity in object-oriented systems is a new research area. At this, the first workshop in this area, there was much discussion of fundamental concepts and issues, as well as of perceived needs for subjectivity and models for realizing it. The discussion is summarized here, and a list of issues that were identified during the workshop is presen...
or recompilation of existing source code. It has serious limitations, however [4]. For example, it becomes exceedingly clumsy when extensions to high-level classes are intended to be inherited by subclasses: use of pure subclassing for this purpose without modifying the existing class hierarchy requires duplication of the entire subhierarchy. Subje...
Subjectivity in object-oriented systems is a new research area. At this, the first workshop in this area, there was much discussion of fundamental concepts and issues, as well as of perceived needs for subjectivity and models for realizing it. The discussion is summarized here, and a list of issues that were identified during the workshop is presen...
Object-Oriented technology is often described in terms of an interwoven troika of themes: encapsulation, polymorphism, and inheritance. But these themes are firmly tied with the concept of identity. If object-oriented technology is to be successfully scaled from the development of independent applications to development of integrated suites of appl...
Making extensions to existing systems is a critically important activity in object-oriented proexisting application. We are in full agreement with Lieberman [7] that one wants a small extension to behavior to require just a small extension to code, and that adding new code is good, whereas modifying existing code is bad. We call this approach “exte...
The problem of integrating separately written tools so that they
work cooperatively, a key issue in computer-aided software engineering
(CASE) frameworks, is addressed. An extended object-oriented approach to
tool integration that integrates coarse-grained and fine-grained
approaches is described. The advantages of both the approaches are
discussed...
The authors discuss an object model in which instance-variable
definitions are associated with the implementations of each method in a
class, rather than with the class as a whole. This allows avoidance of
recompilation of methods and invalidation of existing objects when new
instance variables are introduced for a class, smooth integration of
temp...
RPDE3 is a framework for building environments. Great emphasis has been placed on supporting changes of various kinds, such as extensions to existing environments and creation of new environments by adapting existing environments. We have a three-pronged approach to supporting change: (1) use of a central framework providing key services is a unifo...
An extension of conventional procedures in which procedure bodies
handling multiple cases can be subdivided into separate bodies handling
a single case each is described. Subdivision is based on criteria
specified by the programmer. Underlying call support selects the body to
execute in response to each call. Subdivided procedures support a
program...
Development of any large system or artifact requires the coordination of many developers. Development activities can occur concurrently. The goal of coordination is to enhance, not restrict, developer productivity, while ensuring that concurrent development activities do not clash with one another.This paper presents a formal model of concurrent de...
This paper presents our experience building an extendible software development environment using the object-oriented paradigm. We have found that object instances provide a natural way to model program constructs, and to capture complex relationships between different aspects of a software system. The object-oriented paradigm can be efficiently imp...
This paper presents our experience building an extendible software development environment using the object-oriented paradigm. We have found that object instances provide a natural way to model program constructs, and to capture complex relationships between different aspects of a software system. The object-oriented paradigm can be efficiently imp...