Plug-in interoperation in extendable platforms

Loading...
Thumbnail Image

URL

Journal Title

Journal ISSN

Volume Title

Perustieteiden korkeakoulu | Master's thesis

Department

Major/Subject

Mcode

SCI3042

Language

en

Pages

54

Series

Abstract

In the recent decades, it has become customary that feature-rich software products are designed to be extendable with external components, plug-ins. While the architectural pattern enabling this design has become well established, a substantial limitation has been recognized: it only poorly supports interoperation between plug-ins, making plug-in dependencies difficult to maintain. Practice has shown that in many systems designed in this way, plug-in interoperation is nevertheless needed. This raises the question: How could plug-in interoperation be designed to keep the problems that it causes in check? This thesis tackles the question by analyzing the problems of plug-in interoperation. It turns out that dependencies between plug-ins are prone to incompatibility issues that are hard to predict and even harder to handle when they occur. Furthermore, due to the dynamic nature of the plug-in architecture, the integrity of a system with interdependent plug-ins is difficult to assure when releasing new versions. To these design problems of plug-in interoperation, I search for potential solutions among the design patterns and practices of the software architecture literature. I consider the issue from the perspectives of both a plug-in and and the system it extends. Based on this analysis, I argue that by applying good software engineering practices, such as explicitly defined programming interfaces, controlled versioning, and sound code structure, software designers can remarkably reduce the complexity caused by plug-in interdependencies. As a concrete example of a plug-in system, I study the IntelliJ IDE platform developed by JetBrains, and observe how plug-in interoperation materializes in it. As a case study, I present an IntelliJ plug-in that I co-developed as part of a team and review its design in the light of plug-in interoperability issues.

Viime vuosikymmeninä on tullut tavanmukaiseksi, että laajatoiminnalliset ohjelmistotuotteet suunnitellaan laajennettaviksi ulkoisilla lisäosilla. Tähän tarkoitukseen usein käytetty arkkitehtoninen suunnittelumalli on vakiintuneisuudestaan huolimatta havaittu rajoittuneeksi: se ei kunnolla tue lisäosien välistä vuorovaikutusta tehden lisäosien välisten riippuvuuksien ylläpidosta hankalaa. Kokemus on osoittanut, että monissa tällä tavoin suunnitelluissa ohjelmistoissa lisäosien välistä vuorovaikutusta kuitenkin tarvitaan. Tästä seuraa kysymys: Kuinka lisäosien välinen vuorovaikutus tulisi suunnitella, jotta siitä aiheutuvat ongelmat kyettäisiin hallitsemaan? Tämä diplomityö lähestyy kysymystä analysoimalla lisäosien väliseen vuorovaikutukseen liittyvää ongelmakenttää. Osoittautuu, että lisäosien väliset riippuvuudet ovat alttiita yhteensopivuusongelmille, joita on hankala sekä ennustaa että jälkikäteen selvittää. Lisäosa-arkkitehtuurin dynaamisesta luonteesta johtuen lisäosien välisiä riippuvuuksia sisältävien järjestelmien eheyden varmistaminen on vaikeaa uusia versioita julkaistaessa. Näihin lisäosien väliseen vuorovaikutukseen liittyviin ongelmakohtiin etsin mahdollisia ratkaisuja kirjallisuudessa tunnetuista suunnittelumalleista ja käytänteistä. Tarkastelen kysymystä niin lisäosan kuin alustaohjelmistonkin näkökulmasta. Analyysiini tukeutuen esitän, että ohjelmistosuunnittelijat voivat huomattavasti vähentää lisäosien välisistä riippuvuuksista aiheutuvaa mutkikkuutta soveltamalla ohjelmistokehityksen hyviä käytänteitä, kuten tarkasti määriteltyjä ohjelmointirajapintoja, hallittua versiointia ja hyvää lähdekoodin rakennetta. Konkreettisena esimerkkinä laajennettavasta ohjelmistosta käsittelen JetBrainsin kehittämää IntelliJ-ohjelmointiympäristö-alustaa ja tutkin, miten lisäosien välinen vuorovaikutus siinä toteutuu. Tapaustutkimuksena esittelen ryhmämme kehittämän IntelliJ:n lisäosan ja arvioin sen ohjelmistoarkkitehtuuria lisäosien välisen vuorovaikutuksen kannalta.

Description

Supervisor

Malmi, Lauri

Thesis advisor

Sorva, Juha

Other note

Citation