Követelmény, projekt, funkcionalitás
41 – CSK – 1 konzulens Eredics Péter
csapattagok Olasz Ákos
G34NIY
[email protected]
Panyiczky Péter Zoltán
T533FJ
[email protected]
Lágler Krisztián
FYMGQ8
[email protected]
2009-02-18
1.1. Követelmény definíció 1.1.1. A program célja, alapvető feladata
A program elsődleges célja a szoftvertechnológia gyakorlati alkalmazása, a fejlesztők ezen területen történő tapasztalat szerzése. A program másodlagos célja, hogy a megrendelő, illetve a programot használó személy maximálisan kiélvezze annak használatát és egy jót szórakozzon. A program során egy karaktert fog irányítani a játékos egy hatalmas bányában, amely sok kis teremmel rendelkezik. A játékos célja az lesz, hogy minél hamarabb megtalálja hatalmas kincset, mely a barlang legmélye rejt. További leírás a program specifikációjában lesz olvasható. 1.1.2. A fejlesztőkörnyezet
A program fejlesztéséhez a Sun Microsystems („Sun”) által tervezett Java nyelvet választottuk, mert számos platformon futtatható, illetve megtalálható. A forráskódok elkészítéséhez pedig szintén a Sun által kifejlesztett NetBeans fejlesztőkörnyezet használjuk fel. Az UML diagramok tervezéséhez A Netbeans beépített UML szerkesztőjét, A Visual Paradigm For UML illetve a Visual Paradigm SDE for NetBeans alkalmazásokat választottuk. Ezen eszközök képesek a forward és reverse engineering -re, vagyis az uml diagramokból forráskódot generálni, és a forráskódban történő változtatásokat a modellen alkalmazni. A fejlesztés során ügyelni kell a megrendelő, a Budapest Műszaki és Gazdaságtudományi Egyetem („BME”) azon kérésére, hogy a HSZK - ban található személyi számítógépeken programunk fordítható illetve futtatható legyen. Mivel ezeken a gépeken a JDK 1.4-es verziószáma található meg, így az implementáláskor ezek szerint fogunk eljárni. Az egyes egységek tesztelésére a JUnit (http://junit.org) egységtesztelő programot használjuk. A forráskódok dokumentálására a Javadoc környezetet választottuk, mert a NetBeans erre beépített megoldással szolgál nekünk, illetve könnyedén lehet generálni belőle olvasható dokumentációt. Az egész projekt leírására pedig egyszerű szövegszerkesztőt, illetve az OpenOffice irodai csomagot választottuk. A munkánk naplózására táblázatkezelőt alkalmazunk. 1.1.3. A futtatáshoz szükséges környezet
Java futtatókörnyezettel rendelkező számítógép, amely azt futtatni is képes. A Sun ajánlása szerint ez egy minimális 166MHz-es gép, minimum 32 MB fizikai memóriával. A program végleges mérete elhanyagolható lesz a mai átlagos rendszerek háttértár-kapacitásához képest, de ez csak egy becslés. 1.1.4. Felhasználói felület
A program végső változata grafikus felhasználói felülettel fog rendelkezni. A programot a felhasználó a billentyűzet segítségével vezérelheti. 1.1.5. Minőségi tényezők
Teljesítmény: A fentebb meghatározott minimális rendszerkövetelményen a program megfelelő és élvezhető gyorsasággal fusson úgy, hogy a játékélményt ne befolyásolja. Újrafelhasználhatóság: Újrafelhasználhatóság szempontjából fontosnak tartottuk, hogy a felhasználói grafikus felületet és a motort egymástól különválasszuk. Emiatt lehetőségünk lesz a grafikus felhasználói felület egyszerű cseréjére, illetve annak más programban való felhasználására. Rugalmasság: Mivel a Java nyelv számos platformon jelen van, így elvileg apróbb módosításokkal és finomhangolással bármely grafikus megjelenítővel és irányítóval rendelkező 2009. Február 18.
2
CSK-1
eszközön használható lenne. Felhasználhatóság: A program használatához külön betanításra nincsen szükség. Alapszintű számítástechnikai és magyar nyelvi ismeretekkel rendelkező személy képes lesz használni a felhasználó kézikönyv elolvasása nélkül is. Ha azonban ez mégsem menne, akkor elolvashatja a kézikönyvet. A magyar nyelvet nem beszélő érdeklődök számára lehetőséget nyújtunk a felhasználói felület angol nyelven történő használatához. Ezek mellett e-mailben támogatást nyújtunk a szoftverhez. 1.1.6. A szoftver minősítése
A program minősítését annak futtatásával lehet elvégezni, mennyire egyezik a követelményekben leírtakhoz. Valamint a forráskód és a modell összevetésével. A hibák elkerülése végett végső tesztelés alá vetjük programunkat, valamint külső tesztelőket is felhasználunk a legjobb minőség érdekében. 1.1.7. Kibocsátás
Programunkat először a projekt menedzser („konzulens”) előtt fogjuk bemutatni, majd a nagyközönség számára nyilvánosan hozzáférhetővé tesszük.
1.2. Projekt terv 1.2.1. A fejlesztőcsapat
Név
Feladatkör
Lágler Krisztián
Csapatvezető, tervezés, implementálás
Olasz Ákos
Tervezés, implementálás
Panyiczky Péter Zoltán
Dokumentáció, implementálás, nyelvi támogatás tervezése és implementálása
1.2.2. Az életciklus modell
Az életciklus modell során a fejlesztőcsapat legelső feladata a program megtervezése lesz. Ennek során különböző modelleket építenek fel, mely nagy segítséget jelent majd a későbbi fejlesztésekhez. A modellek átláthatóvá teszik, hogy a program milyen módon épül fel és hogyan működik elméletben. A jól megalkotott modellek segítségével pedig egyszerűen elkészíthető a program váza („szkeleton”). Ezek után kialakul a prototípust, melyben már konkrét algoritmusok is vannak. A prototípust már fel lehet használni arra, hogy a program tesztelését el lehessen kezdeni. Ekkor a különböző funkcionális és esetleges programozási hibákat könnyen ki kell szűrni. Fontos szempont a könnyű tesztelésnél, hogy a be-, illetve kimenő tesztadatokat állományokból, illetve állományokba lehessen írni, hogy leegyszerűsödjön és felgyorsuljon a kiértékelés. Ha a prototípust megfelelően le lett tesztelve, illetve a fejlesztőcsapat megfelelőnek találta az eredményeket, akkor következhet a következő lépés: a grafikus felhasználói felület kialakítása. Ebben a ciklusban is nagy hangsúlyt fektetünk a tesztelésre és annak kiértékelésére. Valamint nagyon fontos, hogy a felület ergonomikus legyen és a játékos könnyen értelmezni és használni tudja azt. S ezután készen van a program első változata. Mivel a BME csak ezt rendelte meg, így ezek után a dokumentációt a forráskódokkal eljuttatjuk a konzulensnek. 1.2.3. Szervezési struktúra
A csapat három tagból áll, mindenki más-más területen jeleskedik a szoftvertechnológia és 2009. Február 18.
3
CSK-1
programozástechnika területén. A feladatok kiosztásánál ügyeltünk arra, hogy mindenki saját területének megfelelő munkát kapjon, ugyanakkor a projekt célja a szoftver készítés folyamatában történő tapasztalatszerzés, ezért az egyes csapattagok kötelező jelleggel elvégeznek olyan feladatokat is, amely területen kevés gyakorlattal rendelkeznek. A főbb irányvonalakat, feladatok kiosztását és a csapattagok szerepvállalását személyes találkozón vitatjuk meg. Egy ilyen jellegű konzultáció hatékonyabban lendíti előre a projekt aktuális szakaszát. Ezen találkozók alkalmával döntés születik a feladatokról, azok kiosztásáról, határidőkről, melyeket a naplóban pontosan rögzítünk. További kapcsolattartásra és a fejlesztés hatékonysága érdekében a következő programokat, szolgáltatásokat használjuk: e-mail: elektronikus levélhez akkor fordulunk, ha olyan anyagot, információt kell megosztani a csapattagokkal, melyek nem sürgősek, illetve ilyen módon egyszerűbb a célba juttatása. MSN: Leginkább a fontosabb információk azonnali megosztására használjuk. Kevésbé hatékony mint a személyes konzultáció, mindazonáltal a projektben résztvevő fejlesztők száma miatt,még mindig hatékony segédeszköz az együttműködésre. Mobiltelefon: ha valamelyik csapattag éppen nem ül gép előtt, akkor telefonon keresztül 0-24 elérhetőnek kell lennie. Google Code: A Google Code részlegén létrehoztunk a projektünknek egy projektet, mellyel könnyen és egyszerűen tudjuk követni a projektünket érintő változásokat. Be tudjuk jelenteni egymásnak a talált hibákat, illetve a forráskódunkat, dokumentációinkat és más fájlokat tudunk tárolni ebben a szolgáltatásban. A feltöltött fájlokhoz verziókövető rendszert is kapunk, amely megkönnyíti az egyes forráskódok, valamint dokumentumok különböző verzióinak követését. 1.2.4. Fejlesztési ütemterv
A program fejlesztésének három mérföldköve van. Szkeleton: A megfelelő modell megalkotása után egyszerűen felépíthetjük programunk vázát. Prototípus: A majdnem teljes változatból már csak a grafikus felhasználói felület hiányzik. Ez a változat már alkalmas a tesztelésre. Grafikus felhasználói felület: A grafikus felhasználói felület elkészült és késznek mondható szoftverünk. 1.2.5. Határidők
2009-02-19 2009-02-19 2009-02-26 2009-03-05 2009-03-12 2009-03-19 2009-03-26 2009-04-02 2009-04-09 2009-04-16 2009-04-23 2009-04-30 2009-05-07 2009-05-14
14:00 – csapatok regisztrációja Követelmény, projekt, funkcionalitás - beadás Analízis modell kidolgozása 1. - beadás Analízis modell kidolgozása 2. - beadás Szkeleton tervezése - beadás Szkeleton - beadás Prototípus koncepciója - beadás Részletes tervek - beadás Prototípus - beadás Grafikus felület specifikációja - beadás Grafikus változat - beadás Összefoglalás - beadás
1.2.6. Dokumentáció
Külön dokumentáció készül a fejlesztőknek és a felhasználóknak. A fejlesztő dokumentáció az a 2009. Február 18.
4
CSK-1
dokumentáció, amelyet most olvas. Ebben rögzítjük le a fejlesztéshez elengedhetetlen információkat forráskódokat, modelleket. A felhasználói dokumentációban segítséget nyújtunk a mezei felhasználónak, hogyan telepítse, illetve használja a programot. Azért szükséges a két dokumentációt különválasztani, mert az egyszeri felhasználót egyáltalán nem érdekli, hogy a fejlesztők hogyan jutottak el a kész termékig, egyszerűen csak megérteni szeretnék, hogyan használják azt. 1.3 Feladat specifikáció
Az indián kincskereső a barlangban gyémántok után kutat. A játékos feladata a karakter irányításával megfelelő mennyiségű gyémánt összegyűjtése. A gyémántokhoz a barlangban történő mozgással, vájással, robbantással, illetve sziklák görgetésével juthat el, miközben különböző akadályokat és veszélyes lényeket kell elkerülnie. A barlang mezőkre oszlik fel, melyek az egész barlangot lefedik. A karakter ezeken a mezőkön lépdelve mozoghat. Egy mező lehet üres vagy elfoglalhat föld, szikla, gránit, gyémánt, robbanószer, szörny, kijárat vagy maga a kincskereső indián. A karakter az aktuális mezőről, csak olyan szomszédos mezőkre léphet, amelyen nincsen szikla, gránit vagy robbanószer. Amennyiben a szomszédos mező föld, azt az indián kiássa, és az így keletkezett üres mezőre lép. A talajon álló sziklát el lehet tolni, amennyiben az új helyén nincs semmilyen akadály. Szikla eltolásával a játékos a szikla helyére lép át, miközben a szikla a tolás irányába eső szomszédos üres mezőre kerül. Az indián gyémántot tartalmazó mezőre lépve azt felszedi, és az így keletkezett üres mezőt foglalja el. Az indián a barlangba való belépéskor robbanószerrel lehet felszerelkezve. A karakter annyi robbanószerrel rendelkezik, amennyi az aktuális szint végrehajtásához szükséges. A barlangban már nem juthat hozzá többhöz, mint ami belépéskor nála van. A robbanószer élesítését követően a karakter az általa korábban elfoglalt szabad mezőre lép vissza. Egy lerakott robbanószert felszedni, eltolni nem lehet, az kis idő után felrobban, melynek hatására a hatósugarán belül lévő mezők megsemmisülnek, üressé válnak. A barlangban lévő sziklák és gyémántok csak akkor maradnak a helyükön, ha alá vannak támasztva bármely más objektummal. Ennek hiányában a gravitáció hatására leesnek. A szikla vagy gyémánt addig esik, amíg nem ütközik akadályba. A sziklák és gyémántok oldalsó támasz hiányában legördülnek egymásról akkor, ha az alattuk lévő mezőn is szikla vagy gyémánt áll. A gördülés addig folytatódik amíg oldalsó akadályba nem ütközik. Amennyiben egy zuhanó, vagy gördülő szikla, vagy gyémánt élőlénnyel ütközik az meghal. A mozgó objektum az elpusztult élőlény helyére lép. A barlangban különböző veszélyes lények fordulhatnak elő. A játék véget ér, ha egy lény a játékos által elfoglalt mezőre lép. Egyes lények képesek mozgásuk során osztódni. Van amelyik üldözi a játékost, illetve van amelyik gyémánttá változik, ha szikla esik rá. A kincskereső meghal ha szikla vagy gyémánt zuhan-, gördül rá, hatósugáron belül bomba robban, vagy veszélyes lénnyel érintkezik. Adott mennyiségű gyémánt összegyűjtése után megnyílik a barlang kijárata, ezen átjutva a következő barlangban lehet folytatni a kincskeresést. 1.4 Szótár
Akadály : Nem üres mező szinonimája. Aktuális barlang : Az a barlang, amelyben az indián kincskereső tartózkodik. Aktuális mező : Az a mező a játéktéren, amelyet az indián kincskereső kitölt. Alátámasztva :Egy objektum alá van támasztva, ha az alatta levő mezőben akadály van. Alatta : Egy mező déli irányú szomszédja. 2009. Február 18.
5
CSK-1
Áll : Itt a kitölt, elfoglal szinonimája. Ás : Itt a vájás szinonimája. Barlang : Maga a játéktér. Ezen a területen belül mozoghat az indián kincskereső. Belépéskor : A pálya kezdésének időpontja. Bomba : Itt a robbanószer szinonimája. Élesítés : A robbanószer lerakása, a visszaszámlálás kezdete. Élőlény : A kincskereső indián, vagy bármilyen szörny. Esik : Egy objektum esik, ha mozgása során az alatta levő üres mezőkbe megy át. Felette : Egy mező Északi irányú szomszédja. Felszed : Egy mezőn lévő tárgy eltűnik, az a karakter birtokába kerül. Foglal : Itt a kitölt szinonimája. Függőlegesen : Észak-déli irányban. Gördülés : Egy objektum oldalsó támasz hiányában, egyik szomszédja és az az alatti mező üres. Ekkor az objektum gördülését azon mozgásának nevezzük, amely során ezen üres mezőkben mozog először vízszintes – majd függőleges irányban. Görgetés : Itt a tolás szinonimája. Hatósugár : Egy mező hatósugara a játéktér azon területe, amely az adott mezőből és annak közvetlen, függőleges és vízszintes szomszédaiból áll. Játékos : Az indián kincskeresőt irányító személy. Karakter : Az indián kincskereső. Kijárat : Olyan különleges mező a játéktéren, amelyre lépve az indián kincskereső az aktuális barlangból egy másik barlangba jut át. Kis idő után : Előre meghatározott időintervallum, kb 3 másodperc (becslés). Lép : Egy objektum az általa kitöltött mezőről egy szomszédos mezőre megy át. Meghal : Egy élőlény, az indián kincskereső vagy egy lény, megszűnik a pálya részének lenni. A karakter halála a játék végét vonja maga után. Megsemmisül : A mezőt elfoglaló objektum megszűnik a pálya részének lenni, a mező üressé válik. Amennyiben a megsemmisülést megelőzően élőlény állt a mezőn az meghal. Mező : A játéktér azon legkisebb területe, amelyet egyszerre csupán egy objektum tölthet ki. Objektum : Objektum lehet az indián kincskereső, szörny, föld, szikla, gránit, gyémánt, robbanószer, kijárat. Oldalán : Egy mező jobb vagy bal oldali irányban közvetlen utána következő mező. Iránytól függően megkülönböztetjük a mező jobb oldalát, a bal oldalától. Oldalsó akadály : Olyan akadály, amely egy mező vízszintes irányú szomszédja, vagy ugyanezen irányú szomszéd alatt helyezkedik el. Oldalsó támasz : Egy mező oldalsó támasszal rendelkezik, ha a mellette levő mezőben akadály van, vagy ugyanazon az oldalon levő szomszédos mező alatt akadály van. Pálya : Itt a barlang szinonimája. Szint : A szinthez tartozik egy barlang, és a barlangban lévő objektumok. Szint végrehajtása : A játékos megszerzi a szükséges mennyiségű gyémántot, és eljut a barlang kijáratáig.
2009. Február 18.
6
CSK-1
Szomszéd : Egy mező (vagy objektum) szomszédai, azon mezők ( illetve az azokat elfoglaló objektumok), amelyek a mezőt vízszintesen, vagy függőlegesen közvetlenül követik. Szörny : Itt a lény szinonimája. Tol : Egy objektum egy másik objektumot eltol, ha mind a két objektum ugyanazon irányban egyet lép. Üres mező : Egy mező üres, ha üreges, vagyis nem foglalja el semmilyen más objektum. Ütközik : Egy objektum mozgása során ütközik, ha olyan mezőre lépne át, amelyet egy másik objektum már kitölt. Vájás : Egy földdel teli mező üregessé, üressé válik. Vízszintesen : Kelet-nyugati irányban Zuhan : Itt az esik szinonimája. 1.5. Essentian Use Case ek 1.5.1 Diagramok
1.5.2 Use Case leírások
Use Case
Start new game
Actor
Player
Leírás
A játékos új játékot kezd.
Use Case
Move
Actor
Player
Leírás
A játékos mozgatja a karatert a barlangban.
2009. Február 18.
7
CSK-1
Use Case
Roll
Actor
Player
Leírás
A játékos úgy mozgatja a karaktert, hogy a mozgás irányában lévő görgethető akadályt eltolja.
Use Case
Dig
Actor
Player
Leírás
A játékos olyan mezőre mozgatja a karaktert amelyet föld tölt ki, akkor azt kiásva az így keletkezett üres mezőre lép.
Use Case
Set explosives
Actor
Player
Leírás
A játékos bombát helyez el a azon a mezőn amelyet a karakter kitölt. A robbanószer élesítését követően az indiál az általa korábban elfoglalt szabad mezőre lép vissza.
2009. Február 18.
8
CSK-1
Napló Dátum
Alany
Tárgy
2009.02.17 13:15 - 14:30
Panyiczky, Olasz, Lágler
Konzultáció, tárgya : feladatkiosztás döntések : - Olasz elkészíti a feladat részletes leírását. - Lágler Elkészíti a szótárat. - Olasz és Lágler együtt elkészití az essential use case modelleket. - Panyiczky elkészíti a Követelménydefiníciót és Projekt tervet.
2009.02.17 17:00 - 19:00
Olasz
Feladat leírás elkészítése
2009.02.17 19:00 - 00:00
Lágler
Feladat leírás átolvasása Szótár készítése.
2009.02.17 21:00 - 00:30
Panyiczky
Követelmény, projekt, funkcionalitás dokumentum elkészítése
2009.02.18 10:00 - 11:15
Lágler
Feladat leírás módosítása Szótár elkészítése
2009.02.18 11:45 - 13:40
Lágler
A leadandó követelmény, projekt, funkcionalitás dokumentum készítése a már meglévo anyagokból, amit Olasz, Panyiczky és Lágler Készített.
2009.02.18 13:40 - 14:40
Panyiczky
Követelmény, projekt, funkcionalitás dokumentum átolvasása és további javaslatok felvetése az egyes bekezdésekhez
2009.02.18 20:40 - 23:00
Lágler, Olasz
Konzultáció tárgya : essential use case és feladat specifikáció pontosítás döntések : - egy mezőn egyszerre csak egy objektum lehet - robbanószer élesítése után a karakter visszamegy az előzőleg elfoglalt pozíciójába - use case feliratok pontosítása
2009.02.18 23:00 - 23:30
Olasz
Feladat specifikáció véglegesítése
2009.02.18 23:00 - 00:00
Lágler
- Essential Use Case elkészítése. - Véglegesített feladatspecifikáció átolvasása.
Értékelés
A csapat tagjai úgy állapodtak meg hogy egyenlő mértékben osztoznak a kapott pontokon.
2009. Február 18.
9
CSK-1