Monoliittisen ohjelmistoarkkitehtuurin purkaminen komponenttien välistä rajapintaa kehittämällä
Myyryläinen, Saku (2026)
Myyryläinen, Saku
2026
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-202604298580
https://urn.fi/URN:NBN:fi:amk-202604298580
Tiivistelmä
Tämän insinöörityön aiheena oli kehittää Conlog Oy:n liikuteltavaa mastojärjestelmää ohjaavan kontrollerin ohjelmointirajapintaa sen ja siihen kytketyn ohjauspaneelin muodostaman monoliittisen arkkitehtuurin eriyttämiseksi kahdeksi erilliseksi komponentiksi. Tavoitteena oli purkaa näiden komponenttien välinen tiukka sidonta ja näin mahdollistaa koodipohjien kehitys toisistaan erillään niiden välinen takaisinyhteensopivuus säilyttäen. Rajapinnalle asetettiin myös uusia toiminnallisia vaatimuksia.
Työssä perehdyttiin oleellisiin ohjelmistoarkkitehtuurin käsitteisiin ja periaatteisiin korkealta tasolta yksityiskohtiin edeten ja näitä hyödynnettiin uudelleensuunnittelussa. Lähtötilanteen perusteella tunnistettiin järjestelmän ongelmakohdat ja määriteltiin vaatimukset, jotka työn tuli täyttää. Kontrollerin ohjelmointirajapinnan eri osioita kehitettiin teoriatietoon pohjautuen ja jokaiselle osalle tehtiin rajapintamäärittely sekä UML-luokkakaaviot ja olio-ohjelmakoodi rajapinnan kanssa vuorovaikuttamiseksi. Suunnittelussa huomioitiin etenkin tuotoksen laajennettavuus. Uutta rajapintaa testattiin yksikkö- ja integraatiotestein sekä siirrettäviä datamääriä mitaten.
Tuloksena syntyi asetetut vaatimukset täyttävä rajapintamäärittely sekä suurin osa UML-kaavioista ja kontrolleriin integroitavasta ohjelmakoodista. Vaatimusten täyttyminen todettiin testien ja mittausdatan perusteella ja rajapinnan todettiin olevan helposti laajennettavissa ja siirretyn datamäärän pienentyneen huomattavasti. Uusi rajapinta mahdollisti takaisinyhteensopivuuden kontrollerin ja ohjauspaneelin eri ohjelmaversioiden välillä.
Suunnittelun aikana rajapinnalle löytyi monia jatkokehityskohteita, joista osa on rajapinnan käyttöönoton kannalta kriittisiä. Rajapinnan kanssa vuorovaikuttava koodi kirjoitetaan loppuun ja se jäsennetään koodikirjastoihin. Vähemmän kriittisiä kehityskohteita, kuten siirrettävän tiedon kryptausta ja eri väyläteknologiaan siirtymistä, harkitaan, mikäli niiden käytölle syntyy tarve. The aim of the study was to improve the application programming interface of the controller controlling Conlog Oy's mobile mast system to separate the monolithic architecture formed by it and the control panel connected to it into two separate components. The purpose was to break the tight coupling between these components to enable the separate development of their code bases while keeping them backward compatible. New functional requirements were also set for the interface.
Relevant concepts and principles of software architecture were studied from a high level to details, and these were utilized in the redesign. The problem areas of the initial system were identified, and requirements to be met were defined. The different sections of the controller's API were developed based on the theoretical background, and an interface definition, UML class diagrams and an object-oriented program code for interacting with the interface were created for each section. The design concentrated on the extensibility of the result in particular. The new interface was tested with unit and integration tests, as well as by measuring the transmitted data amounts.
As a result, an interface definition that met the set requirements was created, as well as most of the UML diagrams and program code to be integrated into the controller. Compliance with the requirements was confirmed by the tests and measurement data, and the interface was found to be easily extended and the amount of data transmitted was significantly reduced. The new interface enabled backward compatibility between different program versions of the controller and the control panel.
Many further areas of improvement for the interface were identified during the study, some of which are critical for the implementation of the interface. The code interacting with the interface will be completed and composed into program libraries. Less critical areas of improvement, such as encryption of transmitted data and migration to a different bus technology, will be considered if a need for their use arises.
Työssä perehdyttiin oleellisiin ohjelmistoarkkitehtuurin käsitteisiin ja periaatteisiin korkealta tasolta yksityiskohtiin edeten ja näitä hyödynnettiin uudelleensuunnittelussa. Lähtötilanteen perusteella tunnistettiin järjestelmän ongelmakohdat ja määriteltiin vaatimukset, jotka työn tuli täyttää. Kontrollerin ohjelmointirajapinnan eri osioita kehitettiin teoriatietoon pohjautuen ja jokaiselle osalle tehtiin rajapintamäärittely sekä UML-luokkakaaviot ja olio-ohjelmakoodi rajapinnan kanssa vuorovaikuttamiseksi. Suunnittelussa huomioitiin etenkin tuotoksen laajennettavuus. Uutta rajapintaa testattiin yksikkö- ja integraatiotestein sekä siirrettäviä datamääriä mitaten.
Tuloksena syntyi asetetut vaatimukset täyttävä rajapintamäärittely sekä suurin osa UML-kaavioista ja kontrolleriin integroitavasta ohjelmakoodista. Vaatimusten täyttyminen todettiin testien ja mittausdatan perusteella ja rajapinnan todettiin olevan helposti laajennettavissa ja siirretyn datamäärän pienentyneen huomattavasti. Uusi rajapinta mahdollisti takaisinyhteensopivuuden kontrollerin ja ohjauspaneelin eri ohjelmaversioiden välillä.
Suunnittelun aikana rajapinnalle löytyi monia jatkokehityskohteita, joista osa on rajapinnan käyttöönoton kannalta kriittisiä. Rajapinnan kanssa vuorovaikuttava koodi kirjoitetaan loppuun ja se jäsennetään koodikirjastoihin. Vähemmän kriittisiä kehityskohteita, kuten siirrettävän tiedon kryptausta ja eri väyläteknologiaan siirtymistä, harkitaan, mikäli niiden käytölle syntyy tarve.
Relevant concepts and principles of software architecture were studied from a high level to details, and these were utilized in the redesign. The problem areas of the initial system were identified, and requirements to be met were defined. The different sections of the controller's API were developed based on the theoretical background, and an interface definition, UML class diagrams and an object-oriented program code for interacting with the interface were created for each section. The design concentrated on the extensibility of the result in particular. The new interface was tested with unit and integration tests, as well as by measuring the transmitted data amounts.
As a result, an interface definition that met the set requirements was created, as well as most of the UML diagrams and program code to be integrated into the controller. Compliance with the requirements was confirmed by the tests and measurement data, and the interface was found to be easily extended and the amount of data transmitted was significantly reduced. The new interface enabled backward compatibility between different program versions of the controller and the control panel.
Many further areas of improvement for the interface were identified during the study, some of which are critical for the implementation of the interface. The code interacting with the interface will be completed and composed into program libraries. Less critical areas of improvement, such as encryption of transmitted data and migration to a different bus technology, will be considered if a need for their use arises.
