OHJ-3100 Ohjelmien ylläpito ja evoluutio Syksy 2009 Harjoitustyö Teekkarien Kosto Yleiskuvaus Työn yleiskuvaus Tehtävänä on muutosten tekeminen olemassa olevaan ohjelmaan. Työ on pakollinen ja se tehdään 1-3 hengen ryhmissä. Työ on palautettava viimeistään 20.12 klo 23.59. Arvostelu tapahtuu asteikolla 1-6. Analysoitavan ja uudistettavan ohjelman kuvaus Harjoitustyönä on Teekkarien Kosto-pelin analysointi ja uusien ominaisuuksien lisääminen ohjelmaan. Teekkarienkosto on netissä pelattava peli, johon kannattaa tutustua ennen harjoitustyön aloittamista osoitteessa http://www.teekkarienkosto.net/. Teekkarien Kosto on tuoterungon päälle tehty peli, jonka tarkoituksena on testata rungon toimivuutta käytännössä. Runko on toteutettu siten, että siihen on helppo lisätä ominaisuuksia. Esimerkkinä yhtä peliä pitää pystyä pelaamaan monelta erilaiselta käyttöliittymältä. Kaikkien pelielementtien nimet määritellä pelikohtaisesti. Varsinainen pelin mekaniikka pohjautuu teksti ja numeropohjaiseen verkkopeliin nimeltä Utopia. Peli on monen käyttäjän yhtäaikaisesti pelaama kokonaisuus jossa ollaan interaktiossa muiden pelaajien kanssa jatkuvasti. Yleisesti kyse on valtakamppailusta muiden pelaajia vastaan. Vaatimukset Peliin toteutettava ominaisuus on pelaajien välinen liittoutuminen. Vaatimukset liittoutumiselle ovat: 1. Liittosivu a. Liitolle tulee tehdä oma sivu, josta liittoa hallinnoidaan. Sivuja voi tehdä useampiakin, jos katsoo tarpeelliseksi. b. Liittosivun tulee näyttää lista pelaajista. c. Liittosivun tulee näyttää vähintään: Pelaajan nimi, pisteet ja rooli (johtaja, rivisotilas, jne). d. Pelaajat pitää pystyä lajittelemaan vähintään nimen, pisteiden ja roolin mukaan. e. Liittosivulle tulee päästä valikosta. Tätä varten tulee tehdä nappi, joka tulee sijoittaa valikkoon. Valikkoa tulisi muuttaa siten, että napille tulee tilaa. f. Liittosivulla näkyy liiton pisteet ja nimi. g. Liittosivu osaa suodattaa tyypin mukaan. (esimerkki suodatus: pelkät johtajat, pelkät rivisotilaat)
h. Liittosivulla näkyy lista muista liitoista ja niiden pisteistä. 2. Liitto a. Liitto on lista pelaajia, jotka voivat yrittää pelata yhdessä voittaakseen muut liitot. b. Liiton pisteet = kaikkien jäsenkiltojen pisteet summattuna yhteen. c. Liitolle voi lähettää viestin. d. Vastaanottajana käytetään liiton nimeä e. Liitolle tuleva viesti näkyy kaikille liiton pelaajille uutena viestinä. f. Liitolla on nimi i. Liiton nimi tulisi jotenkin erottaa pelaajien nimistä (esim. jos pelaajalla ja liitolla on sama nimi, viesti pitäisi silti pystyä lähettämään vain halutulle liitolle/pelaajalle) ii. Kahdella liitolla ei voi olla samaa nimeä g. Liitolla on tagi (lyhenne nimestä). i. Kahdella liitolla ei voi olla sama tagi. ii. Tagia käytetään aina pelaajan tai killan nimen yhteydessä esimerkiksi pelaajalistassa h. Oman liiton kimppuun hyökkäämisestä tulisi antaa varoitus. 3. Liiton muodostus a. Liittyminen liittoon tapahtuu automaattisesti killan luonnin tai erottamisen yhteydessä. b. Kilta sijoitetaan satunnaisesti johonkin liittoon, jossa on tilaa. c. Jos kaikki liitot ovat täynnä, luodaan uusi liitto ja kilta sijoitetaan siihen. d. Erotettu kilta ei voi liittyä uudelleen liittoon, josta erottaminen tapahtui. e. Liiton maksimikoko (LMK) määräytyy seuraavasti: (LMK <= 10) && (LMK <= liittojen määrä) 4. Johtaja a. Liitolla on aina johtaja. Valintatavan voi itse päättää. (esim. ensimmäinen pelaaja liitossa on valitaan johtajaksi) b. Johtajan tehtäviä voi tehdä ainoastaan johtaja c. Voi vaihtaa liiton nimeä d. Voi erottaa jäseniä liitosta e. Voi vaihtaa liiton tagia f. Voi jakaa muille rooleja g. Johtaja on myös rooli, jonka voi antaa muille 5. Bonus (+1p arvosteluun) a. CakePHP:n päivitys uusimpaan versioon Mielikuvituksen käyttö on myös vaatimuksena harjoitustyön tekemiseen. Toiminnallisuuksien sijoittaminen jätetään toteuttajan päätettäväksi. Esimerkiksi roolien jakamisen ulkoasun saa itse päättää, kunhan se on toteutettu jotenkin johdonmukaisesti. Pakolliset vaatimukset ovat paksulla (eli kohdat 1a-1f, 2a-2d, 3a-3e ja 4a-4d). Uuden ominaisuuden voi toteuttaa monella eri tapaa, eikä erinäistä parasta ratkaisua välttämättä ole
olemassakaan. Uusi ominaisuus tulee kuitenkin (mahdollisuuksien mukaan) toteuttaa ohjelmassa käytössä olevaa arkkitehtuuria noudattaen. Muita huomioonotettavia asioita ovat mm. ratkaisun ylläpidettävyys, johdonmukaisuus vanhan toteutuksen kanssa ja helppokäyttöisyys. Kolmen hengen ryhmille tulee lisäksi pakollisena kohta 5a. Tästä ei anneta bonuspistettä. Ohjelman analysointi Uusi ominaisuus tulee toteuttaa ohjelmassa käytössä olevaa arkkitehtuuria noudattaen. Oleellisena tehtävänä harjoitustyössä on ohjelman analysointi. Todennäköisesti se onkin vaikeampi ja työläämpi tehtävä kuin varsinaisen lisäyksen toteuttaminen. Analysointia tarvitaan, jotta löydetään oikeat kohdat, johon muutokset tehdään. Lisäksi työssä joudutaan analysoimaan muutosten vaikutuksia muuhun järjestelmän toimintaan. Varsinkin silloin, jos muutoksella havaitaan olevan myös laajempia vaikutuksia, joudutaan miettimään, miten muutos on järkevintä tehdä ja mitä laajempia muutoksia on turvallista tehdä, niin ettei järjestelmän muuhun toimintaan aiheuteta virheitä. Ohjelman ymmärtämiseksi voi ja kannattaa käyttää saatavilla olevia taustatietoja ja dokumentteja. Ohjelman käyttöä kannattaa kokeilla, jolloin siitä saa jonkinlaisen käsityksen, minkä jälkeen ohjelmakoodin ja dokumenttien tarkastelu voi olla helpompaa. Todellisuudessa monien vanhojen järjestelmien kohdalla tilanne on sellainen, että järjestelmän dokumentteja ei ole saatavilla tai ne ovat vanhentuneita. Tässäkin tapauksessa ohjelmaa on kehitetty projektityönä ja kaikkia dokumenteissa mainittuja ominaisuuksia ei ole ehditty toteuttaa, joten dokumentit voivat olla joiltain osin hieman ristiriidassa ohjelman toteutuksen kanssa. Lisäksi Teekkarien Kostoa on laajennettu viestinvälityksellä, joka on vuoden 2008 harjoitustyö. Teekkarien Kostoon tarjotaan kuitenkin harjoitusryhmien käyttöön seuraavat dokumentit: Määrittelydokumentti Suunnitteludokumentti Ylläpito-ohje Käyttöohje Muutosdokumentti Ohjelmaan perehtyminen kannattaa aloittaa tutustumalla Määrittely-dokumenttiin. Työkaluista Teekkarien kosto on toteutettu CakePHP (v1.1) kehykselle, joka mukailee MVCarkkitehtuuria. Ohjelmointikielenä on käytetty PHP5:ta. Näkymät on toteutettu XHTML ja CSS:lla. AJAX toiminnot on toteutettu JavaScriptillä. Peli vaatii alustakseen MySQL:ää ja Apachea, jossa on PHP5 tuki. Helpoin tapa hankkia ympäristö on hakea WampServer 2.0. Uusin WampServer (7.10.2009) sisältää: Apache 2.2.11:n, MySQL 5.1.36:n ja PHP 5.3:n. Uusin versio PHP:sta, jolla Teekkarien kosto toimii, on 5.2.11. WampServerin kotisivulla on paketti, jolla voi asentaa vanhemman PHP:n WampServeriin. WampServerin mukana tulee myös PHPMyAdmin tietokannan
hallinnointiin. WampServeriä ei ole kuitenkaan pakko käyttää, mutta voi helpottaa alkuun pääsemistä. Työn palauttaminen Työ on palautettava viimeistään 20.12.2008 klo 23.59. Palautus koostuu zip-pakettina palautettavasta ohjelman lähdekoodista (kansion "www" sisältö), muutosraportista ja SQL-tiedostosta, jolla kanta populoidaan (esim. luontilauseet.sql). SQL kuuluu palauttaa vaikkei muutoksia tietokantaan ollakaan tehty. Muutosraportti palautetaan pdf- tai rtfformaatissa. Dokumentissa kuvataan, mitä, miten ja miksi on muutettu/lisätty sekä miten muutokset on testattu. Dokumentista pitää selvitä mitä luokkia järjestelmästä on muutettu, mitä tauluja tietokannasta on muutettu, mitä tauluja tietokantaan on lisätty ja mitä uusia luokkia järjestelmään on lisätty. Dokumentit palautetaan myös tulostettuina lokeroon 29 (Tietotalon E käytävän alku, 1. kerros) 21.12.2009 klo 15:30 mennessä. Palautuspaketin nimen olisi hyvin suositeltavaa olla muotoa evopalautus-opnro1-opnro2- opnro3.zip, jossa jokainen opnro on ryhmän jäsenen oppilasnumero eli esim. evopalautus-123456-765432.zip jos ryhmässä on vain kaksi jäsentä. Palautettavan paketin ei tulisi ylittää 5Mt:a. Jos näin kuitenkin tapahtuu, ota yhteyttä harjoitustyön tarkastajaan. Arvostelu Hyvin toteutetusta harjoitustyöstä voi saada maksimissaan 6 pistettä, jotka lisätään tentistä saatuun pistemäärään. Pakollisten kohtien toteuttamisesta saa pisteitä 0-1. Loput pisteet annetaan muiden kohtien toteuttamisesta, ominaisuuden istuvuudesta olemassa olevaan arkkitehtuuriin, käytetyistä tekniikoista, ratkaisun ylläpidettävyydestä, johdonmukaisuudesta vanhan toteutuksen kanssa, helppokäyttöisyydestä ja dokumentoinnista. Kopiointi ja lähdemateriaalin käyttö Harjoitustyöstä saa keskustella muiden ryhmien jäsenten kanssa vain periaatteellisella tasolla. Yhdenkään koodirivin luovuttaminen toisen ryhmän jäsenelle on ehdottomasti kiellettyä. Minimivaatimukset Harjoitustyö on palautettu deadlineen mennessä. Palautuspaketti on tehty ohjeiden mukaan. Kaikki pakolliset ominaisuudet on toteutettu. Kaikki tehdyt muutokset tai lisäykset on dokumentoitu pyydetyllä tavalla. Muuta huomioitavaa harjoitustyötä tehtäessä Tietokantaa saa muuttaa tarpeelliseksi katsomallaan tavalla. Tietokantaan tehdyt muutokset tarvitsee tosin dokumentoida.
Jos katsoo tarpeelliseksi, olemassa olevia sivuja saa muokata ilman rikkomatta mitään jo olemassa olevaa toiminallisuutta. Huom. Viestin näyttämisen siirtämistä pääsivulta viestintäsivulle ei lasketa toiminnallisuuden rikkomiseksi. Kaikki tehdyt muutokset ja uudet ominaisuudet tulee dokumentoida. Dokumenteissa tulee käydä ilmi miten lisätyn toiminnallisuuden voi testata. luontilauseet.sql sisältää tietokannan populointilauseet. Tämä kuuluu päivittää siten, että harjoitustyön lisätyt ominaisuudet ovat helppo testata. (esim. tarvittava määrä pelaajia on valmiiksi luotu) Pelin luonteeseen kuuluu, ettei termit joita käytetään ole turhan jäykkiä. Luovuutta saa käyttää, jos ottaa uusia termejä käyttöön Teekkarien kostossa Ominaisuudet, jotka on jätetty dokumentoimatta tai on dokumentoitu riittämättömästi, voidaan tulkita tekemättömiksi