„BPROF:2dm” változatai közötti eltérés
Jkv1 (vitalap | szerkesztései) (→Adattárolás) |
Jkv1 (vitalap | szerkesztései) (→Eredeti, elvetettt ötlet) |
||
173. sor: | 173. sor: | ||
===Eredeti, elvetettt ötlet=== | ===Eredeti, elvetettt ötlet=== | ||
github, miert vetetted el | github, miert vetetted el | ||
+ | Githubon organizációban tárolt adatok. Ez se informatikailag, se IT biztonságilag nem volt megfelelő ötlet, ám nem kellett adatbázist fenntartani hozzá | ||
+ | |||
===Lokális adattárolás választott formája=== | ===Lokális adattárolás választott formája=== | ||
*A JSON fájlok egyszerű olvashatósága, értelmezhetősége miatt bárki létre tud hozni saját témát, nyelv sémát.<br> | *A JSON fájlok egyszerű olvashatósága, értelmezhetősége miatt bárki létre tud hozni saját témát, nyelv sémát.<br> |
A lap 2022. december 3., 12:20-kori változata
Ez a szócikk a "Rendszertervezés" tantárgy keretében keletkező dokumentum, mely része a szakdolgozat mellékleteinek. Tartalmazza a felhasznált technológia részletes leírását, informatikai felépítését. A dokumentum a reprodukálhatóság elősegítéséhez készült
Tartalomjegyzék
Szakdolgozat részei
- GTS (Graphical Test Software), ez a tesztek lejátszására kifejlesztett szoftver
- GTDS (Graphical Test Designer Software), ez a tesztek tervezésére kifejlesztett szoftver
- Theme4GTS ,ez a témák létrehozására fejlesztett szoftver
- Language4GTS ,ez a nyelvek létrehozására fejlesztett szoftver
Fogalmak
(potenciális változók a kódhoz)
- puzzle: X-szer Y-os háló, melyben a sorfejléc (X) és oszlopfejléc (Y) attribútumok alapján kell elhelyezni az odaillő válaszkártyát
- X(i): sorfejléc, mely megadja a válaszkártya1. attribútumát
- Y(j): soszlopfejléc, mely megadja a válaszkártya2. attribútumát
- válaszkártya(k): képkocka, melyet el kell helyezni a megfelelő kockájába a hálónak
- megoldástér(i,j,k):
- keretrendszer: puzzle megjelenítő szoftver
- log: minden tevékenység (pl. egérmozgás, billentyű-leütés, billentyű-kombináció) feljegyzése egy fájlban, dátummal felcímkézve (vö. https://miau.my-x.hu/mediawiki/index.php/Excel-makro#Tanfolyami_vez.C3.A9r-feladatok)
- kiértékelés: válaszkártyák helyének helyességének ellenőrzése
- ...
- teszt:
- hiba:
- játék:
- ...
- rendszer/réteg/modul/alrendszer/szoftver...
Megrendelői kezdeményezés
Létezik egy 2DM-játék (https://miau.my-x.hu/miau/254/2dm_kemia_demo/), amelyben a feladat egy 3x3-as* hálóban különféle képeket elhelyezni az oszlop- és sor-fejlécek alapján. A létező 2DM-játék log-ja a vágólapra keletkezik a JavaScript lehetőségei mentén. Az új rendszerben a sebezhetőségek minimalizálása, csalás minden mennyiségű kizárása a cél.
Feladat:
- Új játék tervezését és
- futtatását támogató keretrendszer kialakítása úgy, hogy
- a keretrendszer támogassa a teszt megtervezését,
- az adat-megjelenítést/adatbevitelt,
- a teszt megírását és
- a log-elemzést (vö. https://miau.my-x.hu/mediawiki/index.php/Excel-makro - Tanfolyami vezérfeladat).
- a keretrendszer által olyan output kialakítása, mely a jelenlegi 2DM-megoldás által azonnal futtatható
Nem feladat:
- online kollaboratív munka támogatása
- adatbázis-alapú megoldás kialakítása
Jelenlegi 2DM játék
Struktúrája: A jelenleg már elkészült 2DM játék adatbeolvasását,adatstruktúráját ki kell nyomozni annak érdekében, hogy a dolgozatban készülő játék kompatibilis lehessen vele.
Nyomozás lépései:
- https://www.cyotek.com/downloads/info/setup-cyowcopy-1.9.0.822-x86.exe alkalmazás segytségével letöltöttem a https://miau.my-x.hu/miau/271/2dm/ weboldal összes fájlját (https://github.com/kje-pitlik/2dm-source).
- letöltött adatok: img/,00m.png,03-00.png,03-30.png,03-49.png,03h.png,12-00.png,12-30.png,12-49.png,12h.png,18-00.png,18-30.png,18-49.png,18h.png,30m.png,49m.png,AD_CLOCK.jpg,auth.png,auth_alairas.png,auth_arc.png,auth_dns.png,auth_gepeles.png,auth_hang.png,auth_irisz.png,auth_kez.png,auth_retina.png,auth_ujj.png,BLANK_BLANK.png,BLANK_C1.png,
BLANK_C2.png,BLANK_C3.png,BLANK_R1.png,BLANK_R1_BLANK_C1.png,BLANK_R1_BLANK_C2.png,BLANK_R1_BLANK_C3.png,BLANK_R2.png,BLANK_R2_BLANK_C1.png,BLANK_R2_BLANK_C2.png,BLANK_R2_BLANK_C3.png,BLANK_R3.png,BLANK_R3_BLANK_C1.png, BLANK_R3_BLANK_C2.png,BLANK_R3_BLANK_C3.png,BRW.png,circle.png,COIN_1E.png,COIN_20C.png,COIN_2C.png,COLOR_DOT.jpg,COLOR_FLAG.jpg,COLOR_SHAPE.jpg,COLOR_TETRIS.jpg,DIR_B.png,DIR_BC.png,DIR_BL.png,DIR_BR.png,DIR_C.png,DIR_L.png,DIR_M.png, DIR_MC.png,DIR_ML.png,DIR_MR.png,DIR_R.png,DIR_T.png,DIR_TC.png,DIR_TL.png,DIR_TR.png,dot_1.png,dot_2.png,dot_3.png,EUR_COIN.jpg,favicon.ico,flag1.png,flag1_BRW.png,flag1_GRW.png,flag1_GRY.png,flag2.png,flag2_BRW.png,flag2_GRW.png,flag2_GRY.png, flag3.png,flag3_BRW.png,flag3_GRW.png,flag3_GRY.png,FLAG_IRL.png,FLAG_SMR.png,FLAG_SVK.png,FRENCH_CARD.jpg,GRW.png,GRY.png,hearts.png,hearts_jack.png,hearts_king.png,hearts_queen.png,hexagon.png,IRL_1E.png,IRL_20C.png,IRL_2C.png,jack.png,king.png, LArrow.png,logo.jpg,pikes.png,pikes_jack.png,pikes_king.png,pikes_queen.png,queen.png,RArrow.png,SMILEY_DIR.jpg,SMR_1E.png,SMR_20C.png,SMR_2C.png,SVK_1E.png,SVK_20C.png,SVK_2C.png,tetris_1.png,tetris_11.png,tetris_12.png,tetris_13.png,tetris_2.png, tetris_21.png,tetris_22.png,tetris_23.png,tetris_3.png,tetris_31.png,tetris_32.png,tetris_33.png,tiles.png,tiles_jack.png,tiles_king.png,tiles_queen.png,triangle.png,TTT_E1.png,TTT_E2.png,TTT_E3.png,TTT_M1.png,TTT_M2.png,TTT_M3.png, - card-design.css,- carousel.js, - gameProperties.js, - gameScreenEvents.js, - index.htm, - index.js, - style.css, - util.js
- ebből egyetlen egy 2DM-játékhoz tartozó objektumok (vö. *BLANK*): ???
- egy játékra egyszerűsített manuálisan lebutított saját lokális verzió tesztelése
- régi 2DM-játék által igényelt specifikációk véglegesítése
- egy régi 2DM-játék (értékes tartalommal történő) manuális előállítása a specifikációk alapján az új játék fejlesztője által
- manuálisan készített saját játék tesztelése
- ezen manuális saját játék új keretrendszerben való reprodukálása és az output tesztelése
Rendszer megrendelővel egyeztetett követelményei
- optimális (tesztelt):
- windows 11
- Intel Core i5 11th gen
- 16GB ram
- választott technológiák:
- Programnyelv: C# (verzio: C# 10.0,net6.0)
- lokális adattárolás: JSON
- publikus adattárolás: Firebase NoSQL adatbázis
Egyéb funkciók
- UI személyre szabása előre elkészített, akár a felhasználók által személyre szabott téma segítségével - (színvilág/színharmónia nem ellenőrzött, a téma tervezőjének kell figyelnie arra, hogy a felhasznált színek nem olvadnak egybe egymással)
- nyelvek támogatása, akár a felhasználók által definiált szótár segítségével - (szótár helyessége nem ellenőrzött, nincs kizárva akár a halandzsa nyelv használata sem)
Folyamatábrák
- Teszt tervezésének folyamatábrája:........
- Teszt megírásának folyamatábrája:........
- Teszt kiértékelésének folyamatábrája:........
https://miau.my-x.hu/miau/292/2dm_figures/ folyamatabrak lesznek
IT biztonsági kérdések
- kulcsok tárolása a forráskódban? https://itnext.io/how-to-store-passwords-and-api-keys-in-project-code-1eaf5cb235c9
- Hálózaton keresztül történő adatátvitel feltörhetősége
- C# visszafejtése JetBrains dotPeek szoftver segítségével: https://miau.my-x.hu/mediawiki/index.php/BPROF:Csharp_Visszafejt%C3%A9se
- Adatbázishoz való hozzáférés kiosztása
- JSON alapú adattárolás megfelelősége
licenszelés
A szoftver licensszel való védése már egy erős IT biztonsági lépés.
Ingyen kellene adni, mert nem tartom reálisnak, hogy a tanárok/iskolák erre költenének. -> önkormányzatoknak kellene ezeket managelni?
ki kaphat licenszt?
Adatbázis (Firebase):
_______________________________ | licensz tulaj | licensz kód | ############################### | ............. | ........... | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Amelyik kód bent van az adatbázisban a megfelelő rekordokkal, az hozzáférhet a programhoz
licensz generálása
Szerveren° futtatandó scriptnek kellene kérésre generálnia licensz kulcsokat, és azokat eltárolni a Firebase-s adatbázisban
° milyen szerveren?
Szoftverben használt csomagok és azok licenszeik
- NewtonSoft.Json 1.0.2 (https://www.newtonsoft.com/json) - https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md
- Profanity.Detector 0.1.8 (https://github.com/stephenhaunts/ProfanityDetector) - https://github.com/stephenhaunts/ProfanityDetector/blob/main/LICENSE
- FireSharp 2.0.4
- Octokit 4.0.1
Log rendszer
A rendszer minden felhasználói tevékenységet feljegyez mind fejlesztési, mind a csalás elkerülése érdekében. Jelenleg logolható:
- app minimalizálása, bezárása, teszt elindítása
Tervezett funkciók:
- internet használat elemzés (van-e esetleg olyan kulcsszavú keresés, mint amilyen szavak/kifejezések vannak az éppen aktív teszt fájljaiban?)
- egérmozgás elemzés (mennyire határozott a teszt író -> túl nagy határozottság akár azt is jelentheti, hogy valahonnan megszerezte a megoldásokat a teszthez ?)
- ismert közösségi,csevegésre használt alkalmazások meg vannak-e nyitva (Messenger,Discord,facebook.com,Skype,Teams stb), ezek csalásra adhatnak lehetőséget
- külső meghajtók vannak-e csatolva
- adat mozgatás történt-e a számítógépen a teszt írása közben (x lokációról y lokációra való fájl mozgás)
- operációs rendszerre telepített képfelismerési program detektálása
- távolról van-e vezérelve a gép
- képernyőkép készítésének logolása
- automatikus egér mozgató (ha van ilyen) auto clicker detektálása
- ...
Rendszerspecifikáció
Ajánlott irodalom/demo/minta: http://centroszet.hu/tananyag/ - pl. http://centroszet.hu/tananyag/szervezes2/615_rszletes_rendszerterv.html
Logikai rendszerterv
Fizikai rendszerterv
Program specifikáció
A követekző alfejezetben fogom összegyűjteni a program különféle specifikációját
User interface
Választott UI technológia
- WPF, xaml
- továbbá kiegészítés C# segítségével
Alternatívák
- WinUI
- Avalonia (https://avaloniaui.net/)
- WinForm
- MAUI (https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/)
- UWP
- Uno (https://platform.uno/)
- Blazor (https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor)
Adattárolás
Eredeti, elvetettt ötlet
github, miert vetetted el Githubon organizációban tárolt adatok. Ez se informatikailag, se IT biztonságilag nem volt megfelelő ötlet, ám nem kellett adatbázist fenntartani hozzá
Lokális adattárolás választott formája
- A JSON fájlok egyszerű olvashatósága, értelmezhetősége miatt bárki létre tud hozni saját témát, nyelv sémát.
- Alternatív megoldások elvetésének indoklása: Egyszerű txt fájlok is megfelelőek a feladatra, ám a JSON fájltípus által biztosított kulcs-érték adatszerkezet nagy segítséget nyújt a fájl adatbázis szerű átláthatósághoz, illetve a programmal való feldolgozhatósághoz.
Ez a saját téma/nyelvi csomag létrehozásának segítségül is szolgáló leírás.
- A keretrendszer az adatokat .json fájlokban tárolja. Ezek
- a beállítási adatok (kiválasztott téma illetve nyelv),
Unrestricted adattárolás választott formája
Firebase adatbázis
Konfiguráció
A rendszer konfigurálható paramétereit json fájlokban tároljuk, melyek a rendszer különböző életciklusaiban kerülnek betöltésre.
defaultConfig.json
Rendszer újraindításától lép életbe.
{ "data": [ { "theme": "dark.json", "language": "hu.json" } ] }
Nyelv fájl
Rendszer újraindításától, vagy új nyelv kiválasztásakor lép életbe.
{ "windowTitle": "Teszt kitöltése...", "loadTestFileBtn":"Teszt fájl betöltése", "startTestBtn":"Teszt indítása", "settingsBtn":"Beállítások", "nextBtn": "Következő", "previousBtn": "Előző", "saveBtn":"Mentés" }
Tesztadatok
A tesztfolyamat adatok betöltése után lép életbe. Az elérési útvonalnak a publikált képekre kell mutatni. EZ a githubos környezet eseten a githubra felötlött képekre mutat. (kérdés, válasz lehetőségek)
{ "puzzles": [ { "question": "Ide írjuk a kérdést", "correctGridOrder": { "1": "C:/Users/x/Y/kep1.png", "2": "C:/Users/x/Y/kep2.png", "3": "C:/Users/x/Y/kep3.png", "4": "C:/Users/x/Y/kep4.png", "5": "C:/Users/x/Y/kep5.png", "6": "C:/Users/x/Y/kep6.png", "7": "C:/Users/x/Y/kep7.png", "8": "C:/Users/x/Y/kep8.png", "9": "C:/Users/x/Y/kep9.png" } },… ] }
Esetleges többletadat figyelmen kívül hagyása.
Téma fájl
Rendszer újraindításától, vagy új téma kiválasztásakor lép életbe.
{ "data": [ { "backgroundColor": [ 120, 0, 100, 0 ], "buttonColor": [ 150, 0, 255, 0 ] } ] }
Értelmezése: argb színkódolást használ a szoftver, mely az Alpha, Red,Green és Blue színekből állít elő szint.
pl:
"backgroundColor" színkódjának értelmezése
120: Alpha
0: Red
100: Green
0: Blue
...
Hibaelhárítás
(note: milyen funkciok vannak amik segitenek a hibaelharitasban)
A log megjelenítése a felhasználónak. Log automatikus kielemzése (pár alap esetet tudok előre definiálni, pl.: rossz json struktura, rossz fajlkiterjesztes stb), és tanács adás a felhasználónak, hogy vajon mi történt, és mit tudna tenni, hogy legközelebb ne történhessen meg ilyen eset. A szoftver kísérletet tehet a hiba automatikus kijavítására ezekben az esetekben:
- hibás .json fájl struktúra -> amennyiben logikus hiba van (hiányzik "," ":" "{" karakter), pótolni tudja azokat. Természetesen tudomást ad a felhasználónak, hogy nem feltétlen a kívánt adat lett előállítva.
- Amennyiben olyan eset áll elő, ami nem pre-definiált, akkor support kontaktálás (email)
- ...
Előredefiniált hibák:
- ...
- ...
Perzisztencia
Egy konfig fájlba vannak írva a külön beállítások (nyelv, téma), tehát ezek perzisztensek. A teszt írása közben készülő, sérülésmentes logfájl segítségével (a teszt tervező engedélyével) vissza lehet állítani a folyamat utoljára elmentett állapotát, akár rendszer újraindulás után is
Tesztelés
Saját kód tesztelése
Github Actions szolgáltatás segítségével minden egyes Branch Merge (vö.: https://www.w3schools.com/git/git_branch_merge.asp?remote=github) alkalmával tesztelendő a kód, ezen és ezen szempontokból:
- Tud-e Buildelődni a projekt
- Sikeresen le tud-e futni egy próba játék?
- ...
Belső tesztelés
A keretrendszer megvalósításakor intézményen belüli, és kívüli személyeket felkértünk a tesztelésre. Kiosztott jogosultságokkal belső tesztelés folytatódott intézményen belül, melynek segítségével több hibát is felfedeztünk. privat kanban boardon (majd elkészül)
Nagy Richárd által említett automatizált teszt.(?)
Külső tesztelés
Publikus tesztelés, ezen a kanban boardon kell gyűjteni a problémákat a projekttel kapcsolatban: https://github.com/users/SiposPtr/projects/2
Fejlesztői saját 2DM-játékok
A fejlesztés során az alábbi tartalmi kihívások
1. játék
- X=3
- X1=...
- X2=...
- X3=...
- Y=3
- Y1=...
- Y2=...
- Y3=...
- válaszkártyák (9=3*3)
- ...
- ...
- ...
- ...
- ...
- ...
- ...
- ...
- ...
i. játék
- X>3
- Y>3
- X<>Y
Teszt katalógus
A katalógus menű a GTS-catalog https://github.com/orgs/GTS-catalog/repositories repository-kat fetcheli, és jeleníti meg a listanézetben. A repository-kból csak a ".json" fájlokat jeleníti meg.