664 eclipse plugin

37
The Evolution of Eclipse Plugins Michel Wermelinger, YijunYu Centre for Research in Computing The Open University The Open University Milton Keynes, UK Presented By: Arnamoy Bhattacharyya

Upload: arnamoy10

Post on 19-Jun-2015

188 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: 664 eclipse plugin

The Evolution of Eclipse Plugins

Michel Wermelinger, Yijun YuCentre for Research in Computing

The Open UniversityThe Open UniversityMilton Keynes, UK

Presented By:Arnamoy Bhattacharyya

Page 2: 664 eclipse plugin

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

Page 3: 664 eclipse plugin

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

Page 4: 664 eclipse plugin

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

Page 5: 664 eclipse plugin

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

Page 6: 664 eclipse plugin

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.).

Page 7: 664 eclipse plugin

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

Page 8: 664 eclipse plugin

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

Page 9: 664 eclipse plugin

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

Page 10: 664 eclipse plugin

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

Page 11: 664 eclipse plugin

logical order

each release may have multiple logical successors.

Page 12: 664 eclipse plugin

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.

Page 13: 664 eclipse plugin

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.

Page 14: 664 eclipse plugin

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.

Page 15: 664 eclipse plugin

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.

Page 16: 664 eclipse plugin

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.

Page 17: 664 eclipse plugin

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.

Page 18: 664 eclipse plugin

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.

Page 19: 664 eclipse plugin

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.

Page 20: 664 eclipse plugin
Page 21: 664 eclipse plugin
Page 22: 664 eclipse plugin

RESULTS AND ANALYSIS

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

Page 23: 664 eclipse plugin

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).

Page 24: 664 eclipse plugin

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?

Page 25: 664 eclipse plugin

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

Page 26: 664 eclipse plugin

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

Is the architecture changed in maintenance releases?

Page 27: 664 eclipse plugin

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.

Page 28: 664 eclipse plugin

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.

Page 29: 664 eclipse plugin

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.

Page 30: 664 eclipse plugin

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.

Page 31: 664 eclipse plugin

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

Page 32: 664 eclipse plugin

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

Page 33: 664 eclipse plugin

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

Page 34: 664 eclipse plugin

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

Page 35: 664 eclipse plugin

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

Page 36: 664 eclipse plugin

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

Page 37: 664 eclipse plugin

Questions?