07. Prototípus koncepciója - AdjustmentBeaver/szoftlab GitHub Wiki

Prototípus koncepciója

Változások

  1. 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.

  2. 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.)

  3. 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

Fő osztálydiagram

Node leszármazott típus

Node leszármazott típus

Szekvencia diagramok

Map Building

Unloading

Loading

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