L models. Tekninen määrittely. Ryhmä Rajoitteiset

Samankaltaiset tiedostot
Lmodels. Tekninen määrittely. Ryhmä Rajoitteiset

L models. Käyttöohje. Ryhmä Rajoitteiset

L m o d els. Tekninen määrittely. Ryhmä Rajoitteiset

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

T harjoitustyö, kevät 2012

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

L models. Testisuunnitelma. Ryhmä Rajoitteiset

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

L models. Vaatimusmäärittely. Ryhmä Rajoitteiset

Ohjelmistojen mallintaminen, mallintaminen ja UML

Dokumentin nimi LOGO:) Tampereen teknillinen yliopisto. Ryhmä XXX: Projektiryhmän nimi Projektin nimi

Korkeakoulujen prosessipalvelin: mallintajan palvelinohje Versio 0.2

Ohjelmointi 1 / syksy /20: IDE

T Testiraportti - järjestelmätestaus

T Testiraportti - integraatiotestaus

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

TOIMINNALLINEN MÄÄRITTELY MS

T harjoitustehtävät, syksy 2011

Projektisuunnitelma. Ryhmä Rajoitteiset

L models. Projektisuunnitelma. Ryhmä Rajoitteiset

L models. Projektisuunnitelma. Ryhmä Rajoitteiset

Kieliversiointityökalu Java-ohjelmistoon. Ohje

KIURU Tietotekniikan sovellusprojekti

TermBase NET versio (Beta)

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

ELM GROUP 04. Teemu Laakso Henrik Talarmo

L models. Vaatimusmäärittely. Ryhmä Rajoitteiset

TEKNINEN MÄÄRITTELY Virtuaaliyhteisöjen muodostaminen Versio 1.0 (Luonnos 2)

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

VYPEdit verkkosivualusta SVY-toimijoille

Ohjelmistojen suunnittelu

UCOT-Sovellusprojekti. Testausraportti

S11-09 Control System for an. Autonomous Household Robot Platform

Historiaa. Unix kirjoitettiin kokonaan uudestaan C-kielellä Unix jakautui myöhemmin System V ja BSDnimisiin. Kuutti, Rantala: Linux

UCOT-Sovellusprojekti. Asennusohje

FuturaPlan. Järjestelmävaatimukset

Käyttöohje. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Toiminnalliset ja ei-toiminnalliset vaatimukset Tunnus (ID) Vaatimus Vaatimuksen

WINE API ja Virtualisointiohjelmistot

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Matematiikan oppifoorumi Projektisuunnitelma

SOVELLUSALUEEN KUVAUS

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

4. Luokan testaus ja käyttö olion kautta 4.1

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

Lohtu-projekti. Testaussuunnitelma

Automaattinen yksikkötestaus

15. Ohjelmoinnin tekniikkaa 15.1

Tekninen suunnitelma - StatbeatMOBILE

Valppaan asennus- ja käyttöohje

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

5. HelloWorld-ohjelma 5.1

VAATIMUSMÄÄRITTELY. PROJEKTITYÖ Tik Wclique

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Convergence of messaging

15. Ohjelmoinnin tekniikkaa 15.1

Visual Case 2. Miika Kasnio (C9767)

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

T Tietojenkäsittelyopin ohjelmatyö Hirviöryhmä loppukatselmointi. Hirviö. Projektikatselmointi

Verkkopokerijärjestelmä. Loppuraportti Ryhmä Kanat Ohjelmistotuotantoprojekti, syksy 2008

Hajautettujen järjestelmien rakentaminen - Jini. Ohjelmistotuotantovälineet-seminaarin esitelmä

Digi-tv vastaanottimella toteutettavat interaktiiviset sovellukset Selvitys GPL-lisensoinnin tuomat ongelmat

Tekoälyn hyödyntäminen asiakaspalvelun parantamiseksi Valtorissa ja Palkeissa

PrettyBitServer Tuote-esite

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

5. HelloWorld-ohjelma 5.1

Toimintaympäristön kuvaus. LTC-Otso Myyjän työkalu (POC)

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti

T Harjoitustyöluento

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Integrointi. Ohjelmistotekniikka kevät 2003

Ylläpitodokumentti Mooan

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin?

Simulaattorin asennus- ja käyttöohje

T Loppukatselmus

4. Lausekielinen ohjelmointi 4.1

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

Ohjelmistojen mallintaminen. Luento 11, 7.12.

8. Näppäimistöltä lukeminen 8.1

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

T Harjoitustyöluento

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito

11.4. Context-free kielet 1 / 17

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Avoin lähdekoodi. Jani Kylmäaho Maanmittauslaitos

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

Visma Software Oy

Sopimus Asiakas- ja potilastietojärjestelmästä. Liite N: Kielivaatimukset

Transkriptio:

Teknillinen Korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Tekninen määrittely Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset 0.1 17.10.2003 Tuomas Luttinen Ensimmäinen alustava versio. 0.2 22.10.2003 Tuomas Luttinen Enemmän sisältöä rungon päälle. Tätä iteraatiota koskemattomat otsikot on poistettu. 0.3 23.10.2003 Tuomas Luttinen Lisäys translaattorin toiminnan kuvaukseen: semanttinen analyysi, hylätyt ratkaisut mukaan. 0.4 24.10.2003 Tuomas Luttinen Palautteiden perusteella uuteen pohjaan muokattu versio. 1.0 26.10.2003 Jouni Karppinen & Mitro Kuha Dokumentti tarkastettu ja korjattu palautusta varten.

Sisällysluettelo 1 Johdanto... 1 1.1 Dokumentin tarkoitus ja kattavuus... 1 1.2 Tuote ja ympäristö... 1 1.3 Termit ja määritelmät... 1 2 Järjestelmän yleiskuvaus... 2 2.1 Sovellusalueen kuvaus... 2 2.2 Järjestelmän liittyminen ympäristöönsä... 2 2.3 Laitteistoympäristö... 2 2.4 Ohjelmistoympäristö... 2 2.5 Toteutuksen keskeiset reunaehdot... 3 3 Arkkitehtuurin kuvaus... 3 3.1 Suunnitteluperiaatteet... 3 3.2 Ohjelmistoarkkitehtuuri... 3 4 Moduulikuvaukset... 4 4.1 Translaattori... 4 4.2 Linearisaattori... 5 4.3 Ratkaisija... 5 5 Hylätyt ratkaisut... 5 5.1 Kääntäjän tuottamistyökalut... 5 5.2 Lineaarinen ratkaisija... 5

1 Johdanto 1.1 Dokumentin tarkoitus ja kattavuus Tämä dokumentti on Teknillisen Korkeakoulun kurssille T-76.115 Tietojenkäsittelyopin ohjelmatyö harjoitustyönä tehtävän lineaaristen rajoitteiden tyydyttämistehtävän ratkaisijan tekninen määrittely. Dokumentin ensisijainen tarkoitus on määrittää ja kuvata vaatimusmäärittelyssä esitettyjen toiminnallisuuksien tekninen toteutustapa ja toisekseen täydentää toiminnallista määrittelyä teknisestä näkökulmasta. Näin ollen dokumentti on suunnattu järjestelmän toteuttajille. Toisaalta se on tarkoitettu myös asiakkaan ja kurssin henkilökunnan arvioitavaksi. 1.2 Tuote ja ympäristö Tuotteen nimi on Lmodels, joka on lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija. Tuote tulee toimimaan verkkoyhteyden tarjoavassa tietokoneessa, jossa on Javavirtuaalikone. 1.3 Termit ja määritelmät Seuraavassa taulukossa on selitetty lyhyesti erikoistermistö, jota käytetään tämän asiakirjan eri kohdissa. Vaatimusmäärittelyssä esitettyjen termien ja määritelmien oletetaan olevan tuttuja lukijalle. Termi GLPK Java-virtuaalikone Jäsennyspuu Jäsentäjä lp_solve LP-kieli Määrittely (GNU Linear Programming Kit) GNU-lisenssin alla jaettava lineaaristen ongelmien ratkaisija. Käännettyä Java-koodia sisällään ajava prosessi, joka tarjoaa Java-sovellukselle kielen vaatimat palvelut, kuten roskankeruun. Eri alustoille tehdyt virtuaalikoneet mahdollistavat Javasovellusten ajamisen eri ympäristöissä. Kielen terminaaleista ja nonterminaaleista muodostuva tietorakenne, jossa nonterminaalit sisältävät toisia nonterminaaleja ja puun lehdiksi jääviä terminaaleja. Muodostaa terminaaleista kielen kieliopin perusteella nonterminaaleja, jotka sisältävät nonterminaalin määrittelevän operaattorin ja operandit. Javalla toteutettu lineaaristen ongelmien ratkaisija. Lineaaristen mallien määrittelyyn käytettävä kieli, jota esim. GLPK ja lp_solve hyväksyvät syötteenään. Open Source Ohjelmistoja, joiden lähdekoodi on vapaasti saatavilla ja muokattavissa ja jotka ovat muokattuinekin lähdekoodeineen vapaasti käytettävissä ja eteenpäin levitettävissä. 1

Termi RMI-rajapinta Määrittely (Remote Method Invocation) Tämän rajapinnan avulla yhdessä Java-virtuaalikoneessa sijaitseva olio voi kutsua toisessa virtuaalikoneessa sijaitsevan olion metodia. Virtuaalikoneet voivat sijaita vaikka fyysisesti eri koneissa. Selain Muodostaa tekstipohjaisesta syötteestä säännöllisten lausekkeiden avulla kielen syntaksin mukaisia terminaaleja. Servlet Tekniikka, jolla voidaan tehdä Java-sovellutuksia, jotka vastaavat HTTP-pyyntöihin interaktiivisesti muodostaen WWW-sivuja pyynnön mukana välitettyjen parametrien mukaan. Tomcat Palvelinohjelmisto, joka tarjoaa servleteille sopivan ajoympäristön. UML Taulukko 1: Termit ja niiden määritelmät. 2 Järjestelmän yleiskuvaus 2.1 Sovellusalueen kuvaus (Unified Modelling Language) Ohjelmistojen mallintamiseen käytettäviä kaaviotyyppejä määrittelevä kieli. Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisijana Lmodels pyrkii löytämään ratkaisun malliin annettujen rajoitteiden vallitessa. Mikäli ratkaisu on olemassa, niin käyttäjälle annetaan mahdollisimman tiukat rajat, joiden sisältä kaikki mahdolliset ratkaisut löytyvät, sekä yksi yksiselitteinen ratkaisu. 2.2 Järjestelmän liittyminen ympäristöönsä Lmodels-järjestelmä koostuu palvelinohjelmasta ja asiakasohjelmasta, jotka voivat toimia itsenäisenä kokonaisuutena. Palvelinohjelma toteutetaan kuitenkin itsenäisenä Javaohjelmana, joka ei ole sidottu tässä toteutuksessa tehtävään käyttöliittymään, vaan se tarjoaa RMI-rajapinnan ulkopuolisille ohjelmistoille, jotka näin voivat käyttää sen tarjoamaa palvelua. 2.3 Laitteistoympäristö Lmodelsin laitteistovaatimukset ovat lähes olemattomat. Tämän hetken standardeilla suorituskykyinen henkilökohtainen tietokone pystyy pyörittämään kehitettävää järjestelmää riittävällä teholla useamman yhtäaikaisen käyttäjän ympäristössä. Vasta todellinen tuotantokäyttö, jonka kohdalla puhutaan kymmenistä yhtäaikaisista käyttäjistä, vaatii järeän palvelinkoneen. 2.4 Ohjelmistoympäristö Järjestelmää varten tarvitaan Java-virtuaalikone ja GLPK-ratkaisija. Haluttaessa käyttää mukana tulevaa käyttöliittymää täytyy asentaa myös Tomcat-palvelinohjelmisto, koska käyttöliittymä toteutetaan Java-servletteinä. Java-kielestä käytetään versiota 1.4. Ohjelmisto ei aseta rajoituksia käyttöjärjestelmän suhteen, mutta projektiryhmän tarjoama 2

tuki toimii parhaiten Linux-alustalle, sillä kehitystyö tullaan tekemään pääasiallisesti sillä. 2.5 Toteutuksen keskeiset reunaehdot Ohjelmiston toteutuksessa käytetään vain ilmaisia, jos mahdollista Open Source, ohjelmistoja. Projektin dokumentit ovat suomenkielisiä, mutta itse ohjelmakoodi ja koodin kommentit ovat englanninkielisiä. Käyttöohje kirjoitetaan englanniksi. 3 Arkkitehtuurin kuvaus 3.1 Suunnitteluperiaatteet Järjestelmän toteutuskieli on Java useammastakin syystä, joista ensimmäinen on asiakkaan vaatimus. Lisäksi ryhmän jäsenet ovat tottuneet työskentelemään tällä kielellä, sitä tuetaan useassa ympäristössä, sille löytyy laajat valmiskirjastot sekä tämän projektin vaatimia kääntäjiin liittyviä työkaluja jäsentäjän automatisoituun tekemiseen. Järjestelmään liittyvä käyttöliittymä toteutetaan Java-servletteinä ja standardia HTMLkieltä käyttäen. Vaikka järjestelmässä on mukana käyttöliittymä, niin tällä kertaa suunnittelun painopiste ja sitä eteenpäin ajava voima on teknisellä puolella, sillä käyttöliittymä on tarkoitettu lähinnä testaamiseen. Pääkäyttö järjestelmälle tulee olemaan osana integroitua suurempaa järjestelmää, jolloin Lmodelsin käyttäjiä lienevät toiset ohjelmistojärjestelmät. Järjestelmä toteutetaan käyttäen oliopohjaista mallinnusta ja erilaisia UML-kaavioita eri osien mallintamiseen. 3.2 Ohjelmistoarkkitehtuuri Järjestelmä siis sisältää palvelimen ja asiakasohjelman. Kuvassa 1 on esitettynä arkkitehtuuri pääpiirteissään. Kuva 1: Arkkitehtuuri pääpiirteissään. 3

Asiakkaan aloittaessa istunnon ensiksi valitaan malli, jota halutaan käsitellä, sekä käsittelyssä käytettävä ratkaisija. Projektiryhmän toteutuksessa tullaan käyttämään ratkaisijana GLPK:ta, mutta arkkitehtuuriin jätetään mahdollisuus vaihtaa ratkaisija helposti, jolloin muitakin vaihtoehtoja voidaan tuoda esille käyttäjän valittavaksi. Palvelin käynnistää uuden linearisaattorin, joka kommunikoi tästä eteenpäin suoraan asiakasohjelman kanssa. 4 Moduulikuvaukset 4.1 Translaattori Translaattori toteuttaa määrittelemämme kielen jäsentäjän, joka osaa tehdä annetulla syötteellä määritetystä mallista jäsennyspuun ja supistaa tämän puun haluttaessa joko CNF- tai DNF-muotoon. JLex:n käyttämät säännölliset lausekkeet ja Cup:n käyttämä kielioppi on esitetty vaatimusmäärittelyn liitteessä A. Translator on yleinen apuluokka, sillä sitä käytetään mallin sieventämiseen ennen sen tallentamista sekä mallin ja annettujen rajojen supistamiseen CNF tai DNF -muotoon lähdettäessä etsimään ratkaisua tämänhetkiseen ongelmaan. Näin se on myös ensimmäisenä toteutettava osa järjestelmää. Translaattorille muodostettua lohkomallia voidaan verrata kääntäjään, kuten kuvasta 2 voidaan nähdä. Kuva 2: Translaattorin lohkokaavio. Sisään otettu kielen syöte jäsennetään ensiksi yllä mainituin työkaluin automaattisesti jäsentäjällä jäsennyspuuksi, minkä aikana syötteen syntaksi tarkastetaan. Puumuodossa olevalle mallille tehdään semanttinen analyysi, jonka aikana tarkastetaan, että muuttujiin sijoitetaan oikean muotoisia arvoja, lineaarisia ja loogisia operaattoreita, ja että muuttujia ei käytetä ristiin jne. Tämän jälkeen mallille suoritetaan normalisointi. Normaalimuotoinen uusi malli tallennetaan palvelimelle alkuperäisellä kielellä esitettynä. Lähdettäessä käsittelemään mallia se taas jäsennetään puumuotoon, jotta sitä voidaan muokata ratkaisua etsittäessä helpommin. Malli tulostetaan GLPK:n käyttämälle LP-kielelle ratkaisua varten. 4

4.2 Linearisaattori Linearisaattori käy vuoropuhelua asiakasohjelman kanssa saaden uusia arvoja muuttujille ja laskien ratkaisua mallille näiden annettujen rajojen vallitessa. Linearisaattori käyttää translaattoria saadakseen mallin puumuotoon. Linearisaattori käyttää ahkerasti ratkaisijaa, johon tulee muuttujien lukumäärästä riippuva määrä kutsuja jokaista ratkaisukierrosta kohden. Ensimmäiseksi selvitetään vapaille muuttujille kelvolliset rajat, tämän jälkeen kiinnitetyille muuttujille rajat, ja viimeiseksi tarkastetaan koko ratkaisun käypyys. 4.3 Ratkaisija Ratkaisija on suurimmaksi osaksi ulkoa tuleva komponentti, ja tämän projektin rajoissa ratkaisijan toteutus on Java-rajapinta tämän ulkopuolisen komponentin käyttöön. Ulkopuolisena komponenttina käytetään GLPK-nimistä lineaaristen rajoitteiden ratkaisijaa, joka on C-kielellä toteutettu kirjasto. 5 Hylätyt ratkaisut Tässä vaiheessa projektia on tehty vasta muutama tekniseen toteutukseen liittyvä päätös. Koko projektin kannalta on kahteen merkittävään asiaan otettu kantaa. 5.1 Kääntäjän tuottamistyökalut Ensimmäisenä asiana on translaattorin luomisessa apuna käytettävät kääntäjän tuottamistyökalut, joiksi päätettiin ottaa Cup ja JLex. Näiden vaihtoehtona oli kehittyneempi, myös Sunin tukema, Open Source -työkalu JavaCC, joka on sekä jäsentäjän että selaimen generoiva työkalu. Emme kuitenkaan valinneet tätä mentorimmekin suosittelemaa työkalua, vaan käytämme jäsentäjän generointiin Cup:ia ja selaimen generointiin JLex:iä, koska asiakkaamme oli vanhempien työkalujen puolella ja ryhmällä itsellään on kokemusta niiden käytöstä päinvastoin kuin JavaCC:n kohdalla. 5.2 Lineaarinen ratkaisija Toinen hylkäävä ratkaisu on tehty lineaarisen ratkaisijan kohdalla, sillä ratkaisijaksi oli GLPK:n lisäksi tarjolla Javalla toteutettu lp_solve. Vaikka tätä ratkaisua olisi voinut puolustaa toteutuskielen yhtenäisyydellä, niin hylkäämiseen johtaneet seikat veivät voiton. Vaikka lp_solve on toteutettu Javalla, niin se vaikutti tehdyn automaattisesti aikaisemmasta C-toteutuksesta. Myöskään sen ylläpidosta ei ollut minkäänlaisia takeita; sen toteuttamiseen käytetty Java-versiokin oli jo aika vanha. 5