Avoin lähdekoodi

Ohjelmistoteollisuuden suunnittelusyklien nopeutuessa virtaviivaiset ja ketterät menetelmät ovat osoittautuneet menestyksekkäiksi. N4S-ohjelman lähtökohtana on , että myös isojen hankkeiden ketteryyttä voi ja tulee lisätä. Yhteishankkeissa olennaista on kaikkien tulosten jakaminen mahdollisimman läpinäkyvästi. Mukana olevat organisaatiot kehittävät yhteistyössä tuotteita, palveluita tai toimintaansa tietyissä raameissa ja tietyn yhteisesti sovitun tavan mukaan. Tällä sivulla esitellään N4S-ohjelmassa kehitettyjä ja jatkokehitettyjä avoimen lähdekoodin ohjelmistot.

 

Contriboard — työkalu ketterään tiimityöskentelyyn

 

Contriboard on kehitystyökalu, joka sisältää kaikki nykyaikaiset pilvipalveluun kuuluvat oleelliset elementit: helppokäyttöisyys, skaalautuvuus, palveluseuranta ja ajanmukaiset teknologiat. Contriboard on ideointiväline, jossa työskentelyalustana toimii virtuaalinen taulu ja siihen asetellut idea-laput. Contriboard-palveluun luotu virtuaalitaulu voidaan jakaa reaaliaikaisesti esimerkiksi tiimin kesken, jonka jälkeen kaikki taulun käyttäjät voivat vapaasti heitellä ideoita lappujen muodossa. Palvelun taustajärjestelmät  mahdollistavat sen jatkokehittämisen varsin monipuolisesti. Useilla yrityksillä voi olla varsin erilainen käsitys esimerkiksi siitä, mitä tarkoitetaan käsitteellä palvelumuotoilu. Contriboardin avulla voidaan avata keskustelua miten toimintatapoja voidaan vielä kehittää eteenpäin. Samalla kaikki muutkin voivat oppia.

https://github.com/N4SJAMK/challenge_factory_2015/wiki/Contriboard-Fact-Sheet

https://github.com/N4SJAMK/challenge_factory_2015/wiki/Contriboard-Fact-Sheet—English

http://www.n4s.fi/fi/jamk-suunnitteli-tuotantolinjan-yrityksille-ja-yhteisoille/

 

JARMO: datan suodattaminen automaattisesti eri tietokantoihin

 

JARMO-komponentilla ja sen osasilla voidaan toteuttaa eri verkkopalveluiden monitorointia. Jarmon avulla palvelun eri osista kerätty tieto saadaan suodatettua helposti useisiin eri tietokantoihin

JARMO kuuntelee perinteisen TCP-liikenteen sijaan yhteydetöntä UDP-liikennettä, joka mahdollistaa kuitenkin tiedostojen siirron. UDP on käytännössä TCP:n ohella toinen käytetyistä tiedonsiirtoprotokollista. UDP:n etuna perinteiseen TCP:hen nähden on se, että se on huomattavasti nopeampi, mutta tämä tarkoittaa myös sitä että tietoliikennepakettien saapumisesta ei saada ns. kuittausta kuten TCP:ssä saadaan. JARMO käyttää UDP:ta siksi, koska metriikkaa tai muuta “runsasta” data kerättäessä muutaman tiedonsiirtopaketin putoaminen välistä ei ole kriittistä.

JARMO odottaa sisääntulevan datan olevan JSON formaattia, joka on kevyehkö XML:n kaltainen tiedostomuoto. Se soveltuu hyvin monimutkaisenkin tiedon strukturoimiseen ja sen lähettämiseen langan yli. JARMOA voidaan ajatella eräänlaisena tiimalasin-muotoisena kappaleena, joka mahdollistaa tiedon keräämisen yhteen pisteeseen, ja sen edelleen viemisen useaan eri kohteeseen.

https://github.com/N4SJAMK/jarmo/wiki/Contriboard-Application-and-Server-Monitoring-System

 

NOISE-häiriögeneraattori

 

Noise-häiriögeneraattorin avulla voidaan testata eri verkkoyhteyshäiriöiden vaikutusta kehitettyyn palveluun. Työkalun avulla voidaan esimerkiksi palvelun (server) ja asiakasohjelmiston (client) välille tuottaa kontrolloitu verkkoyhteys, jossa tarpeen mukaan esiintyy eri yhteyshäiriöitä. Häiriögeneraattoria ohjataan API-rajapinnan kautta ja sen myötä se voidaan integroida osaksi muuta testiympäristöä. Häiriögeneraattorin koko toteutus on paketoitu Docker-kontin muotoon (https://www.docker.com) ja tämän seurauksena on käyttö varsin yksinkertaista esim. PAAS/IAAS-ympäristöissä. Tällä hetkellä saatavilla oleva toteutus on esimerkin vuoksi sovitettu erityisesti Contriboard-palvelun testaukseen. Toteutusta voidaan soveltaa pienin muutoksin myös muissa testauskohteissa. Noise-häiriögeneraattori on toteutettu hyödyntämällä avoimia ohjelmistokomponentteja, kuten esimerkkeinä HA-Proxy ja netem.

https://github.com/N4SJAMK/contriboard-noise-tester

 

 Viritin CDN-työkalu

 

Githubissa on n. 2000 Vaadin-projektia ja määrä kasvaa koko ajan. Viritin CDN-työkalu on tarkoitettu sovelluskehittäjille. Se mahdollistaa sovelluskehittäjän käyttää kaikkia Vaadin-lisäosia pilvipalvelusta esikäännettynä, jolloin säästetään huomattavasti kehittäjän työaikaa. Pilvipalvelussa on joukko pienoisohjelmia (widget) valmiina käännettynä.

Viritin hakee pilvestä valmiiksi käännetyt pienoisohjelmat sovelluskehittäjän toiveiden mukaisesti. Viritin valitsee pilvestä käyttäjän lisäosien mukaan sopivan ja optimoidun kokoelman. Tämän ansiosta mitään ei tarvitse kääntää (compile) kehittäjän koneella. Vaadin on ottanut Viritin CDN:n käyttöönsä Vaadin-verkoston testaamisen nopeuttamiseksi.

Projektin asennusohjeet löytyvät: http://cdn.virit.in/ ja githubissa https://github.com/viritin/vwscdn

 

NITCAD-työkalu datan keräämiseen Vaadin-verkostossa

 

Työkalun avulla voidaan kerätä päätöksenteon tueksi käyttödataa ohjelmistoista. NITCAD (Non-Intrusive Tool for Collecting Analytics Data) keräää automaattisesti dataa siitä, miten ihmiset käyttävät ohjelmistoa. Ohjelmistoa, josta dataa kerätään, ei tarvitse muuttaa tätä datan keräystä varten, vaan tämä työkalu ainoastaan linkitetään aspektiohjelmoinnin periaatteiden mukaisesti tuon ohjelmiston kylkeen. Työkalu sopii ohjelmistokehitykseen, jossa halutaan priorisoida sellaisia toiminnallisuuksia, joita ihmiset eniten käyttävät.

NITCAD-työkalu kerää dataa Vaadin-kehyksellä toteutetuista ohjelmistoista. Aspektiohjelmoinnilla (toteutus hajaantuu useisiin ohjelmayksiköihin) päästään käsiksi kuitenkin myös muiden teknologioiden päälle rakennettuihin ohjelmistoihin. Pisimmälle edenneet aspektiohjelmoinnin toteutukset on tehty Java-kielen ympärille, mutta myös muille kielille löytyy tukea.

https://ville.cs.utu.fi/

 

Lokki: paikkatiedon jakamissovellus

 

F-Securen vuonna 2013 lanseeraama Lokki -paikkatiedon jakamissovellus jakaa valitun ryhmän kesken tiedon siitä, missä kukin jäsenistä kulloinkin on. Vapaaehtoiseen tiedonjakoon perustuva palvelu auttaa perheitä ja ryhmiä tunnistamalla ja jakamalla etukäteen merkityt ryhmän jäsenten sijainnit tai ilmoittamalla haluttaessa jäsenen uudesta sijainnista.

Lokki näyttää kirjautuneille jäsenille perheen tai ryhmän yhteiset, itse määritellyt paikat, kuten kodin, koulun tai kaverikyläpaikan. Sovelluksella voidaan esimerkiksi tarkistaa, onko lapsi koulussa tai kotona sovittuun aikaan. Ohjelma lähettää automaattisen ilmoituksen, kun ryhmän jäsen saapuu tiettyyn paikkaan tai tämän lähtiessä sieltä. Käyttäjät voivat kutsua palveluun muut ryhmän jäsenet ja päättää, jakavatko he oman sijaintinsa muille. Sovelluksen kautta voi myös lähettää viestejä jäsenien kesken. Sovellus ei talleta käyttäjien paikkahistoriaa, se tunnistaa ja näyttää vain henkilön viimeisimmän paikkatiedon. N4S-ohjelmassa Lokki-palvelua viedään eteenpäin Helsingin yliopiston Software Factoryn ja Facebookin koordinoiman Open Academyn kautta.

https://github.com/F-Secure/lokki

https://github.com/TheSoftwareFactory/lokki

http://www.n4s.fi/fi/f-securen-paikallistamispalvelun-koodi-vapaana-saatavana-kayttajayhteisolle/

 

MBPeT: Suorituskyvyn testaustyökalu

 

MBPeT on työkalu joka tuottaa kuormitusta verkkopohjaisten järjestelmien suorituskyvyn ja skaalautuvuuden testaamista varten. MBPeT pystyy testaamaan kuinka monta samanaikaista käyttäjää tietty järjestelmä pystyy ylläpitämään. Tätä varten MBPeT tuottaa synteettistä kuormitusta erilaisia mallipohjaisia käyttäjäprofiileja käyttäen, mikä yksinkertaistaa testimäärittelyt ja niiden luomisen. Sovelluksella voi todentaa uusia ominaisuuksia ja se mahdollistaa jatkuvan kättöönoton (continuous deployment) ja integroinnin (continuous integration).

http://cloud1.cs.abo.fi:8181

 

UPPAAL TRON

 

UPPAAL on työkalu jolla voidaan mallintaa, simuloida sekä verifioida reaaliaikajärjestelmiä. Järjestelmä on reaaliaikainen, jos vasteaika pystytään pitämään alle sellaisen rajan, jonka ylittäminen aiheuttaa järjestelmässä vakavia seuraamuksia. Uppaal2Tron on työkalu, joka on suunniteltu erityisesti sulautettujen järjestelmien testaamiseen. Se analysoi testi- ja valvontalokeja ja näyttää vastaavan jäljen suoratestaus- tai valvontamallissa. Simuloinnin ja tarkastuksen kautta, Uppaal2Tron auttaa ymmärtämään,miksi testi tai systeemi epäonnistui. Se toimii UPPAAL-mallitarkastajan ja sen TRON-testigeneraattorin yhteydessä.

http://users.abo.fi/jiqbal/back-tracer/index.html

http://www.n4s.fi/publication/a-practical-application-of-uppaal-and-dtron-for-runtime-verification-2/

http://www.n4s.fi/publication/tron2uppaal-backtracer-tool-from-tron-logs-to-uppaal-traces/

http://tucs.fi/publications/view/?pub_id=tIqTrVaPo15a

 

TOAS Package Process

 

TOAS (Tieto Open Application Suite), joka on Tiedon kehittämä, avoimeen lähdekoodiin perustuva Java-pohjainen liiketoimintaratkaisujen kehitysalusta. Se tarjoaa alustan palveluna, joka mahdollistaa yksityisessä pilviympäristössä tapahtuvan yritysratkaisujen kehittämisen

Alusta on paketoitu Linux Red Hatille, CentOS:lle ja Linux Debian Ubuntulle.

https://github.com/open-infinity/automation/tree/master/puppet/oi3-modules

TUPAS-tunnistuskirjasto

TUPAS on suomalaisten pankkien yhteinen tunnistamispalvelu, jolla tunnistetaan verkkopalvelujen käyttäjät pankkien verkkopalvelutunnuksilla. TUPAS-tunnistuskirjasto on valmis kirjasto, jolla Node.js ympäristössä voidaan pienellä konfiguraatiolla saada aikaan toiminnallisuus verkkopankkimaksuihin ja TUPAS-tunnistamiseen. TUPAS-tunnistuskirjastoa voidaan käyttää missä tahansa palvelussa, joka tarvitsee vahvaa tunnistautumista. Käyttöönoton yhteydessä pitää tehdä asiankuuluvat sopimukset suomalaisten pankkien (Tapiola, Nordea, DanskeBank, Handelsbanken, OP, AKTIA, Ålandsbanken, S-Pankki, Säätöpankki, POP Pankki) kanssa, laittaa pankeilta saadut maksu- ja tunnistusparametrit konfigurointitiedoistoihin ja sen jälkeen toimenpiteet onnistuvat kirjaston avulla.

https://github.com/reaktor/node-tupas

Verkkomaksukirjasto Maksunappi

Maksunappi on kirjasto verkkomaksuihin Suomessa. Maksunappi on valmis kirjasto, jolla Node.js ympäristössä voidaan pienellä konfiguraatiolla saada aikaan toiminnallisuus verkkopankkimaksuihin. Kirjastoa voi käyttää verkkokaupassa, jossa asiakas voi maksaa ostoksensa suoraan verkkopankkinsa kautta.

https://github.com/reaktor/maksunappi

 

Pg-using-bluebird

 

Pg-using-bluebird on kirjasto vapaan lähdekoodin PostgreSGL-yhteyksieen ja tiedonsiirtotapahtumien hallintaan, kun käytetään Bluebird “promise”-mallia.

Bluebird on kirjasto, jolla Javascriptillä voi tehdä asynkronista ohjelmointia käyttäen “promise” mallia. Pg-using-bluebird on kirjasto, jolla voidaan käsitellä vapaan lähdekoodin PostgreSQL-tietokantoja Bluebird-kirjaston sisällä.

https://github.com/reaktor/pg-using-bluebird

 

Kannattaako kauppa: asuntojen hintakehitysmalli postinumeroittain

 

Sovelluksessa on mahdollista tarkastella asuntojen hintoja Suomessa postinumerojen perusteella. Sovellus perustuu Tilastokeskukselta saatuun avoimeen dataan.

http://kannattaakokauppa.fi

http://louhos.github.io/news/2015/05/07/asuntohintojen-muutokset/

https://github.com/reaktor/Neliohinnat

 

Templaatti Clojure-ohjelmointikielellä tehtyjen web-sovellusten nopeampaan toimivuuteen

 

Monesssa organisaatiossa on tehty viime vuosina taustalla Clojure-ohjelmointikielellä projekteja. Vaikka Clojure on sopiva tuotantokäyttöön, sille ei ole sen suunnittelufilosofiasta johtuen syntynyt samanlaisia vahvasti toteutusta ohjaavia frameworkkeja kuin esimerkiksi Javalle. Spring, Hibernate ja vastaavat Javalla tehdyt kielet ohjaavat hyvin paljon kehitystyötä ja suunnitteluratkaisuja, mutta Clojuressa koodaaja päättää itse miten parhaaksi näkee. Clojure-projektin pystyttäminen vaatii joko vahvaa kokemusta tai mittavaa selvitystyötä kun pitää ratkaista lokalisointi.

Nyt on tehty vastaavanlainen runko kuin Java-maailmassa suosiota kerännyt Spring Boot, joka tarjoaa valmiin ja helpon templaatin web-ohjelmistojen tekemiseen. Tehdyssä templaatissa on otettu kantaa siihen miten konfiguraatio ladataan koodin ulkopuolelta, miten lokalisoidaan, miten lokitetaan ja miten lokitus konfiguroidaan. Pohjana ovat asiakasprojekteissa tehdyt ratkaisut. Käytännössä tällä voi lyhentää aikaa joka menee uuden Clojure web-sovelluksen tekemisessä alkuun pääsemiseen. Tapauskohtaisesti voidaan puhua tunneista, päivistä tai viikoista.

https://github.com/lokori/clj-weba

 

ClamAV

 

Ilmainen virusskanneri (ClamAV) on suunniteltu toimimaan REST-rajapintoja (Representational State Transfer) tarjoavan palvelimen taustalla. Virusskanneria voi käyttää sellaisenaan ilman mitään koodimuutoksia. Sen asetuksia voi myös räätälöidä omiin tarpeisiin. Virusskanneri sopii moniin web-sovellusprojekteihin, koska käytännössä kaikki liitetiedostot jotka tulevat loppukäyttäjiltä pitää tavalla tai toisella tarkastaa ja skannata virusten varalta. Viruskannerin saa käyttöön helposti: edes lähdekoodia ei tarvitse kääntää koska valmiit JAR-paketit (Java Archive) ovat tarjolla julkisessa tietovarastossa ( Sonatype Maven: http://central.sonatype.org).

REST-palvelu: https://github.com/solita/clamav-rest

Java: https://github.com/solita/clamav-java

Dokumentaatio: http://dev.solita.fi/2015/06/02/rest-virusscan.html

 

Myyntivalikoiman optimointi itseorganisoituvan kartan avulla

 

Sovellus mahdollistaa datalähtöisen lähestymistavan myytävissä olevien lehtivalikoimien optimointiin. Visualisointiin ja klusterointiin käytetään itseorganisoituvaa karttaa (self-organizing map). Karttaan perustuvan menetelmän avulla lehden myyntiä ennustetaan muiden samankaltaisten lehtien myynnin perusteella samankaltaisen myyntiprofiilin lehtipisteissä. Tämän avulla voidaan arvioida mikä on lehden myynti lehtipisteessä, jos se lisättäisiin valikoimaan.

Ehdotettujen muutosten tuoma myynti oli vuodessa keskimäärin 29% korkeampaa myyntiä kuin verrokkiryhmän lehdet. Tilastollisen tarkastelun perusteella ero on erittäin merkitsevä, mutta vaatii lisätutkimusta.

https://github.com/timole/assortment-planning-self-organizing-map

 

Meta Model Tool: Metamallityökalu

 

Metamallityökalu auttaa hahmottamaan tiedonkulkua tietokannassa. Metamallityökalua voidaan hyödyntää heti asiakkaan tuotantodatan analysoimisessa ja se auttaa hahmottamaan tietovirtaa.Tämä saavutetaan esittämällä tietokannan objektit ja niiden väliset suhteet visuaalisena graafina. Erilaisilla rajaustoiminnoilla saadaan näkyviin vain haluttu tieto.

Jos käytössä on ollut vanha tietokanta eikä dokumentaatiota ole tehty kunnolla, metamallityökalun avulla rakenne voidaan päivittää automaattisesti. Työkalun avulla voidaan myös korjata jossakin taulussa oleva virheellinen data tehokkaasti. Yleensä halutaan tietää mistä virheellisen data tuli tai mihin kaikkiin huomattu virhe tulee vaikuttamaan. Molemmat polut voidaan visualisoida ja raskaammalla tietokantatyökalulla käydä tarkistamassa tarvittavat taulut.

Metamallin esittämiseen soveltuvan käyttöliittymän koodi on osoitteessa https://github.com/reader90/meta-model-tool .