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
Jun 19, 2015
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?