Harold Ossher's research while affiliated with IBM Research and other places
What is this page?
This page lists the scientific contributions of an author, who either does not have a ResearchGate profile, or has not yet added these contributions to their profile.
It was automatically created by ResearchGate to create a record of this author's body of work. We create such pages to advance our goal of creating and maintaining the most comprehensive scientific repository possible. In doing so, we process publicly available (personal) data relating to the author as a member of the scientific community.
If you're a ResearchGate member, you can follow this page to keep up with this author's work.
If you are this author, and you don't want us to display this page anymore, please let us know.
It was automatically created by ResearchGate to create a record of this author's body of work. We create such pages to advance our goal of creating and maintaining the most comprehensive scientific repository possible. In doing so, we process publicly available (personal) data relating to the author as a member of the scientific community.
If you're a ResearchGate member, you can follow this page to keep up with this author's work.
If you are this author, and you don't want us to display this page anymore, please let us know.
Publications (114)
Techniques are presented for providing a software fitting assessment. The techniques may be performed by methods, apparatus, and/or computer program products. The techniques include automatically matching on a computer system one or more specified requirements for a project with one or more software functions stored in a repository. The automatical...
Korz is a new computational model that provides for context-oriented programming by combining implicit arguments and multiple dispatch in a slot-based model. This synthesis enables the writing of software that supports contextual variation along multiple dimensions, and graceful evolution of that software to support new, unexpected dimensions of va...
Korz is a new computational model that provides for context-oriented programming by combining implicit arguments and multiple dispatch in a slot-based model. This synthesis enables the writing of software that supports contextual variation along multiple dimensions, and graceful evolution of that software to support new, unexpected dimensions of va...
A mark-based containment system, in one aspect, may include a graphical user interface operable to receive an indication of a mark as a container marking, attribute one or more container attributes to the container marking, and store the container mark and the container attributes associated with the container mark.
Mobile devices require new interaction approaches for working with data, as inputting numbers into a spreadsheet on a tablet is especially tedious. Last year we presented SketchGraph [Martino et al. 2012] for sketching data in a fluid manner (Fig. 1). Here, we discuss observations of usability based on a user study.
We introduce the domain of enterprise context, as opposed to personal or execution context, and we present requirements for context-oriented programming technology arising out of this broader notion of context.
We illustrate enterprise context with scenarios in which data from across an enterprise, as well as data from outside an enterprise, are al...
As tablets become ever more powerful and popular, people want to use them broadly, including for business applications like spreadsheet data graphing. Tablets are better suited to informal exploration through sketching, however, than to inputting data into a spreadsheet. It would be much more appealing, and suitable to the medium, to sketch a graph...
This special issue sets an agenda for research into early software design, and this introduction outlines drivers and issues for that agenda. It argues that looking at software from a design perspective, understanding software as a designed artifact, and considering how design reaches into the whole software life cycle can bring significant benefit...
Sketching facilitates design in the exploration of ideas about concrete objects and abstractions. In fact, throughout the software engineering process when grappling with new ideas, people reach for a pen and start sketching. While pen and paper work well, digital media can provide additional features to benefit the sketcher. Digital support will o...
tools are often not used for tasks during the software lifecycle for which they should be more helpful; instead free-from approaches, such as office tools and white boards, are frequently used. Prior workshops explored why this is the case and what might be done about it. The goal of this workshop is to continue those discussions and also to form a...
Tables are an important tool used by business analysts engaged in early requirements activities (in fact it is safe to say that tables appeal to many other types of user, in a variety of activities and domains). Business analysts typically use the tables provided by office tools. These tables offer great flexibility, but no underlying model, and he...
Business analysts, business architects, and solution consultants use a variety of practices and methods in their quest to understand business. The resulting work products often end up being transitioned into the formal world of software requirement definitions or as recommendations for all kinds of business activities. We describe an empirical stud...
A serious tool gap exists at the start of the software lifecy-cle, before requirements formulation. Pre-requirements analysts gather information, organize it to gain insight, en-vision possible futures, and present insights and recom-mendations to stakeholders. They typically use office tools, which give great freedom, but no help with consistency...
"Flexible modeling tools" hold the promise of bridging the gap between formal modeling and free-form authoring. This workshop will bring together researchers and practitioners to explore ideas and showcase early results in this emerging field. Both formal modeling and free-form authoring offer important benefits for software architects and designer...
A serious tool gap exists at the start of the software lifecy-cle, before requirements formulation. Pre-requirements analysts gather information, organize it to gain insight, en-vision possible futures, and present insights and recom-mendations to stakeholders. They typically use office tools, which give great freedom, but no help with consistency...
Modeling tools are often not used for tasks during the software lifecycle for which they should be helpful; more free-from approaches, such as office tools and white boards, are frequently used instead. Why is this? What might be done to make modeling tools more suitable? What key research challenges must be overcome to achieve this? The goal of th...
When developers join a software development project, they find themselves in a project landscape, and they must become familiar with the various landscape features. To better understand the nature of project landscapes and the integration process, with a view to improving the experience of both newcomers and the people responsible for orienting the...
Business analysts, business architects, and solution consultants use a variety of practices and methods in their quest to
understand business. The resulting work products could end up being transitioned into the formal world of software requirement
definitions or as recommendations for all kinds of business activities. We describe an empirical stud...
Diagrams play a key role in the information systems domain. However to be meaningful, the diagrams are understood by interpreting visual cues in specific, conventionalized ways, termed conceptual models. One of the major pain points of conceptual models, specified as visual languages, is the inability to capture these visual languages effectively i...
Pre-requirements analysis requires modeling tools with unprecedented flexibility. The Business Insight Toolkit (BITKit) is a prototype of a new kind of modeling tool, aimed at offering the flexibility of office tools along with many of the advantages of modeling tools.
Before requirements analysis takes place in a business context, business analysis is usually performed. Important concerns emerge during this analysis that need to be captured and communicated to requirements engineers. In this paper, we take the position that tagging is a promising approach for identifying and organizing these concerns. The fact t...
This workshop explored why modeling tools are not used in many situations where they should be helpful, what might be done to make them more suitable, and what key research challenges must be overcome to achieve their adoption.
When developers join a project, they find themselves in a new project landscape and must orient themselves quickly. To investigate the nature of this project landscape, and how we could help newcomers orient themselves, we have started an exploratory study using grounded theory. We pri-marily collect our data by interviewing experienced devel-opers...
Using and extending a framework is a challenging task whose difficulty is exacerbated by the poor documentation that generally comes with the framework. Even in the presence of documentation, developers often desire implementation examples for concrete guidance. We propose an approach that automatically locates implementation examples from a code b...
Successful open source projects foster collaboration and innovation while benefiting from a faster pace of development, but are often plagued by poor developer¿s documentation. In this paper, we present the rationale and the architecture of Mismar, a toolset tightly integrated in the Eclipse environment and implementing a concern-oriented approach...
This talks describes a number of principles and key concepts underlying concern manipulation, the use of concerns to aid in a variety of software development tasks. Concern modeling and exploration, query and composition are considered. The principles and concepts guided work on the Concern Manipulation Environment (CME), which provides both protot...
Program documentation is often incomplete and out of date due to its tediousness and perceived low value. This requires evolution tasks to be preceded by time-consuming exploration. In this paper, we explore a concern-oriented approach to documentation that focuses on the code artifacts and their relationships to make the process of creating and us...
This position paper suggests research directions in the area of virtual machines supporting aspect-oriented capabilities in the context of object-oriented languages.
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...
Producing usable documentation has always been a tedious task, and even communicating important knowledge about a system among collaborators is difficult. This paper describes an approach to creating documentation in the form of guides, which encapsulate passive information about important tasks along with active steps to be followed. The approach...
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...
This paper describes how to accomplish multi-dimensional separation of concerns (MDSOC) with Hyper/J<sup>TM</sup>, a tool available for free download, in the context of standard Java<sup>TM</sup> development. Hyper/J does not require any special languages or language variants, compilers, development environments, or processes - it works with standa...
This paper describes how to accomplish multi-dimensional separation of concerns (MDSOC) with Hyper/J/sup TM/, a tool available for free download, in the context of standard Java/sup TM/ development. Hyper/J does not require any special languages or language variants, compilers, development environments, or processes - it works with standard Java, u...
Hyper/J™ supports flexible, multi-dimensional separation of concerns for Java™ software. This demonstration shows how to use Hyper/J in some important development and evolution seenarios, emphasizing the software engineering benefits it provides.
Simplifying development, evolution, and integration of Java using Hyper/J.
This article focuses on aspect oriented programming (AOP) which is a new evolution in the line of technology for separation of concerns, and is a technology that allows design and code to be structured to reflect the way developers want to think about the system. According to the author, AOP builds on existing technologies and provides additional m...
Hyper/J supports a new approach to constructing, integrating and evolving software, called multi-dimensional separation of concerns. Developers can decompose and organize code and other artifacts according to multiple arbitrary criteria (concerns) simultaneously - even after the software has been implemented - and synthesize or integrate the pieces...
Separation of concerns can provide a host of well-known and crucial benefits, but only if the concerns that are separated and modularized match the concerns one needs to deal with - which can be of damatically different kinds in different development contexts. Traditional modularization approaches have proven inadequate. Work in the growing area of...
Aspect-oriented programming is a new evolution in the line of technology for separation of concerns technology that allows design and code to be structured to reflect the way developers want to think about the system. AOP builds on existing technologies and provides additional mechanisms that make it possible to affect the implementation of systems...
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...
Separation of concerns is at the core of software engineering, and has been for decades. This has led to the invention of many interesting, and effective, modularization approaches. Yet many of the problems it is supposed to alleviate are still with us, including dangerous and expensive invasive change, and obstacles to reuse and component integrat...
Despite the well-known benefits of separation of concerns, and despite the presence of mechanisms to achieve separation of concerns in all modern software formalisms, software artifacts continue to exhibit properties associated with poor separation of concerns. Comprehensibility degrades over time; impact of change is high; reuse and traceability a...
: Several modern approaches to separation of concerns support identification and encapsulation of important concerns that could not traditionally be encapsulated. They generally require that the software be written up front with the appropriate modularization. However, as software evolves, the need arises for new concerns, often of new kinds. This...
Hyper/J<sup>TM</sup> supports flexible, multi-dimensional separation of concerns for Java<sup>TM</sup> software. This demonstration shows how to use Hyper/J in some important development and evolution scenarios, emphasizing the software engineering benefits it provides
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...
Subject-oriented programming (SOP) is a practical approach to object-oriented (OO) programming-in-the-large. It addresses a number of well-known limitations of OO development, without forcing developers to adopt new languages or to abandon the OO paradigm. These limitations arise especially when using OO technology to develop large systems, suites...
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 ...
The identification and integration of join points-locations where different components describe overlapping concerns-is at the core of research in AOP. The selection of potential join points-the types of locations in code, such as statements or declarations, that may be joined-affects, either positively or negatively, many properties of both aspect...
Subject-oriented programming (SOP) is an extension of OO programming that permits non-invasive extension, customization and integration of OO components.
Support for SOP in C++ and Java was demonstrated.
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...
When we understand, specify, and develop systems, we use certain concepts and constructs to deal with complexity. Object-oriented (OO) approaches provide good ways for doing so. However, many existing OO approaches (perhaps based on object models used in existing OO languages) cannot solve important problems encountered in large and complex systems...
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...
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...
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...
A mechanism, called views, that allows programmers to specify
multiple interfaces for objects and to control explicitly access to each
interface is described. This mechanism provides a simple and flexible
means of specifying enforceable access restrictions at many levels of
granularity. It also results in system organization that supports
browsing...
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...
A two-dimensional organization for object-oriented systems and a
browser supporting that organization are described. The organization
provides sites for documenting both generic functions and object types,
allows convenient browsing and information hiding according to both
function and type, and supports the notion of abstract types. Also
described...
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...
The author describes a case study in which the grid mechanism was
used to describe the structure of Scribe, a document-processing system
in widespread use. The structure description is presented and explained
in some detail, and the effectiveness of the grid for specifying the
important structural features of Scribe is discussed. It is shown that
t...
Tables are an important tool for business analysts engaged in early requirements collection and analysis. Its tabular layout provides a convenient method for organizing data and presenting it back to stakeholders. However, when the business analyst has multiple tables that refer to the same data, maintaining consistency and managing its structure c...
Citations
... Ce paradigme offre un certain nombre d'avantages dans la conception et l'implémentation de systèmes complexes [Hachani, 2006] : -il permet le développement d'objets décentralisés [Harrison et al., 1994]. Cependant les objets partagés par les développeurs peuvent avoir des définitions relatives aux vues subjectives des développeurs. ...
... These scenarios lead to adhoc manifestation of quality concerns that initially did not exist at one stage of the development of a system, but became apparent due to unforeseen changes. In practice, this can be partially avoided by leveraging solutions such as separation of concerns [208] and those related to quality concerns [205]. The separation of these concerns makes the code much simpler to understand and maintain. ...
... Examples of extension include multiple inheritance in object-oriented programming, aspect weaving [38] in aspect-oriented programming. Multiple inheritance can be defined as a composition mechanism that extends multiple classes (e.g. ...
... In addition, we can find other proposals like Lambic [24] and Flute [25], proposed COP language introducing the definition and realization of adaptations to the context for group behavior and reactive programming, respectively. Finally, we can find alternatives to address issues related to context-oriented implementations that go beyond the concepts of layers like the language Korz [48] and context-oriented behavioral programming [49]; however, these proposals are beyond the scope of this paper. ...
... Despite all these possibilities, the software developer teams of participated investigated project decided to user their own simple logger for logging. Logging is modelled as a separate, singleton class [28] that is included in the project and called. Finally, complete content and organizational editing before formatting. ...
... In such a context, other composition operators exist, which are commutative by design. For example, HyperJ [TOJ02] considers a program p as the symmetric composition of program slices {s 1 , . . . , s n }, i.e., p = {s 1 ⊕ . . . ...
... As a result, the process enables the optimization of various software techniques. Harrison and Ossher (1993) extended subject-oriented programming's Multidimensional Separation of Concerns (MDSC) to the area of aspect orientation. MDSC can refer to a group of audacious goals (Ossher & Tarr, 2002). ...
... Large-scale processing of complex events gains new relevance with the big data movement and an increasing availability of real-time data, for instance for enterprise applications , or societal and security-related scenarios. Companies want to leverage real-time big data for new products and improved services [1] , while traffic and crowd monitoring systems could be used to prevent traffic jams or guide rescue services in emergency situations. Such applications require flexible and maintainable event processing systems that can be adapted easily for instance to recognize new emergency scenarios or business cases. ...
... The first group argues further that aspects produce tangled representations that are difficult to understand and maintain [8] . Moreover, crosscutting is relative to a particular decomposition [9]. See for instanceFig. ...
... Also, use of pre-processors eliminated resolution of variability at runtime. Advanced modularization and composition techniques such as Aspect/J [18], Hyper/J [32], AHEAD [5], Mixin [7], Jiazzi [24], Scala [26], ClassBoxes [1], Composition Filters [14], Caesar [25], and Framed Aspects [23] fare better in comparison though with some limitations still. For example, Aspect/J can compose cross-cutting concerns at design time and runtime as long as the composition lies within the fixed join-point model supported. ...
Reference: Cost Estimation for Model-Driven Engineering