07. Prototípus koncepciója - AdjustmentBeaver/szoftlab GitHub Wiki
Prototípus koncepciója
Változások
-
Kereszteződő sínek: Az eddigi megvalósításunk lehetővé teszi a keresztező sínek létrehozását. A funkcióval való bővítéshez módosítás nem szükséges.
-
Utasok felszállása: Ha az állomáson szállhatnak fel utasok, akkor amikor az állomással megegyező színű üres kocsi az állomáshoz ér, a vonat elejétől nézve az első ilyen színű kocsi feltöltődik. (Továbbiakban nem lesz üres.)
-
Szeneskocsi: Új osztályként felvesszük a szeneskocsit a TrainPart-ból leszármaztatva. Funkciója nincs, így a működést nem befolyásolja.
Osztálydiagramok



Szekvencia diagramok



Prototípus interface-definíciója
Az interfész általános leírása
Az interfész segítségével a szabványos bemeneten adhatunk meg parancsokat, aminek hatására a szabványos kimeneten eredmények jelennek meg. A teszteseteket így fájlból beolvasva előre elkészítve tudjuk lefuttatni, amivel automatizálhatjuk a tesztelést. A kimenetet egy elvárt kimenettel összehasonlítva tudunk meggyőződni a helyes működésről.
Bemeneti nyelv
new <palyanev>
-
Leírás: Betölti a megadott pályát.
-
Opciók: <palyanev>: a pálya azonosítója
load <mentesnev>
-
Leírás: Betölti a megadott mentésnek megfelelő pályát, illetve játékállapotot.
-
Opciók: <mentesnev>: a mentés azonosítója
save <mentesnev>
-
Leírás: Lementi az éppen betöltött pályát, illetve a jelenlegi játékállapotot.
-
Opciók: <mentesnev>: a mentés azonosítója
stop
-
Leírás: Szünetelteti a játékot.
-
Opciók: -
start
-
Leírás: Folytatja a szüneteltetett játékot.
-
Opciók: -
exit
-
Leírás: Kilép a játékból.
-
Opciók: -
step <lepesszam>
-
Leírás: <lepesszam> mennyiségű szimulációs lépést hajt végre.
-
Opciók: <lepesszam>: Ennyiszer hívja meg az időzítő step() metódusát - amely a szimulációs lépést végzi.
activate <node_azon>
-
Leírás: Megváltoztatja az azonosítóval megadott Node állapotát, ha ez lehetséges.
-
Opciók: <node_azon>: A Node-hoz tartozó azonosító
listNodes
-
Leírás: Kilistázza a pályán található csomópontokat.
-
Opciók: -
listTrains
-
Leírás: Kilistázza a pályához tartozó vonatokat.
-
Opciók: -
Pálya formátum
A pálya fájlok xml-ben lesznek tárolva, ennek sémáját az alábbi DTD írja le:
<!DOCTYPE level [
<!ELEMENT level (nodes,trains)>
<!ELEMENT nodes (node*)>
<!ELEMENT node (type, name, position, neighbours, color*)>
<!ELEMENT position (x,y)>
<!ELEMENT neighbours (neighbour_name*)>
<!ELEMENT trains (train*)>
<!ELEMENT train (trainPart*, startNode, startTime)>
<!ELEMENT trainPart (type, color*, speed*)>
<!ELEMENT type (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT x (#PCDATA)>
<!ELEMENT y (#PCDATA)>
<!ELEMENT neighbour_name (#PCDATA)>
<!ELEMENT color (#PCDATA)>
<!ELEMENT speed (#PCDATA)>
<!ELEMENT startNode (#PCDATA)>
<!ELEMENT startTime (#PCDATA)>
]>
Kimeneti nyelv
step <n>
-
Ütközés esetén: ROBBANÁS
-
Vonat csomóponthoz érése: <train_azon> - <next_node>
-
Utasok leszállása: <traincart_azon> UNLOAD
-
Utasok felszállása: <traincart_azon> LOAD
-
Pálya teljesítése: MAP_COMPLETED
activate <node_azon>
-
Váltó esetén kiírja az aktív útvonalat: <node_azon> <aktiv_irany>
-
Alagútszáj esetén: <node_azon> CONSTRUCTED/DESTROYED
listNodes
- Kilistázza a pályán található csomópontokat: <node_azon>
listTrains
- Kilistázza a pályához kapcsolódó vonatokat: <train_azon>
stop
- Sikeres végrehajtás esetén: STOP
start
- Sikeres végrehajtás esetén: START
new
-
Sikeres létrehozás: MAP_CREATED
-
Sikertelen létrehozás: ERROR_AT_MAPCREATION
save
-
Sikeres végrehajtás esetén: MAP_SAVED
-
Sikertelen végrehajtás esetén: ERROR_AT_MAPSAVING
load
-
Sikeres beöltés: MAP_LOADED
-
Sikertelen betöltés: ERROR_AT_MAPLOADING
Összes részletes use-case
| Use-case neve | start |
|---|---|
| Rövid leírás | Elindítja/folytatja a játékot. |
| Aktorok | user |
| Forgatókönyv | Ha a felhasználó szüneteltette a játékot, ezzel tudja folytatni a szimulációt. Ha új játékot indít, vagy betölt egy mentést, akkor a játék indítja el/folytatja a szimulációt betöltés után. |
| Use-case neve | stop |
|---|---|
| Rövid leírás | Megállítja a játékot. |
| Aktorok | user |
| Forgatókönyv | A felhasználó szüneteltetheti a játékot. Ha mentés történik, a játék szünetelteti a játékot. |
| Use-case neve | new |
|---|---|
| Rövid leírás | Betöltődik egy új játék. |
| Aktorok | user |
| Forgatókönyv | A felhasználó elindít egy új játékot. A pálya és a kezdőállapot betöltődik. (Opcionális: a játékos választhat szintet is.) Ha a játékos megnyer egy pályát, a játék betölti a következő szintet. Ha elveszíti, akkor a játék betölti ugyanazt a szintet. |
| Use-case neve | load |
|---|---|
| Rövid leírás | A játékos betölt egy tetszőleges mentést. |
| Aktorok | user |
| Forgatókönyv | A felhasználó kiválaszt egy mentést, és az alapján töltődik be egy adott pálya és játékállapot. |
| Use-case neve | save |
|---|---|
| Rövid leírás | A játékos elmenti a játék állását. |
| Aktorok | user |
| Forgatókönyv | A játékos elmenthet egy adott játékállapotot. Ekkor a játék a mentés idejére megáll, és elmentődik az aktuális állás. |
| Use-case neve | exit |
|---|---|
| Rövid leírás | A játékos kilép a programból. |
| Aktorok | user |
| Forgatókönyv | A játékos kilép a játékból. A program befejezi a szimulációt, és megfelelő módon leáll. |
| Use-case neve | activate |
|---|---|
| Rövid leírás | Speciális Node-okat vezérel. |
| Aktorok | user |
| Forgatókönyv | A felhasználói állíthatja a speciális Node-ok tulajdonságait (pl. váltó, alagútszáj), ha a feltételek megfelelőek. |
| Use-case neve | step |
|---|---|
| Rövid leírás | Lépteti a játékot. |
| Aktorok | user |
| Forgatókönyv | A tesztelő ennek a segítségével szimulálhatja az időzítő működését. |
Tesztelési terv
| Teszt-eset neve | Vonatok ütköznek |
|---|---|
| Rövid leírás | Vonatok ütközésének vizsgálata |
| Teszt célja | Az ütközés sikeres lezajlásának vizsgálata. Az ütközés utáni műveletek végrehajtása. |
| Teszt-eset neve | Vakvágányra futás |
|---|---|
| Rövid leírás | Egy vakvágányra futott vonat felrobbanása. |
| Teszt célja | A vonatot vakvágányra terelve, az valóban felrobban, a játék véget ér. |
| Teszt-eset neve | A váltó helyes működése |
|---|---|
| Rövid leírás | A váltó állíthatóságának és irányának tesztelése. |
| Teszt célja | Annak vizsgálata, ha vonat tartózkodik a váltón, akkor az nem állítható, különben a megfelelő irányban való továbbhaladásának vizsgálata. |
| Teszt-eset neve | Az alagút helyes működése |
|---|---|
| Rövid leírás | Az alagútszáj felépítésének és lerombolásának tesztelése. |
| Teszt célja | Annak vizsgálata, hogy egy alagútszáj nem rombolható le, ha egy vonat az alagútban tartózkodik és csak a megengedett (2db) számú alagútszáj építhető fel. |
| Teszt-eset neve | Utasok felszállása |
|---|---|
| Rövid leírás | A kocsi állomáshoz érésénél az utasok felszállása a kocsira. |
| Teszt célja | Ha az állomáshoz a megfelelő színű első (a vonat elejétől nézve) üres kocsi ér, akkor az állomáson tartózkodó utasok szálljanak fel. Ha nem felelnek meg a követelmények, akkor ne történjen meg a művelet. |
| Teszt-eset neve | Utasok leszállássa |
|---|---|
| Rövid leírás | A kocsi állomáshoz érésénél az utasok szálljanak le a kocsiból, ha az lehetséges. |
| Teszt célja | Az utasok leszállási szabályának megfelelően történik-e a leszállás a vonatról. (Csak abban az esetben történhet meg.) |
| Teszt-eset neve | Játék megnyerése |
|---|---|
| Rövid leírás | Játék megnyerése, az összes kocsi kiürítése. |
| Teszt célja | Az összes kocsi kiürülésével és a játék véget érésének tesztelése. |
| Teszt-eset neve | Hosszú vonat a csomópontokon. |
|---|---|
| Rövid leírás | A vonatok megfelelő irányítása. |
| Teszt célja | A több csomóponton átívelő vonatok megfelelően lesznek-e elirányítva. |
| Teszt-eset neve | Vonatok elindítása |
|---|---|
| Rövid leírás | Megfelelő időben való vonatindítás. |
| Teszt célja | Annak tesztelése, hogy a vonatokat a meghatározott időben valóban elindulnak-e. |
| Teszt-eset neve | Pálya betöltése |
|---|---|
| Rövid leírás | A pálya fájlból való betöltésének tesztelése. |
| Teszt célja | Vizsgálni, hogy minden pályaelem a megfelelően betöltődik-e. |
| Teszt-eset neve | Játékállás mentése |
|---|---|
| Rövid leírás | A játékállás mentésének sikeressége, helyessége. |
| Teszt célja | A mentett játék a megfelelő értékeket tartalmazza, sikeres volt-e a mentés. |
| Teszt-eset neve | Játékállás betöltése |
|---|---|
| Rövid leírás | Korábban lementett játékállás betöltésének a sikeressége, helyessége. |
| Teszt célja | A betöltés során minden korábban mentett adat a megfelelően töltődik-e be. Nem vesznek-e el elemek, a játék folytatható állapotban van. |
| Teszt-eset neve | Kereszteződésben történő ütközés |
|---|---|
| Rövid leírás | A vonatok kereszteződésben való ütközésének vizsgálata. |
| Teszt célja | A vonatok ütközhetnek kereszteződésekben is. A teszt ennek a sikerességét vizsgálja. |
Tesztelést támogató segéd- és fordítóprogramok specifikálása
A tesztelést szövegösszehasonlító programmal tudjuk automatizálni. Az előre megírt teszteket lefuttatva, majd az arra kapott kimenetet az elvárt kimenettel összehasonlítva egy program képes ellenőrizni, hogy volt-e a tesztelés során valami hiba, illetve hol volt az a hiba, eltérés a futás során. A bemeneti parancsok a játék működését tekintve elemiek, így minden szcenárió tesztelhető.
Napló
| Kezdet | Időtartam | Résztvevők | Leírás |
|---|---|---|---|
| március 22. 19:30 | 3 óra | Dobai, Dömötör, Földvári, Telek, Kövér | Változások és koncepció alapvető megbeszélése. |
| március 25. 18:00 | 0,5 óra | Földvári | Teszt-esetek kifejtése |
| március 25. 21:30 | 2,5 óra | Telek | Interfész leírás, tesztelést támogató eszközök, osztály és szekvencia diagramok módosítása |
| március 25. 21:00 | 2 óra | Dobai, Kövér | Osztály és szekvencia diagramok aktualizálása |
| március 26. 20:10 | 1 óra | Földvári, Kövér | Kimeneti nyelv |
| március 26. 20:10 | 1 óra | Telek | Pálya fájl DTD |