„BPROF:2dm” változatai közötti eltérés

A Miau Wiki wikiből
(IT biztonsági kérdések)
46. sor: 46. sor:
 
*Új játék tervezését és  
 
*Új játék tervezését és  
 
*futtatását támogató keretrendszer kialakítása úgy, hogy  
 
*futtatását támogató keretrendszer kialakítása úgy, hogy  
**a keretrendszer támogassa a teszt megtervezését,  
+
**a keretrendszer támogassa a puzzle megtervezését,  
 
**az adat-megjelenítést/adatbevitelt,  
 
**az adat-megjelenítést/adatbevitelt,  
**a teszt megírását és  
+
**a puzzle megírását és  
 
**a log-elemzést (vö. https://miau.my-x.hu/mediawiki/index.php/Excel-makro - Tanfolyami vezérfeladat).
 
**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ó
 
*a keretrendszer által olyan output kialakítása, mely a jelenlegi 2DM-megoldás által azonnal futtatható
91. sor: 91. sor:
  
 
==Folyamatábrák==
 
==Folyamatábrák==
*Teszt tervezésének folyamatábrája:........<br>
+
*Puzzle tervezésének folyamatábrája:........<br>
*Teszt megírásának folyamatábrája:........<br>
+
*Puzzle megírásának folyamatábrája:........<br>
*Teszt kiértékelésének folyamatábrája:........<br>
+
*Puzzle kiértékelésének folyamatábrája:........<br>
  
  
148. sor: 148. sor:
  
 
Jelenleg logolható:
 
Jelenleg logolható:
* app minimalizálása, bezárása, teszt elindítása
+
* app minimalizálása, bezárása, puzzle elindítása
  
 
Tervezett funkciók:
 
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?)
+
* internet használat elemzés (van-e esetleg olyan kulcsszavú keresés, mint amilyen szavak/kifejezések vannak az éppen aktív puzzle 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 ?)
 
* 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
 
* 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

A lap 2022. december 5., 16:24-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

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 á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:

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

  1. ebből egyetlen egy 2DM-játékhoz tartozó objektumok (vö. *BLANK*): ???
  2. egy játékra egyszerűsített manuálisan lebutított saját lokális verzió tesztelése
  3. régi 2DM-játék által igényelt specifikációk véglegesítése
  4. 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
  5. manuálisan készített saját játék tesztelése
  6. 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

  • Puzzle tervezésének folyamatábrája:........
  • Puzzle megírásának folyamatábrája:........
  • Puzzle 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


Logika tárolása

C# nem a legbiztonságosabb, ám van olyan lehetőségem is, hogy a keretrendszer logikáját nem maga a kliens,hanem a szerver kezeli.

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?

licensz archiválása

licensz árazása

Szoftverben használt csomagok és azok licenszeik

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, puzzle 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 puzzle 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

Adattárolás

Eredeti, elvetettt ötlet

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

Ebben a fejezetben fogom leírni mind a belső (saját magam/KJE-n belüli) mind a külső (.......) tesztelési folyamatokat, észrevételeket, eredményeket.

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)


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:

  • Projekt buildelhetőségének tesztelés:
    • A program le tud futni, nincs benne hiba
    • ...
  • Játék játszhatóságának tesztelése
    • Sikerült adatot betölteni, van output
    • ...

Nem szempont:

  • Tartalmi ellenőrzés

Mivel ez csupán forráskód, ezért nem szükséges a szakdolgozatíró saját magának írt kódot ellenőrizni, hiszen nem publikus

Projekt buildelhetőségének tesztelés

GitHub action fájl:

The name of the workflow.
# This is the name that's displayed for status
# badges (commonly embedded in README.md files).
name: build and test

# Trigger this workflow on a push, or pull request to
# the main branch, when either C# or project files changed
on:
 push:
 pull_request:
   branches:
     - '**'        # matches every branch
   
   paths-ignore:
   - 'README.md'
# Create an environment variable named DOTNET_VERSION
# and set it as "6.0.x"
env:
 DOTNET_VERSION: '6.0.x' # The .NET SDK version to use
# Defines a single job named "build-and-test"
jobs:
 build-and-test:
   # When the workflow runs, this is the name that is logged
   # This job will run three times, once for each "os" defined
   name: build-and-test-$Sablon:Matrix.os
   runs-on: $Sablon:Matrix.os
   strategy:
     matrix:
       os: [windows-latest]
   # Each job run contains these five steps
   steps:
   # 1) Check out the source code so that the workflow can access it.
   - uses: actions/checkout@v2
   # 2) Set up the .NET CLI environment for the workflow to use.
   #    The .NET version is specified by the environment variable.
   - name: Setup .NET
     uses: actions/setup-dotnet@v1
     with:
       dotnet-version: $Sablon:Env.DOTNET VERSION
   # 3) Restore the dependencies and tools of a project or solution.
   - name: Install dependencies
     run: dotnet restore
   # 4) Build a project or solution and all of its dependencies.
   - name: Build
     run: dotnet build --configuration Release --no-restore
   # 5) Test a project or solution.
   - name: Test
     run: dotnet test --no-restore --verbosity normal

Kód magyarázat: Minden branchet végig tesztel. ...

Játék játszhatóságának tesztelése

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)
  1. ...
  2. ...
  3. ...
  4. ...
  5. ...
  6. ...
  7. ...
  8. ...
  9. ...

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.

Saját teszt publikálása

https://miau.my-x.hu/mediawiki/index.php/BPROF:2dm_q1