Petri Eskelinen, Lasse Laukkanen, Kaisa Kokko ja Mikko Ketola
EXODUS
Projektisuunnitelma
Tietotekniikan cum laude -työprojekti
29.10.2001

Tekijät: EXODUS-projekti: Petri Eskelinen, Lasse Laukkanen, Kaisa Kokko ja Mikko Ketola	
Yhteystiedot: Agc233.3, http://kotka.it.jyu.fi/exodus, puh: 014-2604966
Työn nimi: Projektisuunnitelma
Title in English: Project plan
Työ: Tietotekniikan cum laude –työprojektin projektisuunnitelma
Sivumäärä: 1
Teettäjä: Numerola Oy
Avainsanat: aikataulu, ajankäyttö, vastuualue
Tiivistelmä: Tässä projektisuunnitelmassa kerrotaan projektin taustasta ja tavoitteista sekä esitellään käytössä olevia resursseja, joiden puitteissa projektia tehdään. On myös kerrottu, mitkä ovat kullekin projektiryhmän jäsenelle jaetut vastuualueet sekä selvitetty, miten aikaa tullaan käyttämään. Tähän projektiin liittyviä riskejä on myös pyritty miettimään.

Termiluettelo
Alla lueteltu hieman projektin aikana ilmenneitä uusia termejä:

TCL/Tk	Tool Command Language/Toolkit. Ohjelmistopaketit Tcl ja Tk yhdessä tarjoavat ohjelmointiympäristön graafisten sovelluksien kehittämiseen /käyttämiseen. TCL on tulkattava komentorivipohjainen kieli [2].		
GLUT	OpenGL Utility Toolkit. Itsenäinen laajennuskirjasto OpenGL-ohjelmien kirjoittamiseen. GLUT käsittää yksinkertaisen ohjelmointirajapinnan OpenGL:lle. GLUTia on mahdollista käyttää sekä Windows että X-Windows järjestelmissä.  
OpenGL	Grafiikkakirjasto 3D-gafiikkaan ja mallinnukseen.
Blokki	Kuutio, pyramidi, tetraedri tai prisma: tahkot muodostuvat bezier-pinnoista.
Bezier-pinta	CAD- ja piirrosohjelmissa käytetty pintatyyppi. Sen avulla pinnat saadaan taipumaan eri muotoihin ohjauspisteitä siirtämällä.

Sisältö
1	Johdanto	1
2	Projektin taustat ja tavoitteet	2
2.1	Projektin taustat	2
2.2	Projektin tavoitteet	2
3	Resurssit	4
4	Vastuualueet	6
5	Projektiin liittyvät riskit	8
6	Ajankäyttösuunnitelma	9
6.1	Aiheeseen tutustuminen ja suunnittelu	9
6.2	Projekti- ja sovellussuunnitelman laatiminen	9
6.3	Ohjelmointia, dokumentointia ja testaamista	9
6.4	Dokumentointia ja testaamista	9
6.5	Projektin viimeistely	10
7	Yhteenveto	11
8	Lähteet	12

1	Johdanto
Exodus-nimisessä tietotekniikan cum Laude -työprojektissa toteutetaan 3D-geometrian piirtämiseen ja havainnollistamiseen tarkoitettu sovellus, jolla kootaan laskenta-alueita yksinkertaisista kappaleista eli blokeista. Kyseisiä alueita käytetään muissa sovelluksissa fysikaalisten ilmiöiden mallintamiseen.
Toisessa luvussa kerrotaan projektin taustasta ja sovelluksen käyttökohteesta sekä itse projektin tavoitteesta lähinnä projektiryhmän oppimisen kannalta. Kolmas luku, projektin resurssit, antaa tietoa käytössä olevista ohjaajista ja yhteyshenkilöistä sekä käytössä olevista laitteista ja ohjelmista. Neljännessä luvussa kerrotaan projektin työnjaosta ja viidennessä luvussa kaikista niistä riskeistä, joita projektin toteutukseen liittyy. Alustava aikataulu työmääristä ja sovituista katselmusajankohdista käy ilmi luvussa kuusi. Lopussa on vielä yhteenveto ja lähdeluettelo.
2	Projektin taustat ja tavoitteet
Tässä luvussa kerrotaan projektin taustoista sekä Exodus -projektin tavoitteista.
2.1	Projektin taustat

Numerola Oy on jyväskyläläinen, vuonna 1998 perustettu yritys, joka kehittää ohjelmistoja teollisuusprosessien laskennalliseen simulointiin. Simuloinneissa sovelletaan pääosin niin sanottua äärellisten elementtien menetelmää (FEM). Simulointiohjelmistoon kuuluu FEM-ratkaisijan lisäksi syöttötietoa ja laskennallisia tuloksia käsitteleviä ohjelmia [3].  Näissä ohjelmistoissa kappaleitten geometria kuvataan elementtiverkolla ja sen  avulla lasketaan esimerkiksi lämpötilajakaumia. Teollisuusprosessien mallinnuksessa käytetään yleensä yksinkertaisista elementeistä koostuvia laskenta-alueita. Elementit voivat olla esim. eri materiaaleista koostuvia kappaleita tai osa-alueita, joissa neste tai ilma virtaa.
Exodus-projekti liittyy Numerola Oy:n laajempaan Numerrin-tuotekehityshankkeeseen, jonka tavoitteena on monipuolinen ohjelmistopaketti laskennalliseen simulointiin ja optimointiin. Aikaisemmin keväällä 2001 on ko. yritykselle toteutettu työprojektin puitteissa Exoduksen 2D -versio: Genesis [1].
2.2	Projektin tavoitteet

Projektissa toteutetaan 3D-piirtotyökalu, jolla kootaan alueita yksinkertaisista peruskappaleista eli blokeista. Kyseisiä alueita käytetään fysikaalisten ilmiöiden mallintamiseen. Projektissa keskitytään 3D-toimintojen sisäiseen toteuttamiseen. Ensisijaisena tavoitteena on toteuttaa 3D-ympäristö, jossa on neljänlaisia vektorimuotoisia perusblokkeja, joiden avulla ohjelmalla muodostetaan mallinnettavia objekteja. Perusblokit ovat heksaedri, prisma, tetraedri ja pyramidi. Genesis-projektin luokkahierarkiaa voidaan hyödyntää esimerkinomaisesti.
Projektilaisten tarkoituksena on oppia uusien työkalujen käyttöä, kokonaisvaltaista sovellusten suunnittelemista ja toteutusta sekä ryhmätyö- ja vuorovaikutustaitoja ennalta suunnitellun aikataulun mukaisesti.
3	Resurssit
Seuraavat henkilöt ovat mukana projektissa:

Projektiryhmä EXODUS:	      	Petri Eskelinen 	
Lasse Laukkanen 
Kaisa Kokko
Mikko Ketola
Ari Häyrinen (visuaalinen konsultti)

Vastaava ohjaaja:   		Kari Kärkkäinen
Tekniset ohjaajat: 		Anni Toivola (Tcl/Tk)
				Markku Vire (OpenGl/3D)
Tilaajan edustajat:		Kai Hiltunen
Eeva-Kaisa Rouhiainen
			Erkki Heikkola

Projektiryhmällä on käytössä Agoran toisen kerroksen työprojektitilassa oma huone AgC233.3. Huoneessa on neljä mikrotietokonetta, joissa yhdessä on Windows 2000 professional -käyttöjärjestelmä ja muissa Linux. Dokumentointi on pääsääntöisesti tehty Microsoft Wordia käyttäen ja ajankäyttöä seurataan Microsoft Exceliin tehdyn  sovelluksen avulla. Ohjelmakoodin kirjoitus hoituu tavallisia tekstieditoreita käyttäen, joista projektiryhmän jäsenet tulevat käyttämään emacsia. Toki muitakin vaihtoehtoja on käytettävissä. Tarvittavat ohjelmointityökalut (TCL/Tk- sekä GNU-kääntäjät) löytyvät myös projektiryhmän koneilta. C++-debuggerina käytetään ddd-ohjelmaa. Projektihuoneessa on myös käytössä puhelin sekä kattavasti toimistotarvikkeita.
Myöskin projektitilassa oleva kahvinkeitin/jääkaappi  on vapaasti käytettävissä. Käyttöön on myös hankittu runsaasti kirjallisuutta, joita saa tarvittaessa lainata. Tulostuskiintiö on käytännössä lähes rajaton, sillä kunkin projektilaisen tulostuskiintiö on liki 20000 sivua.
4	Vastuualueet
Petri on osoittautunut sanavalmiiksi ja eniten tietämystä omaavaksi,  joten hän tulee toimimaan Exoduksen projektipäällikkönä. Ajankäytön kirjaamisesta jokainen huolehtii omalta osaltaan. Dokumentointi (esityslistat, pöytäkirjat & muut dokumentit) hoidetaan yhdessä aina sen mukaan, miten itse kullakin on aikaa/resursseja vapaana. Projektipalavereissa Petri toimii pääsääntöisesti puheenjohtajana ja Kaisa sihteerinä.
Alla olevassa kuvassa on esitetty ohjelman rakenne pääpiirteittäin ja siitä selviää myös  työnjako:

TCL/Tk:lla tehdään erillinen käyttöliittymä, joka sisältäen toiminnot joita käyttäjä valitsee. Käyttöliittymä hoitaa siis kaiken käyttäjältä kysyttävän tiedon välittämisen tietorakenteelle. Käyttöliittymän yhteyteen tehdään myös C++:lla osio, joka hoitaa datan kuljettamisen Tcl/Tk:n ja tietorakenteen välillä. Käyttöliittymän tekemiseen käytetään kahta henkilöä, jos se osoittautuu yhtä työlääksi kuin GENESIS-projektissa kävi. Käyttöliittymän toteuttavat  Mikko ja Kaisa.
OpenGL hoitaa piirtämisen GLUT-ikkunaan, joka on erillään käyttöliittymäikkunasta ja Petri ottaa toteuttaakseen sen, koska hän hallitsee meistä OpenGL-ohjelmoinnin  parhaiten. 
 Lasse toteuttaa C++-tietorakenteet, jonka tehtäviin kuuluu piirtoavaruuden kappaleiden ja niihin liittyvien operaatioiden mallintaminen. 
Käyttöliittymän ja muiden eri moduulien välinen rajapinta ja integrointi toteutetaan kyseisten moduulien vastuullisten kesken, jolloin osalliset voivat vaikuttaa rajapintaan ja tietävät miten tieto on kuljetettava pinnan läpi. Rajapinnat suunnitellaan käyttötapauksiin pohjautuen ja niiden tarkempi määrittely löytyy sovellussuunnitelmasta.
5	Projektiin liittyvät riskit
Ennakoimalla mahdolliset ongelmakohdat pyritään ne ehkäisemään  mahdollisimman tehokkaasti jo ennen niiden ilmenemistä. Seuraavassa on lueteltu muutamia prjektiin liittyviä riskejä:
•	Uusien työkalujen opetteleminen: suurimmalle osalle projektiryhmän jäseniä Linux käyttöjärjestelmä, TCL/Tk, OpenGL sekä GLUT ovat entuudestaan melko tuntemattomia. Tästä johtuen aikaa tulee menemään alussa runsaasti pelkästään perusasioiden opetteluun. Mutta toki tässäkin asiassa voi kääntyä teknisten ohjaajien puoleen.
•	Työnjaon onnistuminen on myöskin on olennaista, sillä ryhmän jäsenten ohjelmointitaidot vaihtelevat olennaisesti - ja jo osuuksia jakaessa tämä tulisi ottaakin huomioon mahdollisimman hyvin. Näin taattaisiin projektin tasainen edistyminen joka alueella, mitä seurataan ajankäyttövihkojen perusteella.
6	Ajankäyttösuunnitelma
Projekti toteutetaan seuraavalla sivulla olevan aikataulun mukaisesti. Suurempia tehtäväkokonaisuuksia projektista löytyy selvästi neljä, ja näitä onkin hieman selvitetty seuraavissa alaluvuissa. 
6.1	Aiheeseen tutustuminen ja suunnittelu
Projekti alkaa aiheen vastaanottamisella ja tehtävien hahmottelulla. Ensimmäiset viikot kuluvatkin tehtävän tarkentamisessa ja aiheeseen syventymisessä. Tähän tehtäväkokonaisuuteen liittyy läheisesti projekti- ja sovellussuunnitelman laatiminen.
6.2	Projekti- ja sovellussuunnitelman laatiminen
Projektin alussa ensisijaisena tavoitteena on projekti- ja sovellussuunnitelman laatiminen. Näiden suunnitelmien valmistuminen on edellytyksenä seuraavien vaiheiden käynnistymiselle.
6.3	Ohjelmointia, dokumentointia ja testaamista
Tämä vaihe aloitetaan välittömästi suunnitelmien valmistumisen jälkeen. Ohjelmoinnin aikana dokumentointia kirjoitetaan lähinnä kommentein. Testaamisella tarkoitetaan lähinnä itsenäisten ohjelmakokonaisuuksien testaamista. Toki testaamista tehdään aina välillä eri komponenttien välilläkin näin varmistaen sen että toteutus on ollut yhtenäistä.
6.4	Dokumentointia ja testaamista
Ohjelmointityön loppuvaiheessa aloitetaan laajempi testaaminen ja dokumentointi. Dokumentointi käsittää käyttöohjeitten kirjoittamisen ja komponenttien dokumentaatiot. Testaamista suoritetaan yhdistämällä projektin aikana toteutetut  komponentit.
6.5	Projektin viimeistely
Viimeistelyvaiheessa kootaan kaikki julkiseksi jäävät dokumentit projektikansioon sekä poltetaan Exodus-ohjelma cd:lle kansioon liittämistä varten. 

Alustavasti projektin aikataulua on suunniteltu seuraavanlaiseksi:
Projektisuunnitelma, käyttötapaukset ja
 vaatimusmäärittely valmiina 		24.10.2001
Sovellussuunnitelma valmis		31.10.2001
Projektisopimus valmis allekirjoitettavaksi	31.10.2001
Käyttöliittymän ulkoasu ja muutama perustoiminto valmis:
blokkien luominen/poistaminen onnistuu 	07.11.2001	
Ohjelman alkeisversio testaukseen Numerolalle	15.11.2001
Siirto, pyöritys ja yhteyksien tutkiminen onnistuu	14.11.2001
Tahkojen Bezier -kuvaukset		21.11.2001
Blokkien yhdistäminen & erottaminen	28.11.2001
Ohjelman testaukseen Numerolalle 		03.12.2001
Virheet korjattu & dokumentoitu		16.12.2001
Projektin loppuesittely 		17.12.2001
7	Yhteenveto
Dokumentissa kuvattiin siis projektin läpivientiä eli työnjakoa, arvioitua aikataulua sekä projektin käytössä olevia resursseja. Dokumentissa selvitettiin myös projektin taustat eli mihin Exodus pohjautuu ja mitä sillä tullaan tekemään. Projektiin liittyvät riskit pyrittiin myös miettimään mahdollisimman hyvin ja keksimään niihin ratkaisut.
8	Lähteet
[1] Genesis-kansio, kevät 2001, Tietotekniikan laitos
[2] Ousterhout, John, Tcl and Tk Toolkit, Addison-Wesley, 1998 
[3] Hakala Jussi, Laitinen Mika, Numerrin 1.0-käsikirja Numerola Oy, Jyväskylä, 2001