UNIVERSITY OF CALIFORNIA, IRVINE THESIS

advertisement
UNIVERSITY OF CALIFORNIA,
IRVINE
The Integration of Palantı́r into the Eclipse Open Source Platform
THESIS
submitted in partial satisfaction of the requirements
for the degree of
MASTER OF SCIENCE
in Information and Computer Science
by
Ryan Yukio Yasui
Thesis Committee:
Professor André van der Hoek, Chair
Professor David F. Redmiles
Professor Susan E. Sim
2004
c 2004 Ryan Yukio Yasui
The thesis of Ryan Yukio Yasui is approved:
Committee Chair
University of California, Irvine
2004
ii
To my family
iii
TABLE OF CONTENTS
LIST OF FIGURES
vi
LIST OF TABLES
vii
ACKNOWLEDGMENTS
viii
ABSTRACT OF THE THESIS
ix
1 Introduction
1
2 Literature Review
2.1 Definitions of Tool Integrations
2.1.1 Presentation . . . . . . .
2.1.2 Data . . . . . . . . . . .
2.1.3 Control . . . . . . . . .
2.1.4 Process . . . . . . . . .
2.2 Event-Based Integration . . . .
2.3 Problems in Integration . . . .
2.3.1 Heterogeneity . . . . . .
2.3.2 Architectural Mismatch
2.4 Analysis of Related Literature .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
4
5
6
7
8
9
9
9
11
3 Problem Statement
3.1 Palantı́r Architecture . . .
3.1.1 Event Wrapper . .
3.1.2 Event Service . . .
3.1.3 Internal State . . .
3.1.4 Extractor . . . . .
3.1.5 Visualization . . .
3.2 Eclipse Architecture . . .
3.2.1 Platform Runtime .
3.2.2 Workspace . . . . .
3.2.3 SWT . . . . . . . .
3.2.4 JFace . . . . . . .
3.2.5 Workbench . . . .
3.3 Eclipse Plug-in Creation .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12
13
13
14
15
15
15
16
17
17
18
18
18
18
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
iv
3.4
Analysis of the Architectures . . . . . . . . . . . . . . . . . . . . . . .
19
4 Approach
20
5 Implementation with a CVS Repository
5.1 Event Wrapper Modifications . . . . . . . . . . . . . . . . . . . . . .
5.2 Conversion of Palantı́r Visualizations to Eclipse Views . . . . . . . . .
22
22
26
6 Implementation with a Subversion Repository
29
7 Validation Plan
7.1 Example Development Scenario
7.2 Verification of the Integration .
7.2.1 Presentation . . . . . . .
7.2.2 Data . . . . . . . . . . .
7.2.3 Control . . . . . . . . .
7.2.4 Process . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
31
31
32
32
33
34
34
8 Analysis of the Integration
35
9 Conclusion
37
Bibliography
38
v
LIST OF FIGURES
3.1
3.2
Palantı́r Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eclipse Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
16
5.1
5.2
Architecture of the Palantı́r/Eclipse Integration . . . . . . . . . . . .
Screenshot of the Impact and Severity Triangles . . . . . . . . . . . .
25
27
vi
LIST OF TABLES
3.1
Palantı́r Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vii
14
ACKNOWLEDGEMENTS
Acknowledgements go here
viii
ABSTRACT OF THE THESIS
The Integration of Palantı́r into the Eclipse Open Source Platform
By
Ryan Yukio Yasui
Master of Science in Information and Computer Science
University of California, Irvine, 2004
Professor André van der Hoek, Chair
The current implementation of Palantı́r, a Configuration Management workspace
awareness tool, is very mature, with integrations with RCS, CVS and Subversion.
However, these integrations are limited to the Configuration Management system,
restricting the available information to the activities in the repository, and forcing
the developer to use separate tools for all other development tasks. The Eclipse open
source platform is quickly becoming the development environment of choice due to
its tight integration of various development tools including text editors, debuggers,
and source control systems in a single IDE. The Eclipse platform also has facilities for
contributing customized functionality to the platform. This makes it an attractive
choice in which to integrate Palantı́r.
The objective of this thesis is to examine this integration. It determines if such
an integration is possible and describes the architectural characteristics of Palantı́r
and Eclipse that make the integration simple or difficult.
This thesis will examine the general issues surrounding the integration of the two
architectures, describe the particular integration and its use in an example development scenario, and validate the soundness of the integration using a set of well-defined
principles. The experience with the example scenario verified that all functionality
was preserved in the integration. According to the principles used, the integration
also proved to be sound.
ix
Chapter 1
Introduction
Palantı́r, a Configuration Management (CM) workspace tool, is designed to improve
coordination between software developers working in parallel and reduce the number
of conflicts by providing an awareness of the activities in the workspaces of other
developers [SNvdH03]. However, the existing implementation is only integrated with
three Configuration Management systems, RCS, CVS and Subversion, thus restricting
the available information to the activities in the CM repository. In addition, it requires
that the developer uses separate tools for all other development activities. Although
this is fairly common, an environment that combines tools for the majority of software
development tasks is desirable. The Eclipse open source platform can help to provide
this environment. Eclipse is quickly becoming the development IDE of choice. It
has a tight integration of many development tools, including editors, debuggers, and
source control facilities, and allows for the addition of customized functionality to
the platform in the form of a plug-in [Ecl04]. Therefore, Eclipse is a very attractive
candidate for the integration of Palantı́r.
The focus of this thesis is to examine this integration. The Literature Review
will address the basic issues surrounding the integration of architectures, including
some properties of successful integrations, potential road blocks that exist, and an
1
example of a type of integration. The Problem Statement will discuss the specifics of
the two architectures, describing the points at which the integration will occur, and
properties of the architectures that will simplify the integration. The Approach will
briefly describe the steps that were taken to achieve the integration. The Validation
Plan will include the two types of validation that were performed.
2
Chapter 2
Literature Review
A considerable amount of research has been devoted to the integration of software
environments and tools. From integrated project-support environments (IPSE) to integrated computer-aided software engineering tools (ICASE) to integrated softwareengineering environments (ISEE), there has been a push to develop more effective
tools and integration techniques. One motivation for this is that refining integration techniques can facilitate an increase in the reuse of components, which has been
cited as having the potential for enormous cost savings [Bro95]. In order to take
advantage of the benefits that integrated tools can provide, the meaning of architectural integration and the underlying issues surrounding the integration should be
understood.
2.1
Definitions of Tool Integrations
Thomas and Nejmeh believe that integration is not a property of a tool but of its
relationships with other elements in the environment [TN92]. They extend a subset
of Wasserman’s definitions of the five types of integration: platform, presentation,
data, control, and process integration [Was90]. These types define properties that
characterize the various relationships between tools in an integration. By defining
3
these properties, a determination can be made if the integration meets the expectations of the user, who desires a well integrated tool, and the designer, who desires an
easily integrated tool.
2.1.1
Presentation
The goal of presentation integration is to improve the efficiency and effectiveness of
the user interaction with the tools. In order to do this, Thomas and Nejmeh propose
a number of steps to reduce the cognitive load of the user by letting them reuse their
experience when using the different tools [TN92].
• Reduce the number of interaction and presentation paradigms. Examples of
these paradigms are file system navigation, and hypertext navigation.
• Provide interaction and presentation paradigms that match the user’s mental
model.
• Meet the user’s response time expectations.
• Ensure that accurate and useful information is maintained.
Appearance and Behavior
Appearance and behavior is concerned with the similarities between the tools’ screen
appearance and interaction behavior. This property captures the lexical and syntactic
similarities and differences between the tools’ user interface. Tools are well-integrated
with respect to this property if the user can apply the same experience and expectations to the interface of each tool.
Interaction
The interaction paradigm is concerned with the extent that the tools use the same
metaphors and mental models. Tools are well-integrated if the metaphors and mental
4
models are similar. For example, if a tool uses the desktop metaphor, the tool that
it is integrated with should also use this metaphor.
2.1.2
Data
The goal of the Data property is to ensure that all information is managed consistently,
regardless of the operations that each tool performs on it. There are five properties
of Data integration.
Interoperability
Since the integrated tools will be operating on the same data, it is important that the
amount of work required to make data usable by each tool is minimal. Well-integrated
tools have a common view of the data. The greater the differences in the view of the
data by each tool, the more transformations need to occur for a tool to use the data
of another. These differences can range from different character representations to
different information models.
Nonredundancy
This property is concerned with the amount of data that is stored by each tool and
duplicated by the other tool. The tools are well-integrated if there is little redundant
data. Maintaining consistency of the data across tools is the central problem of
duplicate data. If redundant data is necessary, a strategy must be chosen to update
the data in both tools.
Data Consistency
Cooperation to maintain specific semantic constraints on the data is another measure
to determine how well tools are integrated. The tools must indicate their actions and
the effects of these actions on the constrained data to be considered well-integrated.
5
Data Exchange
Data exchange is similar to Interoperability except that data exchange also refers to
non-persistent data. This can include values that are initially communicated to a tool
before execution, or values communicated during execution. Since tools may exchange
data, they must ensure that the provided data is usable by other tools. An agreement
must exist on the format and semantics of the data. Tools are well-integrated with
respect to this property if little work on format and semantics is needed for the data
exchange.
Synchronization
Synchronization is concerned with the communication of changes to nonpersistent
data made by a tool. A portion of the nonpersistent data needed for execution might
be duplicated across different tools. Changes to the data must be communicated to
other tools that also require this data. Well-integrated tools communicate all such
changes.
2.1.3
Control
Integrated tools must share functionality. Ideally, the functionality of all tools should
be available to all other tools and the provider of the functionality need not be aware of
the users of the functionality. To facilitate sharing, each provider must communicate
the operations to be performed and the requisite data for the operations. There are
two distinct properties of control: provision and use.
Provision
The provision property is concerned with the extent that a tool’s services are used by
other tools in the environment. A tool is well-integrated with respect to this property
if it offers services that other tools use and need.
6
Use
The use property is the extent that a tool uses the services provided by other tools.
A well-integrated tool uses the services of other tools appropriately. The tools must
consider the replacement of its services by the services of other tools to achieve high
use integration. This requires the use of highly-modular tools.
2.1.4
Process
Inherently, a tool has a set of assumptions about the processes in which it may be
used. If the tools have a consistent set of assumptions regarding these processes, they
are well-integrated. The degree of consistency is directly related to the potential for
integration. There are three dimensions of process integration: process step, process
event, and process constraint.
Process Step
The process step dimension measures the degree of cooperation between tools to
produce a result. A process step is a unit of work that yields this result. The step
may be decomposed into sub-steps that are independently executed by the various
tools. Each sub-step may have pre-conditions that must be acheived before it can
execute. If the goals of each process sub-step are achieved, allowing other tools to
attain their goals, the tools are well-integrated.
Process Event
The events that support a process are the concern of the process event dimension. A
process event is a condition that arises during a process step that may result in the
execution of an associated action. How well the tools agree on these events determines
how well they integrate with respect to this dimension. The two aspects of this
7
agreement are that a tool’s preconditions should contain the events generated by other
tools, and that the generated events should help satisfy other tools’ preconditions.
Process Constraint
A process constraint restricts some aspect of the process. In this dimension, how well
the tools integrate depends on how well they cooperate to enforce a constraint. Tools
are well integrated if they make similar assumptions about the range of constraints
that they recognize.
2.2
Event-Based Integration
The definitions listed above describe the types of integrations and their properties.
The approaches to integration can be categorized as loose integration, where components have little or no knowledge of the others, or tight integration, where each
component requires much knowledge about other components. The most prevalent
approach to loose integration is the event-based approach [BCTW96]. Here, the
components react to events that are announced by other components. These events
can be triggered by updates to data that other components are concerned with.
There are two general methods of communication in event-based integration approaches: Point-to-Point and Multicast. In point-to-point communication, data from
one component is sent directly to another component, either through procedure calls
or by sending the data to another component’s unique ID. In multicast communication, data is sent from one component to a set of other components through implicit
invocation or a software bus. Implicit invocation occurs when components express
interests in receiving certain types of data from other components. This is commonly
done with the registration of event listeners. Communication through a software bus
requires that the components’ input and output are bound to an abstract bus. Data
8
sent through the bus channel is received by all components that have an input to that
channel.
2.3
Problems in Integration
The definitions of integration and the discussion of the event-based approach serve as
a clear guide for integrating architectures. However, there have been many problems
encountered when trying to perform an architectural integration. These problems
stem from issues with heterogeneity and mismatched assumptions among the components.
2.3.1
Heterogeneity
In many cases, integration problems exist because the components do not fit well
together. This is caused by heterogeneity between components. Components that are
implemented in different languages, run on different hardware and software platforms,
and have different control and data models cannot simply be connected together and
expected to work properly. Transformations are necessary so that the components
can communicate and interact successfully. The types of transformations needed are
dependent on the type of differences that exist.
2.3.2
Architectural Mismatch
For the most part, these interoperability issues can be overcome. The more difficult
problem is architectural mismatch [GAO95]. This stems from the conflicting and
often implicit assumptions that a component makes about the environment that is
being used. Consequences of architectural mismatch are an excessive amount of code,
poor performance of the integrated system, the need to modify external packages
and existing functions, creation of unnecessarily complicated tools, and an error9
prone construction process. There are four categories of assumptions that lead to
architectural mismatch.
Nature of Components
This category is made up of three sub-categories: Infrastructure, Control Model and
Data Model. Infrastructure is the assumption regarding the additional infrastructure
that a component needs to provide or expects to use. Control Model assumptions are
those about which component holds the main thread of control. Assumptions about
the Data Model revolve around the nature and format of the data that a component
will be accessing.
Nature of Connectors
This category contains two sub-categories: assumptions about the communication
protocol between components and assumptions about the format of the communicated
data. A mismatch in either sub-category can lead to a substantial loss in performance.
A difference in the communication protocol might necessitate multiple connectors
between components; one for each protocol. Conflicting assumptions about the data
format would require a translation for each message passed between components.
Global Architectural Structure
Another class of assumptions that lead to architectural mismatch involves the global
architectural structure of the integrated components. For example, if a component
assumes that it is independent of other components while the architecture dictates
that components must cooperate and delegate tasks to other components, then there
are mismatched assumptions. In this case, any mechanisms that the first component
has to ensure its independence will be in conflict with the integration.
10
Construction Process
The final category contains assumptions about the code and the dependency structure of the code modules. Discrepancies would result in a complicated build process
in order to ensure that the dependencies of a component are available during compilation.
2.4
Analysis of Related Literature
The properties defined by Thomas and Nejmeh provide a precise set of principles to
guide the integration effort. In addition, the discussion of the event-based integration
approach provides a framework of the architectural integration that is applicable to
Palantı́r. The discussion of the problems that can arise will also guide the effort.
11
Chapter 3
Problem Statement
The original implementation of Palantı́r had an integration with three Configuration
Management systems: RCS, CVS and Subversion. These integrations are restricted
to the CM system. Thus, all other software development activities, including writing
the code, compiling, and debugging, must be done outside of Palantı́r. Although
Palantı́r is not necessarily concerned with these activities, combining then into one
environment would be extremely useful to the developer. Since the Eclipse platform
has facilities for all of these development activities as well as a Configuration Management interface, an integration of Palantı́r with Eclipse would address this issue.
However, the architecture of the Eclipse platform is much more complex than that of
a simple CM system. Therefore, the techniques used to integrate Palantı́r into RCS,
CVS and Subversion are not sufficient for an Eclipse integration. The aim of this
thesis is to examine this integration, implement it, and suggest any modifications or
improvements to the Palantı́r architecture.
12
Visualization(s)
Visualization(s)
Extractor
Extractor
Internal State
Internal State
Event Service
Event Wrapper
Event Wrapper
CM Client
CM Server
CM Client
Workspace
CM
Repository
Workspace
Figure 3.1: Palantı́r Architecture
3.1
Palantı́r Architecture
The original Palantı́r architecture is shown in Figure 3.1 [SNvdH03]. The arrows
represent the flow of information, the grey ovals represent typical configuration management components, and the white ovals represent the Palantı́r components. Each
of these components will be described below.
3.1.1
Event Wrapper
The event wrapper intercepts and interprets the activities in the Configuration Management workspace. If the activity is relevant to Palantı́r, the event wrapper collects the necessary information and constructs events that will be broadcast to other
Palantı́r clients. The commands and activities that each CM system provides and
produces are not uniform across the various systems. Since this component has a
13
Table 3.1: Palantı́r Events
Event
Populated
Unpopulated
Synchronized
ChangesInProgress
ChangesReverted
ChangesCommitted
Added
Removed
Renamed
Moved
SeverityChanged
Meaning
Artifact has been placed in a
workspace
Artifact has been removed from a
workspace
Artifact has been synchronized with
the repository
Artifact has been modified in the
workspace
Artifact has been returned to its
original state
New version of an artifact has been
committed to the repository
New artifact has been added to the
workspace
Artifact has been removed from the
workspace
Artifact has been renamed
Artifact has been moved
Severity value of an artifact has
changed
direct interface with the CM client, it is specific to the CM system used. However, it
does not affect the interaction that a user has with the system.
3.1.2
Event Service
The event service is responsible for distributing events to the Palantı́r clients. It is
implemented using the S iena event notification service [CRW01]. The events are
the basis of the Palantı́r data model. Each one represents the state of an artifact in
the workspace at any particular time. Components use information from these events
to perform their functions. Table 3.1 lists the events along with a brief description
of their meaning [SNvdH03].
14
3.1.3
Internal State
The internal state is responsible for maintaining a record of the activities in both the
local workspace as well as the workspaces of the other users. It subscribes to the
workspace activities that are relevant to the local workspace. The relevant activities
are defined as those that correspond to existing artifacts in the local workspace. The
internal state is also responsible for informing other workspaces of the existing content
in the local workspace. Because it uses the S iena events as its data, the internal state
component is independent of the Configuration Management system.
3.1.4
Extractor
The task of the extractor component is to filter the events that are displayed. Because
there can be many developers working in parallel, the Palantı́r visualizations can
become cluttered. The extractor allows the user to reduce the number of artifacts
in the display by allowing parameters to be selected that will only display desired
information.
3.1.5
Visualization
The visualization component organizes and displays the events in a format that is
suitable to the user. There are four different visualizations, each showing a particular
level of detail of the events.
15
The Eclipse Platform
Workbench
New Plug-in
Contribution
VCM
JFace
SWT
Workspace
Java
Development
Tools (JDT)
Platform Runtime
Figure 3.2: Eclipse Architecture
3.2
Eclipse Architecture
Figure 3.2 is a high-level diagram of the Eclipse architecture [Ecl04]. As shown,
Eclipse is essentially a tiny Platform Runtime kernel to which which all functionality
is contributed as a plug-in. It is not a monolithic application to which small pieces
of functionality are added. Every single tool, including the Java development tools
and the CVS repository functionality (VCM), is contributed. These contributions are
encapsulated in a plug-in, the smallest unit of Eclipse functionality.
Each plug-in contains one or more extensions and zero or more extension points.
An extension contains the implementation of the functionality that is being contributed. The implementation can contain Java code and other files. The optional
extension points allow other plug-ins to contribute additional functionality. For example, a plug-in that contributes a Java editor can declare an extension point that
16
allows another plug-in to contribute keyword-coloring to the editor.
The Eclipse platform is the common base to all Eclipse functionality. The platform
consists of several key components. These components are a subset of what is shown
in Figure 2. Each of these components will be described below.
3.2.1
Platform Runtime
The Eclipse Platform Runtime component starts the platform base, dynamically discovers the available plug-ins, and activates them when needed. In addition, it provides
the mechanism that allows Eclipse to be extended. Since the builders of Eclipse cannot anticipate the new features and services that will be contributed, this mechanism
is needed to maintain the stability of the API. Instead of permitting modifications to
the base interfaces of the Eclipse-provided types, the Platform Runtime component
allows behavior to be added by extending the interfaces of existing Eclipse types.
3.2.2
Workspace
The workspace component of the Eclipse architecture provides a user with access to
the relevant files and folders. This workspace maps directly to the underlying file
system, so users may modify resources directly on the file system or within Eclipse.
The Eclipse workspace has a hierarchical structure, with a workspace consisting of
projects, folders, and files. Each of these entities is termed a resource.
In order to track resources in the file system, Eclipse restricts access of the resource
to a handle. The handle acts as an abstraction or key to a resource. This allows a
resource to be accessed independent of its state.
17
3.2.3
SWT
The SWT component provides Eclipse with a common set of widgets, including buttons, menus, trees, and tables. It is designed to provide efficient, portable access
to the user-interface facilities of the operating systems on which it is implemented
[Ecl04]. To do this, SWT implements a thin layer on top of the operating system’s
native widgets. If a widget is not available, Eclipse implements it in Java.
3.2.4
JFace
The purpose of JFace is to provide higher level application support to complement
the functionality provided by SWT. There are several smaller frameworks contained
within JFace. These frameworks include viewers that convert Eclipse domain objects
into objects that can be presented in a view, contributions/actions that support user
events independent of the widget that triggered the event, dialogs and wizards that
provide higher level dialogs, and registries for images and fonts that manage the
resources of the user interface.
3.2.5
Workbench
The workbench component defines the Eclipse UI paradigm, including the editors,
views, and perspectives of the user interface. It builds upon the functionality provided
by SWT and JFace.
3.3
Eclipse Plug-in Creation
Eclipse has a very explicit process for creating a plug-in contribution. The elements
of the contribution must be declared in an XML manifest file. This file contains an
abstract description of the contribution, references the location of the implementation
of these elements, and lists the runtime dependencies. The abstract description of
18
the plug-in will contain a description of the functionality, including all user interface
elements. In order to extend Eclipse, the Platform Runtime component requires that
all contributions plug into a specific point in the platform which is termed an extension
point. All contributions must conform to a set of Eclipse interfaces that are specific
for that extension point. Once these interfaces are decided upon, the contribution is
implemented in Eclipse.
3.4
Analysis of the Architectures
The architectures of Palantı́r and Eclipse are complex. However, a few characteristics
of the architectures simplify the integration.
One of these characteristics is the modularity of the Palantı́r architecture. The
only component that is dependent on the Configuration Management client is the
Event Wrapper. Therefore, this is the only point that needs modification for the integration. The Event Wrapper can be modified to convert Eclipse workspace activities
into Palantı́r-specific events.
The plug-in architecture of the Eclipse platform will allow Palantı́r to be contributed as a plug-in. This will allow for the integration of the widgets and views
that encapsulate the Palantı́r functionality into the Eclipse user interface. Also, it
is not necessary to add any Configuration Management tools since a CVS repository
interface is provided by Eclipse.
19
Chapter 4
Approach
The approach to the integration of Palantı́r and Eclipse included the following steps.
First, the basics of the Eclipse open source architecture were learned, specifically the
semantics behind building an Eclipse plug-in and how it is used to extend Eclipse.
As mentioned earlier, the Platform Runtime component of Eclipse is responsible for
maintaining the stability of the platform. A technique that the Platform Runtime uses
is to require that all contributions conform to specific interfaces that Eclipse provides.
Before a plug-in for Palantı́r could be contributed to Eclipse, these interfaces needed
to be determined.
Since Palantı́r is concerned with activities in the repository, a determination
needed to be made about the way in which Palantı́r could access these activities.
The aim was to make the integrated version of Palantı́r independent from the repository. Therefore, the code of the Eclipse CVS repository was not modified. In addition,
the availability of a generic Eclipse Configuration Management repository API was
investigated. This would have ensured that the Palantı́r plug-in could work with all
Eclipse repositories.
Finally, the data provided by Eclipse needed to be converted to a form that
Palantı́r could understand. Since Palantı́r operates on S iena events while Eclipse
20
provides a resource data type, the necessary information was extracted from the
Eclipse resource to construct the S iena events.
21
Chapter 5
Implementation with a CVS
Repository
Although the architectures of Palantı́r and Eclipse are complex, integration of Palantı́r
into Eclipse seems relatively straightforward. The Event Wrapper must be modified
to intercept the activities of the Eclipse CVS repository, convert the Palantı́r visualizations into views in the Eclipse user interface, and encapsulate this in a plugin. Additionally, existing Eclipse facilities can be leveraged to add functionality to
Palantı́r.
5.1
Event Wrapper Modifications
The modifications to the Event Wrapper required three sub-steps. The first sub-step
was to start the Palantı́r application from the Eclipse workbench with the appropriate
artifacts for the visualizations. The original implementation requires that the user
checks out files from the repository into the workspace before the application starts.
However, in most development environments, including Eclipse, the developer might
not check out the artifacts very frequently. Instead, the developer might do a check
out once and enter a cycle of local modifications, updates, and commits before doing
22
another check out. During this cycle, the developer might also want to close the
Eclipse workbench. Palantı́r should not require that the developer do a check out
each time he or she opens Eclipse.
In order to address this issue, Palantı́r was modified to start with the active files in
the workbench that are under version control. If there are no such files, then Palantı́r
will wait until there is a check out. Since the Eclipse data model represents projects,
files, and folders as Eclipse-specific objects, accessor methods that are provided by
the Eclipse API were used to extract the necessary information from these objects in
order to construct the S iena events needed by the other Palantı́r components. This
conversion was necessary for all three sub-steps.
The second sub-step addressed the issue of intercepting the activities of the CVS
repository. In the original implementation, the event wrapper wrapped the command
line of the Configuration Management client, reading the input and output to and
from the repository. Thus, each integration of Palantı́r with a specific Configuration
Management system needed to be modified to handle the input and output for that
particular system. However, in Eclipse there is no command line interface to the
repository. The interface is contained within the repository plug-in. This plug-in
provides access to the repository and all relevant commands through the Eclipse
workbench. In order for the Palantı́r plug-in to follow the same design as the original
version of Palantı́r, the existing CVS repository plug-in would need to be modified
and bundled with the Palantı́r plug-in. Since a goal of the integration was to allow
Palantı́r to function with other repository plug-ins, the source code of the existing
CVS plug-in could not be modified.
Unfortunately, Eclipse does not provide a generic repository API. However, it does
provide a set of event listeners that trigger upon activities in the repository. Although
this will prevent the modification of the repository source code, the repository-specific
listeners must be referenced.
23
Beginning with Version 3.0, Milestone 6, Eclipse CVS included an event listener
interface termed the ITeamResourceChangedListener that was triggered each time
a resource under version control had a synchronization state change. These state
changes could be the result of a file being checked out, committed, added, or deleted,
or a project being disconnected from the repository. By extending this interface,
Palantı́r was able to listen for repository activities, process them when they occurred,
and extract the necessary information to create the S iena events. All of the necessary
information to construct the S iena events is contained within the information passed
to the listener.
The last sub-step of the Event Wrapper modifications was to include facilities
for detecting modifications in the local workspace. The original version of Palantı́r
relied on the developer to commit before it could determine if a change had occurred.
Because there could be many local modifications to an artifact between commits, it
is important to capture this information as well. Again, Eclipse provided an event
listener interface, termed IResourceChangeListener, which was notified when a local
save occurred. This interface was extended to collect the required information for
the S iena events. Additionally, Palantı́r is concerned with the time at which modifications of an artifact begin. Palantı́r differentiates between an artifact that has
been modified and one that is just checked out into the workspace. Thus, an event is
needed to broadcast that changes on an artifact are in progress. Eclipse also provides
workbench listeners that will catch these activities.
24
Visualization(s)
Visualization(s)
Extractor
Extractor
Internal State
Internal State
Event Service
Event Wrapper
Event Wrapper
Eclipse Event
Listeners
Eclipse Event
Listeners
Eclipse
Workspace
Eclipse
Workspace
The Eclipse Platform
Eclipse CM Client
Eclipse CM Client
CM Server
CM
Repository
Figure 5.1: Architecture of the Palantı́r/Eclipse Integration
Figure 5.1 illustrates the new architecture of the Palantı́r/Eclipse integration.
Again, the arrows represent the flow of information. All of the components of the
Palantı́r architecture and the Configuration Management system are intact. However, the interface between Palantı́r and the Configuration Management system has
changed to Eclipse components. The Event Wrapper no longer wraps the CM Client
as it does in the original architecture shown in Figure 3.1. As detailed in the original section, the Event Wrapper registers for and receives information about local
workspace activities and repository activities from Eclipse event listeners.
25
5.2
Conversion
of
Palantı́r
Visualizations
to
Eclipse Views
When deciding how to integrate the Palantı́r visualizations into the Eclipse user
interface, a realization was made that there was a mismatch between the user interface components of the architectures; they use different toolkits for their widgets.
The Eclipse UI is implemented using SWT while the Palantı́r visualizations are implemented using Swing/AWT. Since there is no direct translation between the two
toolkits, an Eclipse view containing the Palantı́r visualizations could not be created
without modifications to the source code of the visualization.
Initially, the focus was on integrating the Event Wrapper, leaving the Palantı́r
visualizations as they were. This allowed the underlying functionality to be completed
while still seeing the visualizations outside of Eclipse.
26
Figure 5.2: Screenshot of the Impact and Severity Triangles
Next, the possibility of adding bits of Palantı́r functionality into the existing
Eclipse views was examined. The Navigator view in Eclipse displays the hierarchy of
folders and files in the projects. Decorators were affixed to the resources in the view
to denote severity and change impact, two calculations done by Palantı́r [SNvdH03].
The decorators were in the form of triangles that were overlaid on the resource.
Figure 5.2 is a screenshot of showing the decorators. The red triangles represent
the severity while the blue triangles represent the impact. A change in these values
results in a change in the size and darkness of the triangles. The higher the value,
the larger and darker the triangles become. Following the name of the resource, there
are numbers indicating the actual values of the severity and change impact. Since
space constraints within the view limited the number of severity and impact values
that could be displayed, only the average value across all workspaces, not including
the local workspace, is shown.
Finally, the issue of integrating the Palantı́r visualizations into the Eclipse workbench was addressed. There exists an open source Java library called SwingWT
27
that provides functionality to wrap SWT widgets around Swing/AWT widgets, allowing applications written with Swing/AWT to be compatible with Eclipse [RT04].
Unfortunately, the SwingWT API does not contain a complete set of AWT widget
functionality that is necessary to create the Palantı́r visualizations as Eclipse views.
Thus, the integrated version of Palantı́r continues to use the same visualizations as
the original version.
28
Chapter 6
Implementation with a Subversion
Repository
In addition to the CVS repository plug-in, there is also an Eclipse plug-in for a
Subversion repository called Subclipse. Although out of the scope of this thesis, it
is important to understand how the Palantı́r plug-in would be implemented using
Subclipse. Since there is not a generic repository API available for use by Palantı́r, a
separate plug-in must be implemented for a Subversion repository.
Similar to the CVS plug-in, Subclipse has a listener that will monitor activities
in the repository. Subclipse terms its listener an IResourceStateChangeListener. By
extending this listener, activities in the repository can be caught and processed. A
difficulty arises with the information that is passed to the listener. In the CVS
listener, all of the information that is necessary to create the various S iena events
is available. This is not the case for the Subclipse listener. It only provides an
array of resource objects for the resources that have changed. In order to glean the
necessary information from these resources, the objects need to be cast into a specific
Subclipse-specific resource object and use the accessor methods for that object.
The listeners that monitor activities in the local workspace can remain the same for
29
Subclipse since these are from the Eclipse workbench, not the particular Configuration
Management repository.
30
Chapter 7
Validation Plan
The final step of this thesis was to validate the results of the integration. There were
two parts to the validation plan. The first part was to use the integrated tool in
a small-scale software development scenario. The purpose of this was to make sure
that all of the functionality of Palantı́r was captured in the Eclipse integration. In the
second part, the integration was analyzed with respect to the principles of Thomas
and Nejmeh that were outlined in the Literature Review.
7.1
Example Development Scenario
In order to ensure that the Eclipse version of Palantı́r included all of the functionality of the original version, the integrated tool was used in a software development
scenario. Because it was necessary for the subjects to be familiar with the original
version of Palantı́r, the four developer/students in the Palantı́r development team
were gathered to participate. Although each person was heavily involved in the development of Palantı́r and had an interest in its success, bias was not a concern since
the verification was only that the Eclipse version behaved in the same way as the
original version, not making a statement about the usefulness of the tool itself.
The tool was used within the Palantı́r team to improve the tool itself. The re31
quired work was distributed among the four developers. One person was tasked to
make modifications to the visualizations and add a new visualization. Another person examined new ways to do the calculations for severity and change impact. The
third person was in charge of creating a database for storing the events. The fourth
person was trying to improve the event mechanism. Each person checked out the files
at the same point and began the cycle of making modifications, updating their local
copies so they are synchronized with the repository, and committing their modifications. During this process, there were no noticeable differences in the visualizations
compared to the original version, nor were there any errors in the information that
was displayed.
7.2
Verification of the Integration
The example scenario verified that the integration of Palantı́r in Eclipse was successful
in that all the functionality of the original version of Palantı́r was captured. However,
it was also important that the two architectures were well-integrated with respect to
the principles outlined by Thomas and Nejmeh [TN92]. There were two properties
that the integration deviated from. Issues with the user interface implementations
resulted in an inconsistent Presentation paradigm and minor transformations were
needed to integrate the tools with respect to the Data property. Each property is
listed here with specifics to the integration.
7.2.1
Presentation
The goal of this property is to improve the efficiency and effectiveness of the user’s
interaction by reducing the cognitive load. This was not achieved in the integration.
Because of the incompatibility of the user interface implementations, the integration
uses two interaction and presentation paradigms: Eclipse views and Palantı́r visual32
izations.
The presentation property would have been achieved if the Palantı́r visualizations
were converted into Eclipse views. The result would be an Eclipse interaction and
presentation paradigm for the integration. Since Eclipse forces a contribution to
conform to its rules of presentation and interaction, the Palantı́r plug-in would be
implemented according to these rules. This includes the way the visualizations appear
and behave through Eclipse views.
However, the integration did succeed in several respects of the Presentation property. The plug-in produced the same information in the same amount of time as the
original version, matching the user’s expectations for response time and the information produced by Palantı́r was preserved in the integrated version.
7.2.2
Data
The goal of the Data property is to ensure that the information in the environment
is managed as a consistent whole. The sub-properties are interoperability, nonredundancy, data consistency, data exchange, and synchronization.
With respect to data interoperability, the integration did not fulfill the principles
of Thomas and Nejmeh [TN92]. Since Palantı́r operates on S iena events, it could
not be modified to directly use Eclipse data. Instead the Eclipse-specific types were
converted to S iena events. However, this was a simple transformation, using the
provided methods in the Eclipse API.
Nonredundancy was not addressed. Since each tool operates on different data
types, they need to store their own version of the data for each artifact.
Data consistency was a property that was fulfilled. Since Palantı́r does not modify
Eclipse data and the changes to artifacts in Eclipse are propagated to Palantı́r through
the event notifications, mechanisms to keep the data consistent are already provided.
Similar to the interoperability property, the integration also required transforma33
tions to the non-persistent data. According to the principles, Palantı́r and Eclipse
are not well-integrated with respect to this property.
The synchronization property was also fulfilled in the same manner that the data
consistency property was fulfilled. Changes to Eclipse data are communicated to
Palantı́r through the event notification mechanism.
7.2.3
Control
For the Control property, the goal is to allow the flexible combination of the environment’s function by addressing control-transfer and service-sharing issues. The
provision and use sub-properties were both fulfilled since Eclipse provides all the necessary functionality to Palantı́r and Palantı́r uses the services of Eclipse to perform
its duty.
7.2.4
Process
In order to ensure that the tools interact effectively in support of a defined process,
the expectations of the Process property must be met. This was accomplished by the
integration. The process step, displaying Palantı́r information, can be decomposed
into two steps: Eclipse discovering a change to an artifact and notifying Palantı́r, and
Palantı́r interpreting this data and displaying it. The process event sub-property is
also fulfilled with the event mechanism used in the integration. The expectations of
the process constraint sub-property are not applicable since Palantı́r does not impose
any constraints on the environment.
34
Chapter 8
Analysis of the Integration
In addition to validating the integration in the example scenario and applying the
rules set forth by Thomas and Nejmeh [TN92], the successfulness of it with respect
to the initial expectations of the integration was examined. Possible improvements
to Eclipse and Palantı́r were also explored.
Overall, the integration was a success in that a Palantı́r plug-in was contributed
to the Eclipse platform. This plug-in included all of the functionality of the original
version of Palantı́r. Furthermore, the ability to process local workspace modifications
was added to the existing functionality of Palantı́r.
However, there were parts of the integration that did not meet the initial expectations. One of the goals was to fully integrate the original Palantı́r visualizations into
Eclipse views. Because of the incompatibility of the Eclipse user interface components with the Palantı́r user interface components, a complete rewrite of the Palantı́r
visualizations would be needed to convert them to views in Eclipse.
Another expectation was that the Palantı́r plug-in would be completely independent from the Configuration Management repository. This would allow Palantı́r to be
used in Eclipse regardless of the type of repository used. Unfortunately, the current
Eclipse API did not allow for this. Instead of providing a generic repository API that
35
each repository must conform to, Eclipse allowed each repository to be implemented
in any fashion. In order to implement the necessary listeners for Palantı́r, a separate
plug-in is needed for each type of repository.
Although there are no major improvements needed to either architecture, a few
minor enhancements could be made to the implementation of both tools. Facilities
that would allow user interface elements that are not implemented in SWT to be used
in Eclipse would be useful. Since many Java applications are built with Swing/AWT,
there would be a great benefit to including functionality for this conversion.
In addition, including a generic repository API would be extremely beneficial.
This would require that repository implementers would have to conform to a more
complete set of rules to access a repository in Eclipse. By requiring that a stricter set
of rules is followed, a generic repository API would also help with maintaining the
stability of the platform.
There was an issue was encountered with Palantı́r. In many cases, it seemed that
the S iena event mechanisms were not able to handle the events effectively. Dropped
events and out of order events were common enough to be a concern. There are two
potential modifications to explore. The first is to make Palantı́r robust enough to
handle the problems in the event mechanism, as the current implementation does not
account for problems in the events. The second potential modification is to abandon
the S iena event notification service entirely, instead relying on the event mechanisms
that are built into Eclipse. Although this would address the issues and remove the
need to perform transformations on the data between the tools, it would be quite
different than the original implementation of Palantı́r. Since the original versions are
still being used and developed, the implementations should be kept as consistent as
possible.
36
Chapter 9
Conclusion
In this thesis, the integration of Palantı́r into the Eclipse open source platform was
examined. This included a discussion of a few general issues in architectural integration, a description of the implementation of the integration, and a discussion of
a few improvements made in the functionality of Palantı́r. More specifically, this
thesis contributes a new integration of Palantı́r in Eclipse. By combining Palantı́r
with the rich functionality of Eclipse, a Configuration Management awareness tool is
now available for the platform. In this setting, Palantı́r can leverage the additional
tools that Eclipse provides and capture activities that are outside of the Configuration Management repository; something that the original version of Palantr was not
able to do. Also, Palantı́r functionality has been added directly on top of the existing Navigator view in Eclipse. This will provide some quick awareness information,
without having to constantly refer to the Palantı́r visualizations.
Despite the complexity of both architectures, the plug-in architecture of Eclipse
made the integration very straightforward. This architecture inherently addressed
most of the properties of a sound integration.
Future work on the integration includes exploring other ways of displaying Palantı́r
information in the Eclipse views, examining the current visualizations in order to
37
ensure that the information that they provide is still useful in the Eclipse setting,
developing new visualizations, and optimizing the event notification mechanisms. In
addition, the integrated tool should be used in an actual development environment.
Finally, publishing the plug-in in the open source community will hopefully increase
its exposure, and provide us with feedback on how to improve Palantı́r.
38
Bibliography
[BCTW96] Daniel J. Barrett, Lori A. Clarke, Peri L. Tarr, and Alexander E. Wise.
A framework for event-based software integration. ACM Transactions on
Software Engineering and Methodology, 5(4):378–421, 1996.
[Bro95]
Frederick P. Brooks. The Mythical Man-Month. Addison-Wesley, second
edition, 1995.
[CRW01]
Antonio Carzaniga, David S. Rosenblum, and Alexander L. Wolf. Design
and evaluation of a wide-area event notification service. ACM Transactions on Computer Systems, 19(3):332–383, 2001.
[Ecl04]
Eclipse Foundation. eclipse.org. http://www.eclipse.org, 2004.
[GAO95]
David Garlan, Robert Allen, and John Ockerbloom. Architectural mismatch: Why reuse is so hard. IEEE Software, 12(6):17–26, 1995.
[RT04]
R. Rawson-Tetley. SwingWT. http://swingwt.sourceforge.net, 2004.
[SNvdH03] Anita Sarma, Zahra Noroozi, and André van der Hoek. Palantı́r: Raising
awareness among configuration management workspaces. In Proceedings
of the 25th International Conference on Software Engineering, pages 444–
454, Portland, Oregon, 2003.
[TN92]
Ian Thomas and Brian A. Nejmeh. Definitions of tool integrations for
environments. IEEE Software, 9(2):29–35, 1992.
39
[Was90]
Anthony I. Wasserman. Tool integration in software engineering environments. In Proceedings of the international workshop on environments
on Software engineering environments, pages 137–149, Chinon, France,
1990.
40
Download