• Ei tuloksia

Dokumentoitu arkkitehtuuripäätös muokkaamattomista moduuleista

riittämättömiä käyttäjän kannalta, mutta ongelma täytyy ratkaista muuten kuin muokkaa-malla moduuleja. Toinen mahdollinen ongelma voi olla sisäisesti tarpeet korvata tiettyjä kirjastoja moduuleissa. Silti muokkaamattomat moduulit ovat selkeästi paras vaihtoehto ja siitä kannattaa lähteä liikkeelle.

Muut arvioinnit liittyivät myös moduuleihin. Ensimmäisissä arvioinneissa haettiin perus-teita moduulien ja kirjaston käyttöön tuoteversioiden ja ylläpidon vähentämiseksi sekä etsittiin vaihtoehtoisia lähestymistapoja. Sen jälkeen arvioitiin erilaisia tapoja kirjastojen jakamiseksi moduuleihin. Tämän jälkeen arvioitiin aiemmin esiteltyjen moduulien muo-dostamisen periaatteet. Moduulien muodostamiseksi oli päätetty sallia sisäkkäiset mää-rittelyt eli moduuli voi sisältää muita moduuleja. Viimeiseksi arvioitiin sitä kuinka monta peräkkäistä moduuliviitettä kannattaa olla peräkkäin lopullisessa ympäristörakenteessa.

Kaikkiin arviointeihin osallistui yhteensä kolme henkilöä. Arviointeihin osallistuneilla hen-kilöillä oli hyvä tietämys arvioinnin kohteen taustaympäristöstä ja sovelluksen nykytilasta.

Arvioinneissa muodostui käsitys siitä, että moduulit ovat perusteltu ratkaisu ympäristöjen ylläpidon keventämiseksi ja tuoteversioiden vähentämiseksi. Arvioinneissa saatiin aikaan myös selkeät periaatteet moduuleille. Itse arvioinnit koettiin onnistuneeksi, sillä konkreet-tisten dokumenttien ja päätösten lisäksi jokaisen osallistujan ymmärrys arvioinnin koh-teista kasvoi merkittävästi.

Yksittäisenä epäonnistumisena koettiin osittain moduulien jakoon liittyvän päätöksen ar-viointi. Siinä pitkälti valmistelussa oli päätöksen ongelma rajattu huonosti. Tämä johti sii-hen, että pitkälti ongelman reunaehdot sanelivat lopputulosta. Siitä johtuen itse päätök-sestä ja ongelmasta ei löydetty merkittävästi uusia näkökulmia. Paremmalla valmistelulla voidaan vähentää riskiä joutua arviointitilanteessa umpikujaan.

Tällä kertaa ei nähty tarvetta arvioida päätöstä uusiksi uudella ongelman rajauksella. Uu-delleenrajauksen lisäksi voitaisiin tehdä myös yksittäisten päätösten uudelleenarviointi-kin, mikäli argumentit ja niiden taustalla olevat voimat ovat huomattavasti muuttuneet.

7.2 Toiminnallisuuden arviointi

Vanhan toiminnallisuuden modernisoinnissa suurimmat saavutukset ylläpidon näkökul-masta olivat koodin koherenssin ja muokattavuuden lisääntyminen. Koodin koherenssi kasvoi merkittävästi, kun kirjastotieto erotettiin rajapintojen taakse. Kerrosarkkitehtuuria hyödyntämällä saatiin selkeytettyä ja tiivistettyä eri luokkien välistä työnjakoa. Selkeää työnjakoa kuvaa hyvin uusi kirjaston sisältämille komponenteille tehty oma luokka. Täs-tä komponenttiluokasta saatiin aikaan luokka, jonka avulla voidaan jakaa kirjaston tietoja erityyppisistä kirjastoista riippumatta. Komponentti saatiin pidettyä mahdollisimman ylei-senä, mikä helpottaa huomattavasti uusien kirjastojen luontia. Tiedon tulkintaa varten oli jo olemassa luokkia ja uusi komponentti oli luontevaa antaa parametrina näille luokille.

Näin komponentin ei tarvitse ymmärtää sisältämästään tiedosta ja näin komponentti py-syy siistinä, selkeänä ja yleiskäyttöisenä.

Merkittävin muutos muokattavuuden osalta saavutettiin kuitenkin eristämällä itse datan luku muista luokista erilleen. Eristämisen lisäksi pyrittiin siihen, että datan luvusta huo-lehtiva luokka noudattaisi komponenttiarkkitehtuuria. Kirjastodatan hyvin paljon vaihtele-va muoto hankaloittaa eniten olemassa olevien kirjastojen yhteinäistämistä, siksi datan luvusta huolehtivasta luokasta pyrittiin tekemään mahdollisimman itsenäisiä ja helposti vaihdettavia. Nämä vaatimukset saatiin täytettyä hyvin komponenttiarkkitehtuurin avulla.

Näkyvin muutos tällä hetkellä on komponenttien lisäämiseksi tehty käyttöliittymä, joka on esitetty kuvassa 7.4. Uudessa selaimessa on esitetty levyn valinta levykirjastoista. Va-semmalla on listattu kaikki aktiiviset levykirjastot ja oikealla valitun levykirjaston levyt.

En-Kuva 7.4.BD:n uusi selain komponentin valinnalle

nen eri kirjastotyypin valinnoille tehtiin valintakohtaisesti erikseen tietokantalistoja, alasve-tovalikoita ja valintadialogeja. Ylläpidon helpottamiseksi uuden rajapinnan avulla voidaan karsia pois erilaisia tapoja tehdä valintoja. Uusi selain soveltuu korvaamaan kaikki vanhat tavat valita kirjastokomponentteja ja se on helposti toteutettavissa kaikille kirjastotyypeille.

Kuitenkin jossain tilanteissa vanha tapa voi olla nopeampi ja kätevämpi, mutta ero ei ole merkittävä. Sen sijaan monen eri valintatavan korvaamisella yhdellä yleisellä selaimella saadaan keskitettyä ylläpito- ja kehitystyötä yhteen kohteeseen, mikä lisää huomattavasti tuotekehityksen tehokkuutta.

Vielä suurempi hyöty tullaan saavuttamaan, kun kirjastojen muokkaamiselle saadaan val-miiksi uusi kaikille kirjastoille yhteinen käyttöliittymä. Sen avulla kyetään aiempaa tehok-kaammin ohjaamaan ja auttamaan käyttäjää kirjaston muokkaamisessa. Tällä hetkellä kaikille kirjastoille ei ole muokkausta varten käyttöliittymää, sillä kirjastoja on totuttu muok-kaamaan tiedostojärjestelmän kautta tai suoraan muuttamalla tietokannan arvoja. Tämä johtaa nykytilanteeseen, jossa kirjastoja kopioidaan tarpeettomasti ja muokataan vapaas-ti. Vapaasti muokattaessa ne saadaan helposti virheellisillä tai yhteensopimattomilla ar-voilla tilaan, jossa kirjastoa ei voi käyttää.

7.3 Jatkokehitys

Uudistettua kirjastorakennetta tullaan hyödyntämään laajemmin Vertex BD:n kirjastojen hallintaan. Tämä tarkoittaa olemassa olevien kirjastojen muokkaamista, mutta myös ai-van uusien kirjastotyyppien tekoa. Vertex BD:stä löytyy muutamia tietokantoja, jotka halu-taan pilkkoa ja jakaa kirjastoiksi. Uudistettu rakenne tekee tästä siirtotyöstä huomattavas-ti nopeampaa. Kirjastojen siirtotyön lisäksi erilaisten kirjastojen muokkaamiset hoidetaan vielä valmiiksi toteutetuilla käyttöliittymillä, joita tullaan yhdistämään käyttäjäkokemuksen parantamiseksi.

Vertex BD:n lisäksi jatkossa tuoteperheen tuotteiden yhtenäisyyden kasvattamiseksi kan-nattaa muidenkin tuotteiden komponentteja siirtää käyttämään uudistettua kirjastoraken-netta. Työ kannattaa aloittaa Vertex ED:stä, sillä siellä kirjastot käyttävät jo valmiiksi raja-pintaa, joka tässä työssä uudistettiin. Muissa tuotteissa on omat tapansa käsitellä kom-ponentteja. Kuitenkin tuotteiden välisen yhtenäisyyden lisäksi uuden toteutuksen avulla voidaan selkeyttää vanhaa koodia ja parantaa ylläpidettävyyttä. Siksi on tärkeää ottaa käyttöön uusi kirjastorakenne kaikissa tuotteissa.

Selkeä jatkokehityksen suunta on myös kirjastopakettien tarjoaminen verkon välityksellä.

Verkosta ladattavat kirjastot ovat yksi pitkän aikavälin tavoitteista, joita kirjastokehityksellä pyritään saavuttamaan. Tämän hetkisessä toteutuksessa onkin otettu huomioon vaati-mukset, jotka verkosta lataaminen asettaa kirjastoille. Nykyisestä toteutuksesta kuitenkin puuttuu paljon konkreettisia palveluita, jotta kirjastoja olisi mahdollista ladata verkosta.

Palveluja kannattaa alkaa varhaisessa vaiheessa toteuttaa siitä huolimatta, että palvelin-puoli ei vielä tue kirjastojen lataamista sovellukseen. Varhaisessa vaiheessa toteutettaes-sa sekä palvelinpuolen että sovelluspuolen vaatimukset tarkentuvat tehokkaammin. Eri-tyisesti moduuleihin liittyvät vaatimukset ovat vielä alkuvaiheessa. Moduuleilla hallitaan kirjastojen aktiivisuuksia ja niiden avulla hoidettaisiin myös kirjastojen päivittäminen ver-kon yli. Aktiivisuuksien hallinnasta on olemassa vaatimusmäärittelyjä, mutta päivittämisen osalta konkreettiset vaatimusmäärittelyt vielä puuttuvat.

Yksi selkeä puute kirjastoissa liittyy kielikäännöksiin. Kirjastojen ja komponenttien kuvauk-sia voidaan tällä hetkellä kääntää, mutta komponenttien sisältämille kentille ei ole mahdol-lista tehdä kielikäännöksiä. Tähän syynä on ollut se, että ei ole ollut yhtenäistä rajapintaa kirjastoille, joten yhtenäisen käännöstekniikan tekeminen on ollut hankalaa. Nyt kirjasto-jen yhtenäistämisen jälkeen yhtenäisen käännöstekniikan teko on huomattavasti helpom-paa. Yhteisen käännöstekniikan toteuttaminen helpottaa ylläpitoa, kun samaa kirjastoa voidaan käyttää eri alueilla eikä tarvitse käännöstä varten tehdä kirjastosta kopiota.

Kirjastokehitys tuo myös mahdollisuuden yhtenäistää kirjastojen välisiä termejä. Nykyi-sin jokainen kirjasto määrittelee itse mitä arvoja sen sisältämille komponenteille voidaan antaa. Tämä johtaa helposti siihen, että samaa tarkoittavalle asialle on voitu antaa eri

kir-jastoissa oma nimi. Tarvittaisiin järjestelmä, joka osaa etsiä samantyylistä termiä muista kirjastoista ja ehdottaa olemassa olevista komponenttien parametreista parhaiten sopivia vaihtoehtoja. Tällaisen järjestelmän lisäksi termejä pitäisi myös yhdistää ja siivota käyt-tämättömät pois. Tämä vaatii paljon työtä, sillä termien kuvauksia muokattaessa täytyy tietää komponentin käytöstä hyvin paljon. Yhtenäistäminen kuitenkin helpottaisi huomat-tavasti uuden kirjaston ymmärtämistä, kun käyttäjä tai ylläpitäjä voi hyödyntää tutuista kirjastoista opittuja termejä uuden kirjaston kanssa.

8 YHTEENVETO

Tässä diplomityössä tavoitteena oli modernisoida CAD-ohjelmiston arkkitehtuuria. Mo-dernisoinnin kohteena oli suunnittelussa käytettyjen komponenttien tietojen käsittelyyn liittyvä toiminnallisuus. Komponenttien tiedot olivat tallennettuna komponenttikirjastoihin, joiden tallennusmuoto vaihteli hyvin paljon. Itse komponenttien muoto myös vaihteli hy-vin paljon 3D-mallista aina numerointisääntöihin asti. Kirjastojen moninaisen valikoiman lisäksi niiden määrä oli kasvanut vuosien varrella hyvin suureksi. Suuri lukumäärä itses-sään ei ole ongelma, mutta sen sisältämä huomattava redundantin datan määrä muodos-tui ylläpidollisesti hankalaksi.

Tavoitteena diplomityössä olikin erityisesti helpottaa kirjastojen ylläpitoa. Tarpeet kirjasto-jen uudistamiseksi ylläpidon näkökulmasta liittyivät erityisesti kirjastokirjasto-jen päivittämiseen.

Päivittäminen oli työlästä, sillä kirjastoja oli usein muokattu kopioimalla niitä. Kopioituun kirjastoon tehdyt muutokset pitää säilyä päivittäessä kirjastoja ja samalla pitää huolehtia, että kirjaston toiminta saa mennä päivityksen seurauksena rikki.

Toinen tärkeä motivaatio kirjastojen modernisoille oli tulevaisuuden kehityskohteet. Kir-jaston vanha arkkitehtuuri ei pysty vastaamaan nykyisiin tarpeisiin. Oleellisimpia tarpeita olivat erityisesti tuki kirjastojen siirtämiseksi helposti ohjelmistojen välillä ja niiden lataa-minen verkon ylitse. Näin kirjastojen käytöstä saadaan tehtyä mahdollisimman joustavaa ja helppoa.

Tuotannossa olevien ominaisuuksien uudistamisessa on aina omat erityiset haasteensa.

Vanha toiminnallisuus tulee säilyttää ja siirtymän pitää sujua sulavasti. Samalla mukana ovat yleiset ohjelmistoprojektin haasteet, kun kehitetään täysin uusia osia ohjelmistoon.

Onnistuminen modernisoinnissa vaatii paljon suunnittelua ja hyvää tietämystä vanhan oh-jelmiston toiminnasta sekä uuden ohjelman vaatimuksista. Näitä asioita varten otettiin uu-distamisprosessiin mukaan arkkitehtuurin arviointi. Arkkitehtuurin arvioinnin avulla tietoa saatiin jaettua tehokkaasti ja samalla päätöksistä tuli avoimempia. Näin tietämys kasvoi ja vaatimukset olivat selkeämpiä, mikä helpotti suunnittelutyötä.

Kokonaisuudessaankin modernisoinnissa onnistuttiin varsin hyvin. Redundantin datan määrää saadaan hallittua moduulien avulla ja uusi kirjastoarkkitehtuuri helpottaa kirjas-tojen päivittämistä ja siirtämistä. Arkkitehtuurin arviointikin monen iteraatiokierroksen jäl-keen saatiin muokattua sujuvaksi. Kuitenkin jo ennen viimeisiä iteraatiokierroksia arviointi

koettiin mielekkäästi. Arvioinnilla saavutettiin ymmärryksen lisääntymistä sekä toteutuk-sesta että vaatimuksista.

Ohjelmiston uudistamisen aikana käytettyä arkkitehtuurin arviointia kannattaa jatkossa-kin hyödyntää. Sen avulla tietämystä toimintaympäristöstä ja päätökseen vaikuttavista tekijöistä saadaan jaettua tehokkaasti eri ihmisten välillä. Tällä hetkellä toteutettu arkki-tehtuuri itsessään on todettu toimivaksi ja seuraavaksi sen laajentaminen eri kirjastoihin ja toisiin sovelluksiin jatkuu. Näiden toimien jälkeen kannattaa siirtyä toteuttamaan asioi-ta, joita tämä kehitys mahdollisti. Sillä niiden avulla saavutetaan modernisoinnin suurin hyöty.

LÄHTEET

[1] Kruchten, P., Obbink, H. ja Stafford, J. The Past, Present, and Future for Software Architecture. eng.IEEE software23.2 (2006), 22–30. ISSN: 0740-7459.

[2] Systems and software engineering — Architecture description. Standard. Geneva, CH: International Organization for Standardization, joulukuu 2011.

[3] Dehaghani, S. M. H. ja Hajrahimi, N. Which factors affect software projects main-tenance cost more? eng.Acta informatica medica21.1 (2013), 63–66.ISSN: 0353-8109.

[4] Knodel, J. ja Naab, M. Software Architecture Evaluation in Practice: Retrospective on More Than 50 Architecture Evaluations in Industry. eng.2014 IEEE/IFIP Confe-rence on Software Architecture. IEEE, 2014, 115–124.ISBN: 9781479934126.

[5] Kruchten, P. The 4+1 View Model of architecture. eng.IEEE software 12.6 (1995), 42–50.ISSN: 0740-7459.

[6] Kazman, R., Bass, L., Webb, M. ja Abowd, G. SAAM: a method for analyzing the properties of software architectures. eng.Proceedings of the 16th international con-ference on software engineering. ICSE ’94. IEEE Computer Society Press, 1994, 81–90.ISBN: 081865855X.

[7] Kazman, R., Klein, M. ja Clements, P.ATAM: Method for Architecture Evaluation.

eng. 2000.

[8] Bass, L. Software architecture in practice. eng. 3rd ed. SEI series in software engineering Software architecture in practice. Addison Wesley, 2013. ISBN: 0-13-294277-1.

[9] Heesch, U. van, Eloranta, V.-P., Avgeriou, P., Koskimies, K. ja Harrison, N. Decision-Centric Architecture Reviews. eng.IEEE software31.1 (2014), 69–76.ISSN: 0740-7459.

[10] DCAR:n epäviralliset kotisivut. 2021.URL:http://www.dcar-evaluation.com/

?page_id=4(viitattu 05. 01. 2021).

[11] Rueckert, J., Burger, A., Koziolek, H., Sivanthi, T., Moga, A. ja Franke, C. Archi-tectural decision forces at work: experiences in an industrial consultancy setting.

eng.Proceedings of the 2019 27th ACM Joint Meeting on european software en-gineering conference and symposium on the foundations of software enen-gineering.

ESEC/FSE 2019. ACM, 2019, 996–1005.ISBN: 9781450355728.

[12] Crotty, J. ja Horrocks, I. Managing legacy system costs: A case study of a meta-assessment model to identify solutions in a large financial services company. eng.

Applied computing and informatics13.2 (2017), 175–183.ISSN: 2210-8327.

[13] Khadka, R., Batlajery, B. V., Saeidi, A. M., Jansen, S. ja Hage, J. How do profes-sionals perceive legacy systems and software modernization? eng. Proceedings of the 36th International Conference on software engineering. ICSE 2014. ACM, 2014, 36–47.ISBN: 1450327567.

[14] Tripathy, P. Software evolution and maintenance : a practitioner’s approach. eng.

Hoboken, [New Jersey: John Wiley ja Sons, 2015 - 2015.ISBN: 1-118-96463-2.

[15] Manchanda, D., Singh, A. ja Garg, N. An Insight upon the Effect of Quality As-surance on the Cost of Software Development.International Journal of Computer Applications80 (lokakuu 2013), 4–10.DOI:10.5120/13919-1751.

[16] Rashid, N., Salam, M., Sani, R. ja Alam, F. Analysis of Risks in Re-Engineering Software Systems. International Journal of Computer Applications 73 (heinäkuu 2013), 5–8.DOI:10.5120/12783-9851.

[17] Alkazemi, B. Y., Nour, M. K. ja Meelud, A. Q. Towards a Framework to Assess Legacy Systems. eng.2013 IEEE International Conference on Systems, Man, and Cybernetics. IEEE, 2013, 924–928.ISBN: 9780769551548.

[18] Hunt, A. ja Thomas, D. Software archaeology. eng.IEEE software19.2 (2002), 20–

22.ISSN: 0740-7459.

[19] Taylor, R., Medvidovic, N. ja Dashofy, E.Software Architecture: Foundations, Theo-ry, and Practice. Wiley, 2009. ISBN: 9780470167748. URL: https : / / books . google.fi/books?id=j9pdGQAACAAJ.

[20] Sharma, A., Kumar, M. ja Agarwal, S. A Complete Survey on Software Architectural Styles and Patterns.Procedia Computer Science70 (2015). Proceedings of the 4th International Conference on Eco-friendly Computing and Communication Systems, 16–28. ISSN: 1877-0509. DOI: https://doi.org/10.1016/j.procs.2015.

10.019. URL: https://www.sciencedirect.com/science/article/pii/

S187705091503183X.

[21] De Cesare, S., Lycett, M. G. ja Macredie, R. The Development of Component-based Information Systems. Routledge, 2006.

[22] Koskimies, K.Ohjelmistoarkkitehtuurit. Valikko. Helsinki: Talentum, 2005.ISBN: 952-14-0862-6.

[23] Martin Fowler, J. L.Microservices.URL:https://martinfowler.com/articles/

microservices.html(viitattu 02. 03. 2021).

[24] Rajput, D.Hands-On Microservices - Monitoring and Testing. eng. 2018.

[25] Vertex Systems Oy, verkkosivu.URL:https://vertex.fi(viitattu 27. 01. 2021).

[26] Vertex BD, verkkosivu.URL:https://vertexcad.com/bd(viitattu 27. 01. 2021).