MALLINNUS- JA MATERIAALILASKENTA- OHJELMISTON KEHITYS
|
|
- Markku Tikkanen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 MALLINNUS- JA MATERIAALILASKENTA- OHJELMISTON KEHITYS Oskari Suomalainen Opinnäytetyö Ammattikorkeakoulututkinto
2
3 SAVONIA-AMMATTIKORKEAKOULU OPINNÄYTETYÖ Koulutusala Tekniikan ja liikenteen ala Koulutusohjelma Tietotekniikan koulutusohjelma Työn tekijä(t) Oskari Suomalainen Työn nimi Mallinnus- ja materiaalilaskentaohjelmiston kehitys Päiväys Sivumäärä/Liitteet 40+1 Tiivistelmä Ohjaaja(t) Lehtori Jukka Kinnunen Toimeksiantaja/Yhteistyökumppani(t) Timo Toropainen Foster Wheeler Energia Oy Tiivistelmä Opinnäytetyön tavoitteena oli kehittää mallinnus- ja materiaalilaskentaohjelmistoa Foster Wheeler Energia Oy:lle. Ohjelmistoon oli tarkoitus luoda yksi uusi kiertopetikattilan painerungon komponentti. Kehitys aloitettiin tutustumalla PDMS -ympäristöön, jonka aliohjelmana mallinnus- ja mallinnuslaskentaohjelmisto tulisi toimimaan. Alussa tuli myös suunnittella kuinka uusi kattilakomponentti tulisi luoda ohjelmakoodiin. Varsinainen ohjelmisto luotiin Visual Studio 2005:llä käyttämällä C#-ohjelmointikieltä ja sitä ajettiin Aveva PDMS 12 version aliohjelmana mallintamiseen. Opinnäytetyön tuloksena mallinnus- ja materiaalilaskentaohjelmistoon on lisätty yksi uusi kiertopetikattilan komponentti. Komponentin mallinnus ja materiaalilaskenta saatiin tehtyä projektin alussa sovitulla tavalla. Avainsanat C#, PDMS, CFB, Convection Cage, Mallintaminen
4 SAVONIA UNIVERSITY OF APPLIED SCIENCES THESIS Field of Study Technology, Communication and Transport Degree Programme Degree Programme in Information Technology Author(s) Oskari Suomalainen Title of Thesis Development of Modeling and Material Calculation Software Date Pages/Appendices 40+1 Supervisor(s) Lecturer Jukka Kinnunen Project/Partners Timo Toropainen Foster Wheeler Energia Oy Abstract Abstract The goal of the thesis was to develop modeling and material calculations software for Foster Wheeler Energia Oy. The meaning was to create new component in the software for the pressure hull of circulating fluidized bed. The development was started by making oneself familiar with PDMS environment under which the modeling and material calculations software will be run. Also a plan how to create a new boiler component for the software was made. The software was made using Visual Studio 2005 with C# programming language and it was run under Aveva PDMS 12 as a sub program to model components. As a result of the thesis one component for the modeling and material calculations software was added. Modeling and material calculations of the component were as designed at the start of the project. Keywords C#, PDMS, CFB, Convection Cage, Modelling
5 ALKUSANAT Insinöörityö on tehty Foster Wheeler Energia Oy:lle Varkauden toimipisteeseen. Haluan kiittää insinöörityön ohjaajaa lehtori Jukka Kinnusta sekä Foster Wheeler Energia Oy:ltä Timo Toropaista, Ari Ojalaa, Mikko Pakarista ja muita projektissa olleita henkilöitä, neuvoista, avusta ja mahdollisuudesta tehdä insinöörityö Foster Wheeler Energia Oy:lle. Varkaudessa Oskari Suomalainen
6 SISÄLTÖ 6 ALKUSANAT... 5 SISÄLTÖ... 6 LYHENTEET JOHDANTO YRITYKSET Foster Wheeler Savonia ammattikorkeakoulu KIERTOPETIKATTILA Kiertopetikattilatekniikan etuja Toimintaperiaate TYÖVÄLINEET AVEVA PDMS Microsoft Visual Studio C# OHJELMOINTI ARKKITEHTUURIA JA RAJAPINNAT MVC -arkkitehtuuri Moduulien tehtävät ja sisältö Rajapinnat Ohjelmointityyli Olio-ohjelmointi Periytyminen Kapselointi Monimuotoisuus Rakenne Testaus ja dokumentointi MALLINNUS- JA MATERIAALILASKENTAOHJELMA Ulkoasu ja käyttöliittymä Toimintaperiaate Tiedon kulku Lisäelementit ja jatkokehitys CONVECTION CAGE D -Malli Käyttöliittymä ohjelmassa... 28
7 7.3 Ohjelmokoodin luomisesta Rakenne ja toiminta PDMS ohjelmakoodissa ONGELMAT JOHTOPÄÄTÖKSET LIITTEET Liite 1 Täydellinen UML:n mukainen luokkarakenne kuva ohjelmasta
8 LYHENTEET 8 API = Application Programming Interface. Rajapinta jonka avulla mahdollista käyttää muita ohjelmia ohjelmakoodissa CFB = Circulating Fluidized Bed. Kiertopetikattila Comos = Tuotteiden koko elinkaaren aikaiseen ylläpitoon ja suunnitteluun tarkoitettu hallintaohjelmisto. CSV = Comma Separated Value. Tiedostomuoto, jossa esimerkiksi taulukosta luettu tieto eritellään puolipisteillä yhdeksi merkki jonoksi. DSM = Design Standard Manual. FW:n käyttämä suunnitteluohjekokoelma. IDE = Integrated Development Environment. Ohjelmistoympäristö, minkä avulla ohjelmoija luo uusia ohjelmia. MVC = Model View Control. Ohjelmointiarkkitehtuuri PDMS = Plant Design Management System. Kattiloiden ja tehdas kokonaisuuksien mallinnusohjelma. UML = Unified Modelling Language. Mallinnuskieli, jolla pyritään kuvaamaan ohjelmien rakennetta
9 9 1 JOHDANTO Insinöörityö tehtiin Foster Wheeler Energia Oy:lle yhtenä osana isompaa TEKES:n rahoittamaa projektia. Insinöörityö tavoitteena oli kehittää mallinnusja materiaalilaskentaohjelmisto CFB-kattiloita eli kiertopetikattiloita varten Foster Wheeler Energia Oy:lle. Ohjelmiston tarkoitus olisi nopeuttaa kattilaprojektien tarjousvaiheen mallinnusta ja materiaalilaskentaa. Insinöörityöni lopullisena tavoitteena oli saada lisättyä mallinnus ja materiaalilaskenta yhdelle kattilakomponentille sekä muuten kehittää ohjelmistoa. Insinöörityö aloitettiin tutustumalla edellisen ohjelmoijan tekemään ohjelmapohjaan, jonka pohjalta kasattiin oma komponentti ohjelmaan. Insinöörityössä selitetään Foster Wheelerin toimintaa ja heidän kehittämää kiertopetikattilatekniikkaa. Pääpaino insinöörityössä on kuitenkin perehtyminen ohjelmakoodin luomiseen ja mitä työkaluja käytettiin ja miten sitä luotiin. Lopuksi on Convection Cage-komponentista tarkemmin, eli kuinka uusi komponentti lisättiin ohjelmaan ja kuinka se toimii.
10 2 YRITYKSET 10 Insinöörityö oli osa isompaa projektia, FWE NW projektia, joka tehtiin Foster Wheeler Energia Oy:lle Varkauden toimipisteeseen. Työnantajana toimi Savonia ammattikorkeakoulu Varkaudessa ja varsinainen työskentely tehtiin Foster Wheeler Energia Oy:llä. Yritykset toimivat yhteistyössä Tekesin rahoittamassa Digitaalinen tuoteprosessi -projektissa, jolla pyritään vahvistamaan yritysten kasvumahdollisuuksia ja kilpailukykyä. Projektin tarkoitus on digitalisoida nykyinen dokumenttikeskeinen hallinta luoden Foster Wheeler Energia Oy:lle digitaalisen tuotemallin, joka kattaisi koko laitosprojektin elinkaaren.[1] 2.1 Foster Wheeler Foster Wheeler perustettiin jo vuonna 1884, mutta vasta vuoden 1927 yritysfuusion jälkeen tunnettiin nykyisellä nimellä. Vuonna 2009 Foster Wheeler työllisti noin henkilöä 28 eri maassa ja liikevaihto oli yli viisi miljardia dollaria. Foster Wheeler Energia Oy on osa maailmanlaajuista Foster Wheeler AG -konsernia. Konserni muodostuu kahdesta osasta The Global Engineering & Construction (E&C) Groupista ja The Global Power Groupista. Kuva 1. The Global Power Groupin rakenne
11 11 Foster Wheeler Energia Oy:llä on toimipisteet Espoossa ja Varkaudessa. Yrityksellä on myös tytäryhtiöt Saksassa ja Ruotsissa. Yhteisesti niitä kutsutaan Foster Wheeler Energia Oy Groupiksi. FWEOY Group:llä työskentelee noin 500 henkilöä, joista suurin osa Suomessa ja liikevaihto vuonna 2007 oli yli 400 miljoonaa euroa. (Kuva 1) FWEOY Group on keskittynyt höyrykattiloiden suunnitteluun ja valmistamiseen. Yritys pyrkii kehittämään tehokkaita ja luontoa säästäviä ratkaisuja. Kiertopetikattila tekniikassa (CFB) FWEOY Group on maailman kärkeä tekniikassa noin 50% markkinaosuudella (2009). FWEOY Group tarjoaa myös muita tuotteita ja palveluita, kuten kuplapetikattiloita, kaasuttimia, jätelämpökattiloita, kattilalaitosten toimituksia sekä kunnossapitoa, huoltoa ja koulutusta. [2,3] 2.2 Savonia ammattikorkeakoulu Savonia ammattikorkeakoulu perustettiin 90-luvulla ja tunnettiin ennen vuotta 2004 nimellä Pohjois-Savon ammattikorkeakoulu. Tänä päivänä Savonia on yksi suurimmista ammattikorkeakouluista Suomessa. Savonia toimii viidessä kunnassa Pohjois-Savon alueella. Kunnat ovat Varkaus, Kuopio, Iisalmi, Kiuruvesi ja Lapinlahti, mutta vain kolmessa ensimmäisenä mainitussa on koulutusyksiköt. Koulutusaloja Savoniassa on tarjolla seitsemän ja siellä opiskelee noin 6000 opiskelijaa. [4] Savonian tarkoituksena oli tehdä projektissä yhteistyötä Foster Wheelerin kanssa. Savonian tehtävänä oli hoitaa projektin johtaminen ja työntekijöiden toimittaminen, Foster Wheelerin toimiessa työpaikkana ja asiantuntijana. Yhteistyön kautta Savonian tavoite olisi lisätä osaamistaan eri alueilla ja jatkossa käyttää uutta osaamista omissa palveluissaan ja siirtää sitä eteenpäin.
12 3 KIERTOPETIKATTILA 12 Foster Wheeler Energia Oy on ollut kehittämässä kiertopetikattilatekniikkaa alusta lähtien. Kiertopetikattilatekniikan kehitys alkoi 1960-luvulla Suomessa ja ensimmäinen energiaa tuottava kiertopetikattila valmistui vuonna Tänä päivänä on menossa kiertopetikattilatekniikan toinen sukupolvi ja uusia tekniikoita kehitetään parantamaan kattiloita kokoajan. Ensimmäinen toisen sukupolven kiertopetikattila valmistui vuonna (Kuva 2) Uusin tekniikka on ylikriittinen, joka parantaa hyötysuhdetta 5-10% ja sitä hyödynnettiin ensimmäisen kerran Kiertopetikattilat on pyritty kehittämään hyvällä hyötysuhteella verrattuna aikaisempiin teknologioihin. Kiertopetikattiloita tarjotaan 5 MW aina 800 MW asti ja teholtaan suurin valmistettu kattila on 460 MW. [5] Kuva 2. Kiertopetikattila
13 3.1 Kiertopetikattilatekniikan etuja 13 Kiertopetikattilatekniikalla on monia etuja, jotka ovat tehneet siitä yhden suosituimmista kattilatekniikoista. Yksi isoimmista eduista tänä päivänä on ympäristöystävällisyys. Tekniikan avulla on saatu vähennettyä NOx ja SOx eli typpi- ja rikkioksidipäästöjä merkittävästi verrattuna aikaisempiin teknologioihin. Tämän vuoksi kiertopetikattilatekniikka saavuttaa helposti nykyaikaiset tiukat päästövaatimukset. Myöskään ylimäärisiä ja monimutkaisia kemikaalien puhdistusjärjestelmiä ei tarvita. Kiertopetikattiloilla on erittäin korkea käytettävyysaste, yli 98%, joten ne ovat erittäin luotettavia. Kattilat voidaan räätälöidä juuri sopivaksi käyttötarkoitusta ja -paikkaa varten, kuitenkin säilyttäen yksinkertaisen rakenteen. Toinen isoimmista eduista on monipuolinen polttoaineen käyttö ja monen eri polttoaineen yhdenaikainen käyttäminen. Petimateriaalin suuri lämpökapasiteetti auttaa tasaamaan polttoaineen laatuheilahteluita ja mahdollistaa huonolaatuisten (esimerkiksi kosteiden ) polttoaineiden käytön. [5] Esimerkkejä käytettävistä polttoaineista: Hiili (kivihiili, ruskohiili, jätehiili) Öljy Puumateriaali (purkupuu, hake, puujäte) Maatalousjäte Turve Paperijäte Kaasu
14 3.2 Toimintaperiaate 14 Kiertopetikattilan toimintaperiaate on lyhyesti ja yksinkertaisesti selitettynä seuraavanlainen: Polttoaine (Fuel) syötetään noin C kattilaan, jossa se sekoittuu hiekkaan ja kalkkikiveen (Ruskea kerros). Hiekka toimii lämmöntasaajana ja kalkkikiveä käytetään sitomaan rikkiä. Ilmaa (Air) puhaltamalla pohjasta hiekka saadaan kiertämään kattilaa savukaasujen seassa. Hiekka erotetaan savukaasusta (Flue gas) syklonissa ja palautetaan takaisin tulipesään. (Kuva 3) Kuva 3. Toimintaperiaate
15 4 TYÖVÄLINEET 15 Pääasiallisina työvälineinä käytettiin Aveva PDMS -mallinnusohjelmaa ja Microsoft Visual Studiota, jossa ohjelmointikielenä toimi C#. Vähemmän käytössä oli Excel, jota suurimmaksi osaksi käytettiin ohjelmassa rajapinnan kautta. 4.1 AVEVA PDMS Avevan jo vuonna 1967 julkaisema tietokantapohjainen tehtaiden ja laitosten mallinnusohjelma, jota myös kutsutaan 3D CAD:ksi. PDMS tulee sanoista Plant Design Management System. Tietokantapohjaisuuden ansiosta ohjelmasta saa helposti esimerkiksi raportteja ja työpiirrustuksia mallinnetuista kuvista. PDMS on myös erittäin monipuolinen ja räätälöitävissä yrityksen käyttötarkoituksiin sopivaksi. [6] 4.2 Microsoft Visual Studio Visual Studio on Microsoftin kehittämä ohjelmointiympäristö (IDE). Se julkaistiin ensimmäisen kerran vuonna 1997 ja se tukee Visual Basic, C++, C# ja J# kieliä. Ohjelmalla voidaan kehittää konsoli-, graafisia käyttöliittymä- sekä verkkosovelluksia ja sovellukset toimivat kaikilla Windows -alustoilla C# C# on Microsoftin kehittämä ohjelmointikieli. Kielessä yhdistyy C++ tehokkuus ja Javan helppokäyttöisyys. Ensimmäinen versio julkaistiin vuonna 2002 ja uusin versio on vuonna 2010 julkaistu C# 4.0.
16 16 5 OHJELMOINTI ARKKITEHTUURIA JA RAJAPINNAT Teoriassa ohjelma oli tarkoitus tehdä MVC -arkkitehtuurin mukaan, jolloin vain viereiset moduulit kommunikoisivat keskenään. Kuitenkin käytännössä ohjelman moduulit sulautuivat osittain yhteen ja ohjelman muokkaaminen MVC -mallin mukaiseksi myöhemmin olisi ollut käytettävän ajan puitteissa vaikeaa. 5.1 MVC -arkkitehtuuri MVC -arkkitehtuuri on yksi ohjelmistoarkkitehtuurityyleistä ja johtaa juurensa norjalaisen Trygve Reenskaugin kehittämään malliin vuodelta MVC lyhennys tulee sanoista Model, View ja Controller eli suomeksi malli, näkymä ja ohjain. Käytännössä tarkoittaa ohjelman jakamista kolmeen erilliseen moduuliin. Materiaalilaskentaohjelmassa lisättiin myös Database eli tietokantamoduuli. Kuvassa 4 on esitetty perinteinen MVC-malli. Kuva 4. Perinteinen MVC -malli Jako moduuleihin tuo isoimmissa graafisissa ohjelmissa paljon hyötyjä pidemmällä aika välillä. Muutoksien tekeminen ja testaaminen ohjelmakoodiin helpottuu huomattavasti, kun moduulit ovat toisistaan riippumattomia. Kun tekee muutoksen esimerkiksi malliin ei tarvitse miettiä tarvitseeko ohjaimessa tai näkymässä käydä myös tekemässä muutoksia suorien riippuvuuksien puuttuessa. Malli suunnitellaan itsenäiseksi ja täten ei ole riippuvainen näkymästä tai ohjaimesta, joten se voidaan testata myös itsenäisenä.
17 17 Ohjelmaan on tällöin mahdollista suunnitella useampia käyttöliittymiä, esimerkiksi normaali graafinen Windows -ohjelma ja web -käyttöliittymä ja ohjaimia tekemättä muutoksia malliin. MVC -arkkitehtuurin haittapuolina voidaan mainita ohjelmakoodin lisääntynyt monimutkaisuus. Suuret muutokset mallin rajapintaan, jota näkymä ja ohjain käyttävät, vaativat muutoksia myös ohjaimen ja näkymän ohjelmakoodiin. Haittapuolena voidaa myös mainita ohjaimen ja näkymän vaikea tarkka erottaminen käytännössä. [7] Moduulien tehtävät ja sisältö MVC -arkkitehtuuri toimii tavallisesti seuraavasti (Kuva 5): Käyttäjä luo tapahtumia esimerkiksi painamalla nappia käyttöliittymästä. Ohjain käsittelee kyseiset tapahtumat muuttamalla ne mallin ymmärtämään muotoon ja lähettää tapahtumat mallille. Malli vaihtaa tietoa tarpeen mukaan tietokannan kanssa ja lähettää tiedot näkymälle. Näkymä päivittää tarvittavat tiedot ja näyttää ne käyttäjälle ja kierto voi alkaa uudestaan. Kuva 5. MVC -malli käytännössä Malli sisältää ohjelman keskeisen datan ja funktiot. Myös suurin osa ohjelmakoodista tulee tavallisesti malliin. Näkymässä on ulkoasuun liittyvät ohjelmakoodin osat ja ohjaimessa tiedonvälitykseen ja -kääntämiseen tarvittavat osat. Tietokantamoduuli sisältää PDMS ja Excel -rajapintojen ohjelmakoodit.
18 18 Kuten aikaisemmin mainittiin, ei materiaalilaskentaohjelmassa noudatettu puhtaasti MVC -arkkitehtuuria, joten moduulit sulautuivat osittain yhteen. Tähän vaikutti osittain eri ohjelmoijien tyylit tuottaa ohjelmakoodia sekä ohjelmakoodin osittainen sekavuus. Ohjain on melkein kokonaan näkymän sisällä ja pieni osa ohjaimesta on sulautunut malliin. Ohjain tekee myös suoria kutsuja tietokantamoduuliin. 5.2 Rajapinnat Rajapinta eli API (Application Programmin Interface) on käsite, joka kuvaa esimerkiksi ohjelman vuorovaikutusta funktioilla toisen ohjelman komponenttien kanssa. Rajapinnan käyttö siis mahdollistaa ulkopuolisten ohjelmien osittaisen käytön varsinaisen ohjelman sisällä. Rajapinnasta riippuen kommunikointi tapahtuu esimerkiksi funktioiden, luokkien tai protokollien välityksellä. [8] Ohjelmassa käytettiin PDMS ja Excel -ohjelmistojen rajapintoja tiedon välitykseen. Excel-rajapintaa käytettiin ohjelmassa komponenttien tiedon lukemiseen ja tietojen kirjoittamiseen Excelistä. PDMS -rajapinnan kautta käytiin hakemassa tietoa PDMS:n tietokannoista ja tarvittaessa vietiin tietoa PDMS:ään. Kaikki mallintaminen ja osien luonti PDMS -projektipuuhun hoidettiin PDMS-rajanpinnan kautta osittain monimutkaisilla funktioilla. PDMS -rajapinnan kautta kutsuttiin myös PDMS:n sisäisiä makrofunktioita. 5.3 Ohjelmointityyli Ohjelmakoodi pyrittiin luomaan selkeästi ymmärrettäväksi ja helposti muokattavaksi uusien elementtien lisäystä varten. Muuttujat, funktiot ja luokat pyrittiin nimeämään samalla tavalla ja kuvaavasti joka paikassa, jolloin saadaan helpommin selville minkälainen muuttuja, funktio tai luokka on kyseessä ja mihin se liittyy ohjelmassa. Esimerkiksi static muuttujat kirjoitettin kokonaan isoilla kirjaimilla ja kaikkiin Convection Cageen liittyviin oli lisätty "CC" (buildcc.cs). Myös ohjelmakoodin kommentointi pyrittiin luomaan tarpeeksi yksinkertaiseksi, mutta kuitenkin riittävän tarkaksi, jolloin muut pääsisivät helpommin ohjelmakoodiin sisälle.
19 Olio-ohjelmointi Olio-ohjelmoinnin tavoitteena on käyttää reaalimaailmaa mallina ohjelmoidessa. Tämä mahdollistaa esimerkiksi UML -mallinnuksen hyväksikäyttämisen olio-ohjelmoinnissa. Aikaisemmassa suositussa ohjelmointilähestymistavassa, proseduaalisessa ohjelmoinnissa, ohjelma sisälsi listan ohjeita, miten ohjelma toimi. Olio-ohjelmoinnissa ohjelma muodostuu olioista (object), jotka toimivat yhteistyössä toisten olioiden kanssa. Yksittäinen olio on käytännössä pieni kone, joka sisältää siihen liittyvää tietoa ja toiminnallisuutta. Olio -käsite ohjelmoitaessa helpottaa ohjelmakoodin käsittelyä ja luontia, kun asiat voidaan ajatella kokonaisuuksina, joissa kaikki niihin liittyvä on samassa paikassa. [9] Olio-ohjelmoinnin periaatteiden mukaan tehty ohjelmakoodi on selkeämmin ymmärrettävää ja helpommin laajennettavissa kuin esimerkiksi perinteinen prosedulaalinen ohjelmakoodi. Pienissä yksinkertaisissa ohjelmissa olioohjelmoinnin käyttö on yleensä työlästä, joten sitä ei välttämättä kannata käyttää silloin. Olio-ohjelmointiin perustuvan ohjelman rakenne on työlästä rakentaa puhtaalta pyödältä, mutta kun runko on valmis, nopeutuu ohjelmointi paljon Periytyminen Periytyminen jaetaa kahteen osaan, yliluokkaan (super class tai baseclass) ja aliluokkaan (sub class tai derived class). Aliluokka on yliluokasta johdettu uusi luokka ja aliluokka voi periä monia yliluokkia. Aliluokka perii kaikki yliluokan attribuutit ja rajapinnat. Yliluokan ominaisuuksia on mahdollista ylikirjoittaa ja aliluokkaan voi lisätä uusia attribuutteja ja omia rajapintoja. Periytyminen voidaan tehdä kahdella eri tapaa joko yksinperiytymisellä tai moniperiytymisellä. Yksinperiytymisellä tarkoitetaan, että yhdestä yliluokasta periytyy vain yksi aliluokka. Moniperiytymisessä yliluokalla voi taas olla monta aliluokkaa. Molemmilla tavoilla saadaan aikaan luokkahierarkia. Periyttämisellä vähennetään turhan ohjelmakoodin toistoa ja periytymisen avulla on helppo laajentaa jo olemassa olevaa ohjelmaa.
20 5.3.3 Kapselointi 20 Kapseloinnilla voidaan tarkoittaa olio-ohjelmoinnissa kahta asiaa: tiedon ja funktioiden yhteensitomista oliossa tai tiedon piilotusta. Kapseloinnilla voidaan estää suora viittaaminen olion muuttujiin ja funktioihin. Tämän avulla voidaan vaikuttaa tapaan, millä olio käsittelee ja tallentaa tietoa olion rajapintaan vaikuttamatta. Tiedon piilotukseen käytetään suojaumääreitä. Käytetyimpiä suojamääreitä ovat public (julkinen), private (piilotettu) ja protected (suojattu). Public näkyy koko ohjelmassa, private näkyy vain luokan sisällä ja protected näkyy luokan sisällä ja aliluokissa. Piilotetun tiedon lukeminen ja tallentaminen olion ulkopuolelta tehdään yleensä niin sanottuja Get ja Set -funktioita käyttäen. Yleensä piilotetaan funktioita ja muuttujia, joita ei käytetä tai saa käyttää luokan ulkopuolella. Julkisilla funktioilla muodostetaan yhteys, jonka avulla oliota voidaan käyttää suunnitellulla tavalla. Suojattuja muuttujia ja funktioita käytetään, kun niitä tarvitaan olion ulkopuolella ja niitä ei saa muuttaa Monimuotoisuus Monimuotoisuudella eli polymorfismilla tarkoitetaan olion tilanteesta riippuvaa käyttäytymistä ja se on luonnollista seurausta olioden periytymisestä, viestinvälityksestä ja korvaavuudesta. Se siis tarkoittaa, että yksi funktio voi suorittaa erinlaisia tehtäviä. Tärkeimpiä asioita monimuotoisuudessa ovat funktioiden kuormitus ja uudelleen määrittely eli ylikirjoitus. Kuormituksella tarkoitetaan samannimisten funktioiden luomista olioon, mutta funktiolle menee eri argumentit, joiden avulla pystyy erottamaan funktioiden käytön. Ylikirjoitus viittaa taas ali- ja yliluokassa oleviin samannimisiin funktioihin. Aliluokassa voidaan tehdä ylikirjoitus samannimiselle funktiolle, jolloin se korvaa yliluokassa olevan toteutuksen, mutta argumenttien on oltava samoja molemmissa. Ylikirjoituksella voidaan myös tarkentaa yliluokan funktioita, jolloin aliluokassa oleva funktio ei korvaa vaan täydentää yliluokan funktioita. Ylikirjoittamisen ongelmana voidaan tosin nähdä ylikirjoituksen
21 21 vapaus ohjelmoitaessa, jolloin uusi funktio ei välttämättä vastaa toiminnaltaan täysin ylikirjoitettua funktiota. 5.4 Rakenne Ohjelmointia on pyritty ajattelemaan moduulisesti eli tekemään yhtenevistä luokista samantyyliisiä. Esimerkiksi kaikki PDMS -toimintaan liittyvien luokkien nimessä on "PDMS" -liite. Alla olevassa kuvassa on esitelty ohjelman rakenne yksinkertaistettuna yleisellä tasolla. Nuolet kuvassa 6 kuvaavat, kuinka ohjelman pääluokat liittyvät toisiinsa. Kuva 6. Ohjelman päärakennekuva Ohjelma jakautuu kolmeen päämoduulitasoon. Form on näkymätaso eli käyttöliittymään liittyvät ohjelmakoodit. Component -taso taas pitää sisällään varsinaiset kattilakomponentit ja sen alle myös lisätään projektin edetessä muut komponentit. Alin taso eli Element taso on yksittäisten elementtien rakentamista varten, sisältää esimerkiksi putkien, kammioiden ja teräsrakenteiden rakennusta vastaavat ohjelmakoodin osat. Muita tasoja ohjelmakoodissa on rajapinnat, kuvassa vasemmalla puolella olevat Excel- ja PDMS -luokat ja kokoelmat sekä oikealla puolella kuvassa 6 olevat Parameters ja DimensionValues. Jokainen päätaso käyttää rajapintoja suoraan jollain tavalla ohjelmaa ajaessa, mutta vain Form ja Component - tasot käyttävät kokoelmia suoraan.
22 Testaus ja dokumentointi Dokumentointi hoidettiin kahdella tavalla: lisäämällä suoraan koodiin sopivan tarkat selitykset jokaisesta tarpeellisesta funktiosta, oliosta ja muuttujasta ja kirjoittamalla yleisesti toiminnasta ja rakenteesta Word -dokumentti. Myös käyttöohje luotiin ohjelmaa varten. Käyttöohjeen piti olla sopivan tarkka, että ohjelmaa aikaisemmin käyttämätön ja ohjelmoinnista tietämätön pystyi käyttämään ohjelmaa. Käyttöohjeeseen tuli myös jokainen eri variaatio komponenteista, joita ohjelmalla pystyi mallintamaan. Ohjelman testaus hoidettiin pääasiallisesti manuaalisesti kokeilemalla eri arvoja ja toimintoja normaaleissa käyttötapauksissa ja myös tarkoituksellisesti vääränlaisesti, jotta ohjelma saataisiin kaatumaan. Ohjelmakoodin funktioille tehtiin myös erillisiä testiluokkia, joiden avulla pystyi pelkästään testaamaan ohjelman sisäisten funktioiden toimintaa. Funktion toiminta ei kuitenkaan tarkoittanut suoraan, että ohjelma toimisi oikein PDMS:n alla, joten niiden käyttö jäi vähemmälle.
23 23 6 MALLINNUS- JA MATERIAALILASKENTAOHJELMA Ohjelma on suunniteltu nopeuttamaan Foster Wheeler Energia Oy:n tarjousvaiheen mallinnusta ja materiaalilaskuja, mutta ohjelmaa voidaan myös hyödyntää projektivaiheessa. Ohjelmaa ajetaan PDMS:n kautta aliohjelmana. 6.1 Ulkoasu ja käyttöliittymä Käyttöliittymä pyrittiin pitämään ohjelmassa selkeänä ja yksinkertaisena. Kuva 7. Käyttöliittymä Käyttöliittymä (Kuva 7) on jaettu kahteen osaan. Ylempi osa pitää sisällään mallinnettavat kattilakomponentit. Alempi osa taas on materiaalimäärälaskuja ja niiden ulos vientiä CSV -tiedostona.
24 6.1.1 Toimintaperiaate 24 Ohjelman käyttö aloitetaan valitsemalla listasta (1) mallinnettava komponentti. Komponentin tiedot ladataan ylempään taulukkoon (2) PDMS-tietokannasta ja Excelistä. Mikäli taulukon (2) arvoja on tarpeellista muuttaa tai manuaalisesti lisätä puuttuvia arvoja, tehdään se "User Value" valinnan avulla. Taulukon (2) alapuolelta valitaan mallinnettavan komponentin variaatiot (3). "Confirm"- painikkeesta (4) ohjelma tarkistaa taulukossa (2) olevat tiedot ja värikoodaa arvot. Oranssi tarkoittaa arvon muuttamista Excelin kautta DSM-ohjeiden mukaiseksi, punainen solu kertoo arvon olevan virheellinen, ja vihreä solu, kun arvo on normaali. Komponentin mallinnus tapahtuu "Build" -painikkeesta (5), jolloin ohjelma mallintaa PDMS:ään annettujen tietojen mukaisen komponentin. (Kuva 7) Tarpeen vaatiessa mallinnuksen jälkeen voidaan laskea materiaalimäärät alaosan taulukkoon "MTO List" -painikkeen (6) avulla. "Export CSV" -painike (7) vie materiaalimäärät ohjelmasta CSV -tiedostona. (Kuva 7) 6.2 Tiedon kulku Päätietolähteinä ohjelma käyttää Excelissä ja PDMS -tietokannassa olevaa tietoa. Excelissä oleva tieto on luotu DSM -ohjeiden ja yleisien mallinnussääntöjen mukaan manuaalisesti ja siellä olevaa tietoa käytetään harvemmin muuttumattomien tietojen lukemiseen. PDMS-tietokannassa on projektikohtaista tietoa, joka tuodaan tarpeen vaatiessa Comos -ohjelmasta. Amigo - laskentaohjelmisto tuottaa tietoa Comosiin kattilakomponenteille. Ohjelmasta pystyy mallinnuksen jälkeen tuottamaan materiaalimäärät CSV-tiedostona, jota voi käyttää muihin tarkoituksiin. Kuva 8 esittää tiedon kulun ohjelmaan. Kuva 8. Tiedon kulku ohjelmaan
25 6.3 Lisäelementit ja jatkokehitys 25 Materiaalilaskentaohjelmaa kehitetään osissa käyttäen eri ohjelmoijaa joka elementissä. Jatkokehityksen kannalta on siis tärkeää, että omasta ohjelmakoodista tulisi sopivan selkeää ja yhdenmukaista aikaisemman ohjelmakoodin kanssa. Se tulee auttamaan seuraava ohjelmoijaa, joka pääsee helpommin sisälle koodiin ja pystyy korjaamaan ja käyttämään samoja ohjelmakoodin osia. Näin pystytään helposti vähentämään turhaa ohjelmakoodin toistamista. Osa luokista tuli myös suunnitella tavalla, jotta niitä pystyisi käyttämään monissa eri kiertopetikattilan elementtien mallinnuksessa ja tiettyjä osakokonaisuuksia pyrittiin myös suunnittelemaan yksinkertaisiksi ja monipuolisiksi laajempaa käyttöä varten eikä vain yhden komponentin kanssa.
26 7 CONVECTION CAGE 26 Convection Cage on yksi komponentti kiertopetikattilassa ja sijaitsee kattilalaitoksen takavedossa savukaasuvirrassa tulipesän ja erottimen jälkeen. Mallinuksen kannalta muita pääosia kiertopetikattilassa ovat: tulipesä eli furnace, erotin eli separator, tulistimet ja esilämmittimet. Convection Cage on käytännössä iso konvektiopinta, joka on muodoltaan suorakulmaisen häkin kaltainen. Convection Cage muodostuu eväputkiseinämistä ja sen sisällä virtaa savukaasu. Convection Cagen sisälle sijoitetaan yleensä tulistimet ja mahdollisesti reheaterit ja esilämmittimet. Näiden ja eväputkiseinämien tarkoitus on siirtää lämpöä savukaasusta, jotta mahdollisimman suuri osa lämmöstä saadaan talteen ja savukaasun lämpötilaa alennettua. (Kuva 9) Tulipesä Erotin Convection Cage Tulistimet Esilämmitin Kuva 9. Convection Cagem sijainti kattilassa
27 7.1 3D -Malli 27 Convection Cagen 3D -malli luodaan ohjelman kautta PDMS:ään. Convection Cagea ei mallinneta täydellisesti, koska materiaalilaskentaohjelma on tarkoitettu pääasiassa tarjousvaiheeseen. Tarkoituksena on mallintaa vain materiaalien puolesta riittävästi, jotta tarvittavat materiaalimäärät voidaan näin laskea tarjousta varten nopeammin kuin manuaalisesti mallintamalla. Lisäksi tulee huomioida layout suunnittelun tarpeet. (Kuva 10) Kuva 10. Convection Cage 3D-malli
28 28 Mallinnustarkkuus ja tarvittavat variaatiot käytiin muun projektiryhmän kanssa läpi kokouksissa valiten yleisin mallipohja aikaisemmista projekteista. Projektin alussa oli tarkoitus vain mallintaa yksi variaatio ja yksinkertainen malli Convection Cagesta. Projektin edetessä mallia tarkennettiin ajan antaessa periksi lisäosilla ja variaatioita lisättiin. Eri variaatiot eivät paljon muuttaneet mallia Convection Cagen tapauksessa, koska se on rakenteeltaan kohtuullisen yksinkertainen kattilakomponentti. 3D-malli muodostuu neljästä eri pääosasta ja lisäosista tarpeen mukaan. Neljä pääosaa ovat etuseinämä ja siinä oleva aukko, identtiset sivuseinämät ja takaseinämä joka käsittää myös katto-osan. Lisäosiana yllä olevassa kuvassa on Convection Cagen takana ja edessä olevat kannatusputket. Jokainen seinämä puolestaan rakentuu kolmesta elementissä, joiden avulla ne mallinnetaan. Nämä osat ovat putket, kammiot ja putkien välissä sijaitsevat evät, jotka mallinnettiin yhtenäisenä levynä mallin keventämisen vuoksi. Kammioihin mallinnettiin myös tarkastus- ja yhdysputkiyhteet tarpeen mukaan. Seinämiin mallinnetaan yleensä vain kaksi putkea reinoihin kuvaamaan kuinka putket tulisivat malliin, koska kaikkien putkien mallintaminen olisi hidasta ja raskasta käsitellä eikä varsinaisesti tuo lisähyötyä. 7.2 Käyttöliittymä ohjelmassa Convection Cage välilehti näyttää hyvin samanlaiselta kuin muidenkin komponenttien välilehdet. Pääasialliset erot löytyvät kohdassa 3 olevista valinnoista. Convection Cagen mallintaminen aloitetaan valitsemalla kohdasta yksi sopiva projekti. Ohjelma lataa kohdassa kaksi olevaan taulukkoon tarpeelliset tiedot Convection Cagen mallintamiseen. Taulukossa näkyy tietojen nimet, mahdolliset haetut arvot, käsinsyötetty arvo ja yksikkö arvolle. Kohdassa kolme voi valita lisäosia ja variaatioita mitä malliin haluaa, esimerkiksi kantoputket, vahvistettu paneeliosa, nuohoinluukku ja miesluukku. Confirmpainike käy läpi arvot ja tarkistaa että arvot ovat oikeinlaisia mallintamista varten. Build-painike mallintaa Convection Cagen PDMS:ään annettujen
29 29 tietojen perusteella. Alempaan taulukkoon saa materiaalimäärät Convection Cage -komponentille MTO List-painikkeella. Taulukossa näkyy tämän jälkeen kaikki tarvittava tieto jokaisesta materiaalimäärän suhteen merkkittävästä osasta komponentissa. Export CSV-painike vie taulukon arvot ulos ohjelmasta. (Kuva 11) Kuva 11. Convection Cage välilehti 7.3 Ohjelmokoodin luomisesta Ohjelmakoodi on pyritty tekemään yhdenmukaisesti edellisen komponentin kanssa, mutta kuitenkin yritetty kiinnittää huomioita kuinka parantaa ohjelmakoodin toimivuutta ja selkeyttä. Tarkoitus oli luoda ohjelmakoodi sopivan väljästi mahdollisten myöhempien lisäyksien vuoksi. Komponentin ohjelmointi aloitettiin hyvin karkeasti perusrungosta, jotta saatiin testattua
30 30 kaikkien uusien luokkien toimivuus ohjelmassa. Eli painiketta painamalla ohjelmassa mallintui yksinkertainen elementti PDMS:ään. Uudet luokat luotiin pääasiassa ottaen mallia edellisen komponentin vastaavista pyrkien yhdenmukaisuuteen. Hyötynä tässä oli, että huomasi helpommin, mitkä osat ohjelmakoodista mahdolisesti pystyisi yhdistämään, jolloin turhan ohjelmakoodin määrä vähenisi. Ohjelmakoodia lähdettiin laajentamaan käytännössä keskeltä eli mallinrakennuksesta. Mallinrakennus irroitettiin ohjelmakokonaisuudesta ja käsiteltiin omana yksinäisenä asiana, jolloin sitä oli helpompi jaotella ja ohjelmoida. Mallinrakennuksen ohjelmakoodin luontiin käytettiin iterointia. Ensimmäisellä iterointikierroksella luotiin ohjelmakoodi, joka mallinti perusversion komponentista ohjelmakoodin siisteyden ja toimivuuden jäädessä osittain taka-alalle. Seuraavilla iterointikierroksilla pääkohteena oli ohjelmakoodin siistiminen ja yhdistäminen paremmaksi kokonaisuudeksi. Convection Cagen ohjelmakoodi kävi läpi yhteensä noin kolme täydellistä muodollista muutosta projektin aikana. Loppuvaiheessa kuitenkaan rakenteellisia muutoksia ei tarvinnut paljoa tehdä, koska runko oli jo hyvin tehty. Näin uudet lisäykset ja muutokset oli helpompi ja yksinkertaisempi toteuttaa. Tähän ohjelmointitapaan päädyttiin, koska kaikki informaatio kuinka malli tulisi luoda kokonaisuudessaan ei ollut suoraan projektin alussa käsillä ja malliin tuli muutoksia ja lisäyksiä projektin edetessä useasti. Ohjelmointitapa toimi mallinrakennusohjelmakoodissa hyvin, mutta muut lisäykset ja muutokset tehtiin kuitenkin normaalisti kerralla valmiiksi ja harvemmin palattiin tekemään rakenteellisia muutoksia. Projektin edetessä taka-alalla oli kuitenkin aina ajatus kuinka parantaa muuta ohjelmakoodia, vaikka ei suoraan olisi muokkaamassa juuri käytettävää ohjelmakoodia Rakenne ja toiminta Ensimmäinen suunnitelma ohjelmakoodin rungon rakenteesta otettiin suoraan edellisestä komponentista. Samantien tuli kuitenkin ilmi rakenteita, joita pystyi yhdistämään komponenttien kesken yksinkertaistaen rakennetta. Jokaista
31 31 rakennetta ei kuitenkaan pystynyt täydellisesti yhdistämään pienten erojen tai muun rakenteellisen seikan vuoksi. Alla olevasta UML -luokkarakenne kuvasta näkyy kuinka ohjelma rakentuu Convection Cage -komponentin osalta ja mitenkä eri luokat riippuvat ja periytyvät toisistaan. Normaalit nuolet kuvastavat periytymistä ja erinlaiset nuolet assosiaatioita luokkien välillä. (Kuva 12) Kuva 12. Convection Cage UML luokkarakenne Form ja frmmto-luokka hoitavat kaiken ohjelman näkymään liittyvän tiedonkäsittelyn. Convection Cage-luokka on Convection Cage komponentin pääluokka jossa keskitetysti tapahtuu kaikki siihen liittyvä varsinainen tiedonkäsittely. Convection Cage-luokka periytyy Component-luokasta, jonka kautta se saa käyttöönsä Parameters- ja DimensionValues-kokoelmat. DimensionValues-kokoelma pitää sisällään Convection Cagen mallintamiseen liittyvät staattiset pääarvot, jotka tulevat suoraan PDMS:stä. Parameterskokoelma taas pitää sisällään kaikki DimensionValues-kokoelmassa esiintyvät ja muut yleiset arvot, joita ohjelma käyttää suoraan tai välillisesti komponentin mallintamiseen. ExcelInterface-luokka toimii rajapintana Exceliin, josta Convection Cageluokka ja frmmto-luokka käyvät lukemassa mallinnuksen sääntöjä ja tarkennus tietoja. Convection Cage-luokka myös vie tietoa Exceliin
32 32 mallinnuksen yhteydessä materiaalilaskuja varten. PDMSControl-luokka on taas varsinainen rajapintaluokka PDMS-ohjelmaa varten. Sitä ei käytetä ohjelmassa suoraan vaan pelkästään kutsutaan sen funktioita. Convection Cagen päämallinnus luokka on TubeWall-luokka. Se pitää sisällään kaiken tarvittavan ohjelmakoodin Convection Cagen mallintamiseen eli käytännössä muutamia funktioita, joita yhdistämällä saadaan kokonainen komponentti kattilaan. Luokkaa on myös mahdollista jatkokäyttää muiden vastaavien komponenttien mallintamiseen mitkä ovat rakenteeltaan samanlaisia kuin Convection Cage. TubeWall-luokassa yksittäiset PDMS elementit yhdistetään sopivaksi kokonaisuudeksi, joka mallintaa ohjelmassa Convection Cagen. Luokka käyttää tähän PDMS -lisänimen omaavia luokkia, jotka vastaavat samoja elementtejä kuin mitä ne ovat varsinaisessa PDMSohjelmassa PDMS ohjelmakoodissa PDMS:ää käytettiin ohjelmakoodissa melkein samalla tavalla kuin normaali PDMS -käyttäjä käyttäisi sitä "command line" toiminnon kautta PDMS:ssä. Eli käytännössä tarkoittaa sitä, että jokainen elementti ja attribuutin sijoitukset pitää tehdä yksittäisillä käskyillä. Ohjelmakoodissa tämä hoidettiin kokoamalla tarvittavat elementit ja niiden käyttämiseen tarvittavat attribuutit omiin luokkiinsa. Nämä luokat toimivat jokaisen komponentin mallinnuksen pohjana. PDMS hierarkia rakentuu World -tason alle. World -tason alla ensimmäisenä on Site -taso, joka käytännössä tarkoittaa erillistä komponenttia tai muuta laitetta, joka on mallinnettu. Site -tason sisällä komponentti tai laite jaetaan sopiviin mallinnettaviin osiin eli Zone -tasoihin. Zone -tasojen alla on varsinaiset mallinnus elementit, jotka jakautuvat pipeihin, equipmentteihin ja structureihin. Pipe -taso pitää sisällään kaikki putkien mallintamiseen liittyvät osat. Equipment -tason alla on taas normaalit geometriset muodot, kuten lieriöt, suorakulmiot, kartiot ja puolipallot. Näiden avulla voidaan mallintaa esimerkiksi koteloita, kammioita, säiliöitä ja suuttimia. Structure -tason alle sisältyy kaikki teräsrakenteet esimerkiksi paneelit ja palkit.
33 33 Pääelementti luokkia ovat TubePDMS, HeaderPDMS ja PanelPDMS. TubePDMS -luokkaa käytetään pipe elementtien tekemiseen. Pipe elementti koostuu kolmesta tasosta PDMS hierarkiassa. Pipe -tasosta, joka on ylin taso, Bran -tasosta ja alimmasta Bend -tasosta. Pipe pitää sisällään kasan Branch nimisiä elementtejä, jotka voidaan mieltää yksittäisiksi putkiksi, joilla on alkuja loppupisteet. Jokaisella Branch -elementillä voi olla yksi tai useampia Bend -elementtejä, jotka mallintavat kyseiseen Branch -elementtiin mutkia halutuilla kulmilla ja suunnilla. Pipe -elementin luonti ohjelmassa on yksinkertaista, se tarvitsee vain Zone -elementin minkä alle se luodaan, nimen ja specificationin. zone = FindElement(Aveva.Pdms.Database.DbType.Design, Name); pipe = zone.createlast(dbelementtype.getelementtype("pipe")); pipe.setattribute(dbattributeinstance.pspe,getelement(specification)); pipe.setattribute(dbattributeinstance.purp, "PIPE"); Yllä olevalla ohjelmakoodin pätkällä luodaan siis uusi Pipe -elementti halutun Zonen alle. Branch -elementin luominen on monimutkaisempaa, mutta se on ohjelmassa luotu niin että sen käyttö on yksinkertaista. bran = pipe.create(brancounter, DbElementType.GetElementType("BRANCH")); bran.setattribute(dbattributeinstance.name,pipename); bran.setattribute(dbattributeinstance.pspe, DbElment.GetElement(Spec)); bran.setattribute(dbattributeinstance.hstu, DbElment.GetElement(Spec)); bran.setattribute(dbattributeinstance.hpos, Position (Xpos, Ypos, Zpos)); bran.setattribute(dbattributeinstance.hdir, Direction.Create(branHeadDir)); bran.setattribute(dbattributeinstance.hbor,units.bore.createbore(). bran.setattribute(dbattributeinstance.lhea, true); bran.setattribute(dbattributeinstance.hcon, "OPEN"); bran.setattribute(dbattributeinstance.tpos,, Position (Xpos, Ypos, Zpos)); bran.setattribute(dbattributeinstance.tdir, Direction.(direction)); bran.setattribute(dbattributeinstance.tbor, Units.Bore.CreateBore() bran.setattribute(dbattributeinstance.ltai, true); bran.setattribute(dbattributeinstance.tcon, "OPEN"); Branch -elementti tarvitsee paljon enemmän attribuutteja, jotta se mallintuu PDMS:ään. Muutamia mainittavia ovat nimi, alku- ja loppupisteet, koko ja specificationit. Bend -elementit tarvitsevat melkein yhtä paljon attribuutteja kuin Branch -elementit.
34 34 Equipment -tason alla on vielä SubEquipment -taso, joka vastaa Equipment - tasoa, mutta yksi taso syvemmällä hierarkiassa. Equipment -tason alla käytettiin esimerkiksi Dish-, Cone-, Box- ja Cylinder -elementtejä, jotka vastaavat mallissa nimiä kuvaavia geometrisiä muotoja. Näiden elementtien luominen ohjelmakoodissa oli yksinkertaisempaa kuin putkien. Esimerkiksi Cylinder -elementti luotiin seuraavanlaisella ohjelmakoodilla: cyl = equi.create(position, ElementType("CYLINDER")); cyl.setattribute(dbattributeinstance.pos,.position(xpos, ypos, zpos)); cyl.setattribute(dbattributeinstance.heig, height) cyl.setattribute(dbattributeinstance.diam, diameter); cyl.setattribute(dbattributeinstance.ori, Orientation(orientation)); Cylinder -elementti tarvitsee vain paikan, korkeuden, paksuuden ja suunnan. Muut Equipment -tason alla olevat elementit rakentuvat ohjelmakoodissa vastaavalla tavalla. Structure -tasoa käytettiin ohjelmassa vain Panel -elementtien tekoon, jotka muodostuivat hieman eri tavalla muihin verrattuna. Panel -elementin mallintamiseen tarvittiin PlotOutline -elementtiä ja Pavement -elementtejä. PlotOutline -elementille annettiin vain paneelin yksi nurkka kohta, josta sitä lähdetään mallintamaan ja paksuus. Tämän elementin alle luotiin tarvittava määrä Pavement -elementtejä, joita käytettiin kulma kohtien määrittämiseen. Esimerkiksi suorakulmion muotoisen paneelin mallintamiseen tarvittiin neljä Pavement -elementtiä. Jokaiselle elementille ohjelmassa tehtiin omat funktiot ja ne jaettiin sopiviin luokkiin niiden päätasojen mukaan. Näitä funktioita ja luokkia käyttämällä oli helppoa mallintaa ohjelman kautta PDMS:ään haluttuja komponentteja. Vaikein asia PDMS:n käyttämisessä ohjelmakoodin kautta oli orientaation oikein määrittäminen. Orientaatio muodostuu ilmansuunnista ja ylös ja alas suunnista ja näiden välisistä kulmista, joten sen hahmottaminen suoraan oikein oli hankalaa.
35 8 ONGELMAT 35 Ongelmia oli monenlaisia projektin edetessä, mutta kaikista päästiin kuitenkin ylitse tai sivulta kiertämällä ohitse. Projektin alussa ensimmäisenä ongelmana oli ohjelmakoodin sekavuus uutena käyttäjänä. Kesti muutama päivä päästä kunnolla sisälle miten ohjelmakoodi oli rakennettu ja kuinka se toimi. Tämä johtui siitä, että en ollut aikaisemmin tehnyt muita kuin pieniä yksinkertaisia ohjelmia, ja nyt edessä oli ensimmäinen isompi ohjelmointiprojekti. Suurin ongelma tässä ehkä oli ymmärtää, kuinka mitkäkin luokat keskustelivat ja riippuivat toisistaan. Kerralla koko ohjelmakoodin ymmärtäminen kunnolla olisi ollut liian työlästä ja hidasta, joten alussa tutkiskelin vain ohjelmakoodin osia joita käytin suoraan luodessa itse uutta ohjelmakoodia. Ohjelmakoodiin kunnolla sisälle päästyä vaikutti se suurimmalta osin helposti ymmärrettävältä. Osittaisena ongelmana koko projektin aikana oli tiedon saanti mallinrakennusta varten, mikä johtui ymmärrettävästä syystä. Henkilöiltä, joilta tietoa piti saada, olivat osan ajasta kiinni kiireellisissä ja tärkeissä kattilaprojekteissa. Osittain myös itse syynä tähän, koska loin ohjelmakoodia innostuneena nopeammin kuin uutta tietoa kerkesi saada. Kiersin ongelman tosin useimmiten tekemällä ohjelmassa muuta kuin varsinaista omakohtaista komponenttia. Loin ohjelmaan uusia osia ja muokkasin ohjelmakoodia selkeästi ymmärrettävämmäksi. Ohjelmakoodin luonnissa oli myös ongelmia. PDMS:n rajapinta.netympäristöön oli uusi yrityksen käytössä, joten kaikki ohjelmakoodin osat eivät olleet täysin hallinnassa. Ongelmana siinä oli kuinka saada käskyt välitettyä oikein ohjelmasta PDMS:ään. AVEVA:n tuki kuitenkin antoi neuvoja tarpeen mukaan ja loput yritys-erehdys-tekniikan avulla itse. Ohjelmakoodin yhtenevien osien yhdistämisessä oli ongelmia pienten eroavaisuuksien vuoksi, joihin joutui kehittämään omat ratkaisut. Yleisin ongelma, joka tuli vastaan oli kuitenkin normaali virheidenkäsittely. Ohjelma koottiin dll -tiedostoon normaalin exe -tiedoston sijasta, jolloin Visual Studion omat virheidenkäsittely työkalut eivät paljoa auttaneet. Virheitä yritettiin ratkaista "try catch" - funktioiden, viestilaatikoiden ja perinteisen yritys-erehdys -tekniikan avulla.
36 9 JOHTOPÄÄTÖKSET 36 Oman osuuteni projektissa sain työsuhteen aikana valmiiksi niiltä osin kuin oli alussa sovittu. Kerkesin myös lisäillä uusia tarvittavia toimintoja ohjelmaan ja korjailla ja kehittää ohjelmaa paremmaksi. Alustavat testauksetkin ehdin ajamaan komponentille, jolla näki että ohjelma toimii kuten oli tarkoitus. Omasta mielestäni projekti onnistui hyvin. Alussa työ oli haasteellisempaa, mutta alun jälkeen työ oli pääosilta helpohkoa. Kuitenkin myös vaikeampia asioita tuli vastaan mikä piti työskentelyn mielenkiintoisena. Koulussa opetettuja asioita pystyi paljon käyttämään hyväksi ohjelmoinnin osalta, mitkä auttoivat pääsemään vauhtiin ohjelmakoodia luodessa. Parantamisen varaa oikeastaan jäi vain ohjelmakoodin selkeyden ja yhdenmukaisuuden osalta. Kuitenkin seuraavat ohjelmoijat tulevat jatkamaan tekemäni ohjelman jatkokehitystä ja mahdollisesti parantavat puutteet. Opin projektista paljon uutta työelämästä ja isossa projektissa olosta. Myös ensimmäistä isoa projektia ohjelmoidessa itsenäisesti oli uusi kokemus, mikä varmasti auttaa jatkossa paljonkin. Kaiken kaikkiaan jäi itselleni hyvin positiivinen kuva projektissa työskentelemisestä. Kehitystyö jatkuu ohjelman osalta vielä monella komponentilla, mutta se tulee olemaan osa Foster Wheeler Energia Oy:n projekteja tulevaisuudessa.
37 LÄHTEET Tekesin digitaalinen tuoteprosessi projekti [Viitattu ] Saatavissa: 2. Energiaa työssä ja tuloksissa. Katsaus Foster Wheeler Energia OY Groupin toimintaan [Viitattu ] Saatavissa: 3. Foster Wheelerin historiaa [Viitattu ] Saatavissa: 4. Savonia esittely [Viitattu ] Saatavissa: 5. Pioneering CFB technology Kiertopetikattilateknologiasta [Viitattu ] Saatavissa: 6. Aveva PDMS ohjelmisto [Viitattu ] Saatavissa: 7. MVC arkkitehtuurista [Viitattu ] Saatavissa: 8. Rajapinnoista [Viitattu ] Saatavissa: 9. Olio-ohjelmointi [Viitattu ] Saatavissa:
38 LIITE Täydellinen UML:n mukainen luokkarakennekuva ohjelmasta Liite 1
39
40
13/20: Kierrätys kannattaa koodaamisessakin
Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy
Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari
ELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.
11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen
4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T
SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen
Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen
Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja
Kieliversiointityökalu Java-ohjelmistoon. Ohje
Kieliversiointityökalu Java-ohjelmistoon Ohje 2/6 SISÄLLYSLUETTELO 1 YLEISTÄ OHJELMASTA... 3 2 PÄÄ-IKKUNA...4 3 YLÄVALIKKO... 4 3.1 TIEDOSTO... 4 3.2 TOIMINTO... 4 3.3 ASETUKSET... 5 3.4 OHJE... 5 4 VÄLILEHDET...5
TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely
Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia
Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki
Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.
Sisällys. 11. Rajapinnat. Johdanto. Johdanto
Sisällys 11. ajapinnat. bstrakti luokka vai rajapinta? ajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen avulla.
Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa
Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1 Oliot ja luokat Javaohjelmoinnissa Vesa Laakso 22.9.2012 Sisällysluettelo Sisällysluettelo... 1 Johdanto... 2 1. Luokka... 2 2. Olio... 2 3. Luokan
AutoCAD-natiiviobjektin toteutus
AutoCAD-natiiviobjektin toteutus Kontiotuote OY Maailman toiseksi suurin hirsitalotoimittaja Aloittanut toimintansa 70-luvulla Liikevaihto vuonna 2003-37,355 Milj. euroa josta vientiä 7,376 Milj. euroa
S11-09 Control System for an. Autonomous Household Robot Platform
S11-09 Control System for an Autonomous Household Robot Platform Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Quang Doan Lauri T. Mäkelä 1 Kuvaus Projektin tavoitteena on
T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010
12. Periytyminen Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi
Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö
Matopeli C#:lla Aram Abdulla Hassan Ammattiopisto Tavastia Opinnäytetyö Syksy 2014 1 Sisällysluettelo 1. Johdanto... 3 2. Projektin aihe: Matopeli C#:lla... 3 3. Projektissa käytetyt menetelmät ja työkalut
Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2
8. Periytyminen 8.1 Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2 Mitä on periytyminen? Periytyminen (inheritance) tarkoittaa luokan piirteiden
Built Environment Process Reengineering (PRE)
RAKENNETTU YMPÄRISTÖ Tarvitaanko tätä palkkia? Built Environment Process Reengineering (PRE) InfraFINBIM PILOTTIPÄIVÄ nro 4, 9.5.2012 Tuotemallinnuksen käyttöönotto Built Environment Process Innovations
Mitä on periytyminen?
8. Periytyminen 8.1 Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Filosofinen ja käytännönläheinen näkökulma periytymiseen. Periytymisen soveltaminen. 8.2 Mitä
Automaattinen yksikkötestaus
Teknillinen Korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Automaattinen yksikkötestaus Ryhmä Rajoitteiset Versio Päivämäärä Tekijä
Ohjelmistojen mallintaminen
Ohjelmistojen mallintaminen - Mallit - Ohjelmiston kuvaaminen malleilla 31.10.2008 Harri Laine 1 Malli: abstraktio jostain kohteesta Abstrahointi: asian ilmaiseminen tavalla, joka tuo esiin tietystä näkökulmasta
Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.
4. Periytyminen 4.1. Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi
Ohjelmistojen mallintaminen, mallintaminen ja UML
582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti
Ohjelmointikielet ja -paradigmat 5op. Markus Norrena
Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja
TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)
TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Rajapinnat Java-kieli ei tue luokkien moniperintää. Jokaisella luokalla voi olla vain yksi välitön yliluokka. Toisinaan olisi
Valintanauhan komennot Valintanauhan kussakin välilehdessä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja.
Pikaopas Microsoft Excel 2013 näyttää erilaiselta kuin aiemmat versiot. Tämän oppaan avulla pääset alkuun nopeasti ja saat yleiskuvan uusista ominaisuuksista. Komentojen lisääminen pikatyökaluriville Pidä
15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:
Länsi-Puijon uuden rivitaloalueen reittivaihtoehtojen vertailu ja Pursutien katusuunnitelma
Länsi-Puijon uuden rivitaloalueen reittivaihtoehtojen vertailu ja Pursutien katusuunnitelma Juha-Matti Pohjolainen Opinnäytetyö Ammattikorkeakoulututkinto SAVONIA-AMMATTIKORKEAKOULU OPINNÄYTETYÖ Tiivistelmä
Mainosankkuri.fi-palvelun käyttöohjeita
Mainosankkuri.fi-palvelun käyttöohjeita Sisällys 1. Johdanto... 1 2. Sisäänkirjautuminen... 1 3. Palvelussa navigointi... 2 4. Laitteet... 2 5. Sisällönhallinta... 4 6. Soittolistat... 7 7. Aikataulut...
Ohjelmointi 1 / syksy /20: IDE
Ohjelmointi 1 / syksy 2007 10/20: IDE Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Tämän luennon rakenne
Ohjelmointi 1. Kumppanit
Ohjelmointi 1 Kumppanit November 20, 2012 2 Contents 1 Mitä ohjelmointi on 7 2 Ensimmäinen C#-ohjelma 9 2.1 Ohjelman kirjoittaminen......................... 9 A Liite 11 3 4 CONTENTS Esipuhe Esipuhe 5
Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO
Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO Opinnäytetyö KESKI-POHJANMAAN AMMATTIKORKEAKOULU Puutekniikan koulutusohjelma Toukokuu 2009 TIIVISTELMÄ OPINNÄYTETYÖSTÄ Yksikkö Aika Ylivieska
Action Request System
Action Request System Manu Karjalainen Ohjelmistotuotantovälineet seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 25.10.2000 Action Request System (ARS) Manu Karjalainen Ohjelmistotuotantovälineet
Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2
4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely
Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1
3. Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti? 3.3 Komponentit ohjelmistoyksikköinä 3.4 Rajapinnat 3.6 Komponenttien räätälöinti
Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä
582104 Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 1 Luokkamallin lisäpiirteitä Erilaiset yhteystyypit kooste kompositio Muita luokkien välisiä suhteita riippuvuudet periytyminen eli luokkahierarkia
HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu
HELIA 1 (14) Luento 7 Käyttöliittymäolio... 2 Olioajattelun perusteet... 3 Tavoitteet... 3 Peruskäsitteet... 4 Olio / Olioinstanssi / Olion esiintymä... 4 Ominaisuudet... 4 Toiminnot... 4 Olioluokka /
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty
Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu
Liite 1: skenaariot ja PoC tulokset 1. Palvelun kehittäjän näkökulma Tilanne Vaatimus Ongelma jos vaatimus ei toteudu Palvelun uusi versio on Palveluiden kehittäminen voitava asentaa tuotantoon vaikeutuu
Tenttikysymykset. + UML-kaavioiden mallintamistehtävät
Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä
XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy
IBM Collaboration Forum ٨.٣.٢٠١١ XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy ٢٠١١ IBM Corporation Domino-sovelluskehitys Nopea kehitysympäristö (Rapid application development,
Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat
Järjestelmäarkkitehtuuri (TK081702) SOA yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,
MATERIAALIMÄÄRÄLASKENTAOHJELMAN OFFLINE-TILA
MATERIAALIMÄÄRÄLASKENTAOHJELMAN OFFLINE-TILA Eetu Tolvanen Opinnäytetyö Ammattikorkeakoulututkinto SAVONIA-AMMATTIKORKEAKOULU Koulutusala Tekniikan koulutusala Koulutusohjelma Tietotekniikan koulutusohjelma
Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana
Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä
BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä
Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin
Ohjelmistojen suunnittelu
Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer
Simulation and modeling for quality and reliability (valmiin työn esittely) Aleksi Seppänen
Simulation and modeling for quality and reliability (valmiin työn esittely) Aleksi Seppänen 16.06.2014 Ohjaaja: Urho Honkanen Valvoja: Prof. Harri Ehtamo Työn saa tallentaa ja julkistaa Aalto-yliopiston
Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:
Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus
Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14
Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2
Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Testausdokumentti Kivireki Helsinki 17.12.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Anu Kontio Ilmari
9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.
Epooqin perusominaisuudet
Epooqin perusominaisuudet Huom! Epooqia käytettäessä on suositeltavaa käyttää Firefox -selainta. Chrome toimii myös, mutta eräissä asioissa, kuten äänittämisessä, voi esiintyä ongelmia. Internet Exploreria
C++ Ohjelmoijan käsikirja. Johdanto
Johdanto C++ Ohjelmoijan käsikirja Johdanto Tervetuloa Inside C++-kirjan pariin. Tämä on opaskirja standardi C++:n käyttöön. Käsittelemme kirjassa kaikki syntaksin, kieliopin, olio-ohjelmoinnin ja standardikirjastojen
Ohjelmistojen mallintaminen. Luento 11, 7.12.
Ohjelmistojen mallintaminen Luento 11, 7.12. Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation,
JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002
JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä
Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure
Automaattinen regressiotestaus ilman testitapauksia Pekka Aho, VTT Matias Suarez, F-Secure 2 Mitä on regressiotestaus ja miksi sitä tehdään? Kun ohjelmistoon tehdään muutoksia kehityksen tai ylläpidon
Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }
Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.
Interfacing Product Data Management System
Interfacing Product Data Management System Tekijä: Työn valvoja: Mats Kuivalainen Timo Korhonen Esitelmän sisältö Työn suorituspaikka - Ideal Product Data Oy Käsitteitä Työn tavoitteet Työn tulokset 1/5
15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien
812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin
812347A Olio-ohjelmointi, 2015 syksy 2. vsk II Johdanto olio-ohjelmointiin Sisältö 1. Abstraktiosta 2. Olio-ohjelmoinnin historiaa 3. Olioparadigmasta 4. Peruskäsitteiden esittely 2 II.1 Abstraktiosta
1. Olio-ohjelmointi 1.1
1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja
Visual Basic -sovelluskehitin Juha Vitikka
Visual Basic -sovelluskehitin Helsinki 30.10.2000 Seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Visual Basic sovelluskehitin Seminaari: Ohjelmistotuotantovälineet Tietojenkäsittelytieteen
Putkipakettien materiaalimäärälaskenta
Putkipakettien materiaalimäärälaskenta Foster Wheeler Energia Oy Mikko Ahvenainen Opinnäytetyö.. Ammattikorkeakoulututkinto SAVONIA-AMMATTIKORKEAKOULU OPINNÄYTETYÖ Tiivistelmä Koulutusala Tekniikan ja
Joonas Ruotsalainen GIT PIKAOPAS. Tutkielma 2011
1 Joonas Ruotsalainen GIT PIKAOPAS Tutkielma 2011 2 SISÄLTÖ 1. JOHDANTO... 3 2. ASENTAMINEN... 4 3. KÄYTTÖ... 4 3.1 Perusasetukset... 4 3.2 Git:n ottaminen käyttöön projektissa... 5 3.3 Tiedostojen lisääminen
AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML
AJAX-konsepti AJAX Asynchronous JavaScript And XML Viimeisin muoti-ilmiö web-ohjelmoinissa, termi Ajax tuli käyttöön vuoden 2005 aikana Joukko teknologioita, joiden avulla voidaan toteuttaa uudenlaisen
Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas
Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä
Tenttikysymykset. + UML- kaavioiden mallintamistehtävät
Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä
Test-Driven Development
Test-Driven Development Ohjelmistotuotanto syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole
GeoGebra-harjoituksia malu-opettajille
GeoGebra-harjoituksia malu-opettajille 1. Ohjelman kielen vaihtaminen Mikäli ohjelma ei syystä tai toisesta avaudu toivomallasi kielellä, voit vaihtaa ohjelman käyttöliittymän kielen seuraavasti: 2. Fonttikoon
Autotallin ovi - Tehtävänanto
Autotallin ovi - Tehtävänanto Pisteytys (max 9p): 1 piste per läpi mennyt testi (max 7p) Reflektointitehtävä (max 2p yksi piste jos osaa vastata edes osittain ja toinen piste tyhjentävästä vastauksesta)
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja
Jypelin käyttöohjeet» Ruutukentän luominen
Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen
Menetelmäraportti - Konfiguraationhallinta
Menetelmäraportti - Konfiguraationhallinta Päiväys Tekijä 22.03.02 Ville Vaittinen Sisällysluettelo 1. Johdanto... 3 1.1 Tärkeimmät lyhenteet... 3 2. Konfiguraationhallinnan tärkeimmät välineet... 4 2.1
Office 365 palvelujen käyttöohje Sisällys
Office 365 palvelujen käyttöohje Sisällys Sisäänkirjautuminen... 2 Office 365:n käyttöliittymä... 3 Salasanan vaihto... 5 Outlook-sähköpostin käyttö... 7 Outlook-kalenterin käyttö... 10 OneDriven käyttö...
1 Tehtävän kuvaus ja analysointi
Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.
SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3
AgilElephant SEPA Diary Petri Kalsi 55347A Heikki Salminen 51137K Tekijä: Petri Kalsi Omistaja: ElectricSeven Aihe: PK&HS Sivu 1 / 7 Dokumenttihistoria Revisiohistoria Revision päiväys: 29.11.2004 Seuraavan
Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:
Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int
4. Luokan testaus ja käyttö olion kautta 4.1
4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään
COTOOL dokumentaatio Testausdokumentit
Table of Contents Testausraportti.............................................................................. 1 1 Tiivistelmä...............................................................................
Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset
Tekninen määrittely: Editori Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Sisällysluettelo 1. Johdanto...4 1.1. Tarkoitus ja kattavuus...4 1.2. Tuote ja ympäristö...4 1.3. Määritelmät,
Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä
www.niksula.cs.hut.fi/~jjkankaa// Demosovelluksen tekninen määrittely v. 0.6 Päivitetty 11.12.2000 klo 20:26 Mickey Shroff 2 (12) Dokumentin versiohistoria Versio Päivämäärä Tekijä / muutoksen tekijä Selite
UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN
UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN SISÄLLYS 3. Luokkakaavio UML -mallinnuskielessä 3.1 Luokkakaavion luokan rakenteet 3.2 Luokan kuvauksesta C++ ohjelmakoodiksi 3.3 Luokkakaavion luokkien yhteystyypit
ELMAS 4 Laitteiden kriittisyysluokittelu 8.2.2012 1/10. Ramentor Oy ELMAS 4. Laitteiden kriittisyysluokittelu. Versio 1.0
1/10 Ramentor Oy ELMAS 4 Laitteiden kriittisyysluokittelu Versio 1.0 2/10 SISÄLTÖ 1 Kuvaus... 3 2 Kriittisyysluokittelu ELMAS-ohjelmistolla... 4 2.1 Kohteen mallinnus... 4 2.2 Kriittisyystekijöiden painoarvojen
Uudelleenkäytön jako kahteen
Uudelleenkäyttö Yleistä On pyritty pääsemään vakiokomponenttien käyttöön Kuitenkin vakiokomponentit yleistyneet vain rajallisilla osa-alueilla (esim. windows-käyttöliittymä) On arvioitu, että 60-80% ohjelmistosta
Test-Driven Development
Test-Driven Development Syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole keksiä kaikkia mahdollisia
Ylläpitodokumentti Mooan
Ylläpitodokumentti Mooan Helsinki 16.08.06 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (9+1op/6ov) Projektiryhmä Heikki Aitakangas
Juricon Nettisivu Joomlan käyttöohjeet
Juricon Nettisivu Joomlan käyttöohjeet Sisällysluettelo Julkaisujärjestelmä hallinta... 3 Joomla-järjestelmän ylävalikolla on seuraavia:... 3 Valikot... 4 Kategoriat ja artikkelit... 5 Lisäosat ja moduulien
Olio-ohjelmointi Javalla
1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi
Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2
4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä
Työkalut ohjelmistokehityksen tukena
1 Työkalut ohjelmistokehityksen tukena Johdanto 2 Työkaluja eli ohjelmistotyötä tukevia ohjelmistoja käytetään ohjelmistoalan yrityksissä nykypäivänä paljon. Työkalut auttavat ohjelmistoalan ihmisiä suunnittelemaan
Kerro kuvin 3:n uudet ominaisuudet
Verkkosivu: www.haltija.fi Puhelin: 09 612 2250 Sähköposti: asiakaspalvelu@haltija.fi Kerro kuvin 3:n uudet ominaisuudet Kerro kuvin 3 on kehitetty uudelleen perusteista lähtien. Kaikki, mikä oli mahdollista
Uutta Remote Support Platform 3.0 -versiossa
Uutta Remote Support Platform for SAP Business One Asiakirjaversio: 1.0 2012-10-08 Kaikki maat Typografiset merkintätavat Kirjasintyyli Esimerkki Näytöstä lainatut sanat tai merkit. Näitä ovat kenttien
Javan asennus ja ohjeita ongelmatilanteisiin
Javan asennus ja ohjeita ongelmatilanteisiin Javaa tarvitaan Fivaldin Sovellusikkunan alaisiin sovelluksiin, jotka käyttävät Oracle Forms -tekniikkaa. Visma Fivaldin osalta suosittelemme aina käyttämään
Visma Software Oy
pidättää itsellään oikeuden mahdollisiin parannuksiin ja/tai muutoksiin tässä oppaassa ja/tai ohjelmassa ilman eri ilmoitusta. Oppaan ja siihen liittyvän muun materiaalin kopiointi on kielletty ilman :n
Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.
Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen
Kertaus: yleistys-erikoistus ja perintä
Kertaus: yleistys-erikoistus ja perintä Nauta, Lehmä ja Kuttu ovat Kotieläimiä, Kotieläimet Eläimiä Kotieläimillä (siis myös Naudoilla, Lehmillä ja Kutuilla) on Omistaja Kuttu ja Lehmä toteuttavat rajapinnan
Apuja ohjelmointiin» Yleisiä virheitä
Apuja ohjelmointiin» Yleisiä virheitä Ohjelmaa kirjoittaessasi saattaa Visual Studio ilmoittaa monenlaisista virheistä "punakynällä". Usein tämä johtuu vain siitä, että virheitä näytetään vaikket olisi
WINE API ja Virtualisointiohjelmistot
WINE API ja Virtualisointiohjelmistot Yleistä Winestä Ohjelmisto, joka mahdollistaa Windows -pohjaisten ohjelmien käytön kuissa käyttöjärjestelmissä Toimii yhteensopivuuskerroksena ohjelman ja käyttöjärjestelmän
LOPPURAPORTTI Paperikonekilta Versio 1.0
Loppuraportti LITA/TIKO/PAPERIKONEKILTA 1 (14) 18.5.2009 LOPPURAPORTTI Paperikonekilta Versio 1.0 Tekijät: Jaakko Karhunen Jani Hyvönen TIKO, IT-Dynamo 5.kerros Osoite: Tietojenkäsittelyn koulutusohjelma