664 eclipse plugin

Post on 19-Jun-2015

173 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

The Evolution of Eclipse Plugins

Michel Wermelinger, Yijun YuCentre for Research in Computing

The Open UniversityThe Open UniversityMilton Keynes, UK

Presented By:Arnamoy Bhattacharyya

Each release (except for release 1.0) provides one or more high-level features.

Each release (except for release 1.0) provides one or more high-level features.

Each feature may be composed of other, more specialized, features. E.gfeature sdksdksdksdk includes feature platformplatformplatformplatform which in turn includes rcprcprcprcp

Each release (except for release 1.0) provides one or more high-level features.

Each feature may be composed of other, more specialized, features. E.gfeature sdksdksdksdk includes feature platformplatformplatformplatform which in turn includes rcprcprcprcp

Each feature is implemented by a set of plugins, e.g feature platformplatformplatformplatformis implemented by more than 70 plugins

Each release (except for release 1.0) provides one or more high-level features.

Each feature may be composed of other, more specialized, features. E.gfeature sdksdksdksdk includes feature platformplatformplatformplatform which in turn includes rcprcprcprcp

Each feature is implemented by a set of plugins, e.g feature platformplatformplatformplatformis implemented by more than 70 plugins

Each plugin may depend for its compilation on Java classesthat belong to other plugins. E.g, the implementation of plugin platformplatformplatformplatformdepends on eight other plugins

Each plugin provides zero or more extension points. These can be usedat run-time by other plugins in order to extend the functionality. E.g the extension points provided by the uiuiuiui plugin allow other plugins to add atruntime new GUI elements (menu bars, buttons, etc.).

Each plugin provides zero or more extension points. These can be usedat run-time by other plugins in order to extend the functionality. E.g the extension points provided by the uiuiuiui plugin allow other plugins to add atruntime new GUI elements (menu bars, buttons, etc.).

plugin X statically depends on plugin Y - if the compilation of X requires Y

Each plugin provides zero or more extension points. These can be usedat run-time by other plugins in order to extend the functionality. E.g the extension points provided by the uiuiuiui plugin allow other plugins to add atruntime new GUI elements (menu bars, buttons, etc.).

plugin X statically depends on plugin Y - if the compilation of X requires Y

X dynamically depends on Y if X uses an extension point that Y provides

Each plugin provides zero or more extension points. These can be usedat run-time by other plugins in order to extend the functionality. E.g the extension points provided by the uiuiuiui plugin allow other plugins to add atruntime new GUI elements (menu bars, buttons, etc.).

plugin X statically depends on plugin Y - if the compilation of X requires Y

X dynamically depends on Y if X uses an extension point that Y provides

plugins, extension points, and static and dynamic dependencies arearchitectural elementsarchitectural elementsarchitectural elementsarchitectural elements

Each plugin provides zero or more extension points. These can be usedat run-time by other plugins in order to extend the functionality. E.g the extension points provided by the uiuiuiui plugin allow other plugins to add atruntime new GUI elements (menu bars, buttons, etc.).

plugin X statically depends on plugin Y - if the compilation of X requires Y

X dynamically depends on Y if X uses an extension point that Y provides

plugins, extension points, and static and dynamic dependencies arearchitectural elementsarchitectural elementsarchitectural elementsarchitectural elements

In parallel to the maintenance of the current major release, the preparation of the next major release starts. The preparation consists of some milestones, followed by some release candidates. 3.2M1 3.2RC1

logical order

each release may have multiple logical successors.

DATA PROCESSING

For each plugin there is an XML file, called plugin.xmlplugin.xmlplugin.xmlplugin.xml, that lists the extension points provided and used by that plugin, and the other plugins it depends on for compilation.

DATA PROCESSING

For each plugin there is an XML file, called plugin.xmlplugin.xmlplugin.xmlplugin.xml, that lists the extension points provided and used by that plugin, and the other plugins it depends on for compilation.

Since release 3.0, the static dependency is in another file, MANIFEST.MFMANIFEST.MFMANIFEST.MFMANIFEST.MF, which is not in XML format.

DATA PROCESSING

download the source code of the whole SDK

Some shell, AWK and XSLT scripts extract the information about the

existing architectural elements from the plugin.xml files the plugin.xml files

The result of this processing is a text file in Rigi Standard Format (RSF)

that captures the relations

Crocopat, a relational calculator produces output metrics and further

relations.

DATA PROCESSING

download the source code of the whole SDK

Some shell, AWK and XSLT scripts extract the information about the

existing architectural elements from the plugin.xml files the plugin.xml files

The result of this processing is a text file in Rigi Standard Format (RSF)

that captures the relations

Crocopat, a relational calculator produces output metrics and further

relations.

For each release compute –àdynamic dynamic dynamic dynamic dependency dependency dependency dependency relationsrelationsrelationsrelationsàthe the the the missing and unused extension missing and unused extension missing and unused extension missing and unused extension points points points points àthe missing and the missing and the missing and the missing and unused unused unused unused pluginspluginspluginspluginsàsizes sizes sizes sizes of those sets. of those sets. of those sets. of those sets.

For each release compute –àdynamic dynamic dynamic dynamic dependency dependency dependency dependency relationsrelationsrelationsrelationsàthe the the the missing and unused extension missing and unused extension missing and unused extension missing and unused extension points points points points àthe missing and the missing and the missing and the missing and unused unused unused unused pluginspluginspluginspluginsàsizes sizes sizes sizes of those sets. of those sets. of those sets. of those sets.

An element is missingmissingmissingmissing if it is required but not provided, and unusedunusedunusedunused if it is provided but not required by any other element.

For each release compute –àdynamic dynamic dynamic dynamic dependency dependency dependency dependency relationsrelationsrelationsrelationsàthe the the the missing and unused extension missing and unused extension missing and unused extension missing and unused extension points points points points àthe missing and the missing and the missing and the missing and unused unused unused unused pluginspluginspluginspluginsàsizes sizes sizes sizes of those sets. of those sets. of those sets. of those sets.

The missingmissingmissingmissing plugins and extension points enable to detect compile- and run-time problems, whereas the unusedunusedunusedunused plugins and extension points tell us how extensible the architecture is.

An element is missingmissingmissingmissing if it is required but not provided, and unusedunusedunusedunused if it is provided but not required by any other element.

extensible the architecture is.

For each release compute –àdynamic dynamic dynamic dynamic dependency dependency dependency dependency relationsrelationsrelationsrelationsàthe the the the missing and unused extension missing and unused extension missing and unused extension missing and unused extension points points points points àthe missing and the missing and the missing and the missing and unused unused unused unused pluginspluginspluginspluginsàsizes sizes sizes sizes of those sets. of those sets. of those sets. of those sets.

The missingmissingmissingmissing plugins and extension points enable to detect compile- and run-time problems, whereas the unusedunusedunusedunused plugins and extension points tell us how extensible the architecture is.

An element is missingmissingmissingmissing if it is required but not provided, and unusedunusedunusedunused if it is provided but not required by any other element.

extensible the architecture is.

A completely self-contained and closed architecture would have no missing nor unused elements.

RESULTS AND ANALYSIS

For both release sequences, it is found out that the number of missing plugins and extension points is always zero,

RESULTS AND ANALYSIS

For both release sequences, it is found out that the number of missing plugins and extension points is always zero,

number of plugins (NP), extension points (NE),static dependencies (NSD), dynamic dependencies (NDD),static dependencies (NSD), dynamic dependencies (NDD),and unused extension points (NUE).

number of elements added (A), kept from the previousrelease (K), kept from r1 (K1), and deleted (D).

the architecture has grown by a factor between four and five. The highest growth rate occurred from release 1.0 to release 2.0.

How many architectural changes occur between majorreleases and what is the overall growth of the system?

the architecture has grown by a factor between four and five. The highest growth rate occurred from release 1.0 to release 2.0.

NO plugins or extension points are added or deleted in any maintenance release

Is the architecture changed in maintenance releases?

Is there any difference between milestones and release candidates, in terms of architectural evolution?

architectural architectural changes can occurin both milestonesmilestonesmilestonesmilestones& releasereleasereleasereleasecandidatescandidatescandidatescandidates, more changes during milestones.

Are there any deletions, or deletions, or just additions?

Both figures show, additions make the bulk of changes,deletions being comparatively few and small in size.

Is there any substantial architectural core that is stable, i.e. that remains throughout all releases?

11% (= 24) ofthe plugins and 14% of the extensions points of release 3.3.1.1 come from release 1.0.

Is there any substantial architectural core that is stable, i.e. that remains throughout all releases?

11% (= 24) ofthe plugins and 14% of the extensions points of release 3.3.1.1 come from release 1.0.

Most deletions occurred in release 3.0, with many static dependencies being also removed

Most deletions occurred in release 3.0, with many static dependencies being also removed

Eclipse project follows follows follows follows a systematic processa systematic processa systematic processa systematic process, most architectural changes taking place in milestones, a few in release candidates.

Conclusions

Eclipse project follows follows follows follows a systematic processa systematic processa systematic processa systematic process, most architectural changes taking place in milestones, a few in release candidates.

Release 3.0 introduced major architectural 3.0 introduced major architectural 3.0 introduced major architectural 3.0 introduced major architectural changeschangeschangeschanges, with many additions and deletions to all elements.

Conclusions

Eclipse project follows follows follows follows a systematic processa systematic processa systematic processa systematic process, most architectural changes taking place in milestones, a few in release candidates.

Release 3.0 introduced major architectural 3.0 introduced major architectural 3.0 introduced major architectural 3.0 introduced major architectural changeschangeschangeschanges, with many additions and deletions to all elements.

Conclusions

Eclipse project follows follows follows follows a systematic processa systematic processa systematic processa systematic process, most architectural changes taking place in milestones, a few in release candidates.

Release 3.0 introduced major architectural 3.0 introduced major architectural 3.0 introduced major architectural 3.0 introduced major architectural changeschangeschangeschanges, with many additions and deletions to all elements.

Conclusions

Questions?

top related