„Rendszermodellezés” változatai közötti eltérés

Házi feladat: Tiltott elemk frissítve
94. sor: 94. sor:
*Egy sakkórát utánozó programot kell elkészíteni, mindenkinek különböző tulajdonságokkal. A házi feladat kiírása, és technikai segédlet elérhető a [https://inf.mit.bme.hu/edu/courses/remo/hazifeladat tárgyhonlapon].
*Egy sakkórát utánozó programot kell elkészíteni, mindenkinek különböző tulajdonságokkal. A házi feladat kiírása, és technikai segédlet elérhető a [https://inf.mit.bme.hu/edu/courses/remo/hazifeladat tárgyhonlapon].


*Leggyakoribb hiba: olyan állapotátmenet használata, amik nem is valódiak, mert az átmenet nem egy esemény bekövetkezésekor történik meg. *Lehetséges, hogy amire mi gondolunk, az egy esemény, de modellezési szempontból másként kell értelmezni ezt a fogalmat. 3 ilyen elem van tiltva:
*Leggyakoribb hiba: olyan állapotátmenet használata, amik nem is valódiak, mert az átmenet nem egy esemény bekövetkezésekor történik meg. *Lehetséges, hogy amire mi gondolunk, az egy esemény, de modellezési szempontból másként kell értelmezni ezt a fogalmat. 5 ilyen elem van tiltva:
**<code>always</code>
**<code>always</code>
**<code>oncycle</code>
**<code>oncycle</code>
**Olyan nyíl (állapotátmenet), amire nincs semmi írva (nincs őrfeltétel, mindig lefut).
**Olyan nyíl (állapotátmenet), amire nincs semmi írva (nincs őrfeltétel, mindig lefut).
*Ha a modelledben ezeket használod, az oldal nem fogja elfogadni a házidat. Két módon lehet megoldani a hibát:
**<code>after 0s</code> / <code>after 0ms</code> / <code>every 0s</code> stb. A modell szempontjából ezek is feltétel nélküli átmenetek.
**'''[trigger && feltétel]''' kiváltó esemény, ezeket egy [trigger]-re és egy choice-ra kell szétbontani.
*Ha a modelledben ezeket használod, az oldal nem fogja elfogadni a házidat. A hiba megoldása:
[[File:Remo_modelltipusok_20160720.png|thumb|Szekvenciális programozásra hasonlító (balra), és helyes állapotalapú (jobbra) modellek]]
[[File:Remo_modelltipusok_20160720.png|thumb|Szekvenciális programozásra hasonlító (balra), és helyes állapotalapú (jobbra) modellek]]
*<code>after 0s</code> használata. Gyorsabb, de ez csak egy kiskapu, nem segíti a tanulást.
*Meg kell érteni az állapotalapú modellezés alapját. Sokan úgy próbálják felépíteni a modellt, mint egy C nyelvben írt programot, ahol egymás után hajtódnak végre a feladatok, és az állapot egy művelet végrehajtásának felel meg. Ez hibás gondolkozás, mert állapotmodellezésre van szükség, és nem folyamatmodellezésre! Eseményvezérelt felépítés kell. A kép oldalt illusztrálja a kettő közötti különbséget. A hagyományos programozási módszer használatával keletkezik egy olyan állapotátmenet, aminek nincs kiváltó eseménye. Az állapotalapú modellezésnél ilyet ne csináljunk, mert a ChangeSettings nem egy olyan állapot, ami tartósan jellemezné a modellünket, hiszem a <code>whiteMoves = true</code> művelet elvégzése után azonnal bekövetkezik egy újabb állapotváltás, így a ChangeSettings csak egy pillanatig, és nem egy valamekkora időegységig jellemezte a modellt. Ha viszont a műveleteket nem az állapot belsejébe írjuk, hanem egy hurokélre, akkor valójában nem történik állapotváltás (ugyan oda térünk vissza), a művelet mégis végrehajtódik! Többnyire igaz, hogy úgy kell megtervezni a modellt, hogy az élekre kerülnek a változók módosításai, az állapotokra pedig az, ami megjelenik a képernyőn, lásd a képet. Ez természetesen nem mindig van így, de ha eszerint próbálod meg megtervezni a modelled felépítését, kiküszöbölheted az üres élek problémáját.
*Meg kell érteni az állapotalapú modellezés alapját. Sokan úgy próbálják felépíteni a modellt, mint egy C nyelvben írt programot, ahol egymás után hajtódnak végre a feladatok, és az állapot egy művelet végrehajtásának felel meg. Ez hibás gondolkozás, mert állapotmodellezésre van szükség, és nem folyamatmodellezésre! Eseményvezérelt felépítés kell. A kép oldalt illusztrálja a kettő közötti különbséget. A hagyományos programozási módszer használatával keletkezik egy olyan állapotátmenet, aminek nincs kiváltó eseménye. Az állapotalapú modellezésnél ilyet ne csináljunk, mert a ChangeSettings nem egy olyan állapot, ami tartósan jellemezné a modellünket, hiszem a <code>whiteMoves = true</code> művelet elvégzése után azonnal bekövetkezik egy újabb állapotváltás, így a ChangeSettings csak egy pillanatig, és nem egy valamekkora időegységig jellemezte a modellt. Ha viszont a műveleteket nem az állapot belsejébe írjuk, hanem egy hurokélre, akkor valójában nem történik állapotváltás (ugyan oda térünk vissza), a művelet mégis végrehajtódik! Többnyire igaz, hogy úgy kell megtervezni a modellt, hogy az élekre kerülnek a változók módosításai, az állapotokra pedig az, ami megjelenik a képernyőn, lásd a képet. Ez természetesen nem mindig van így, de ha eszerint próbálod meg megtervezni a modelled felépítését, kiküszöbölheted az üres élek problémáját.
*''Ha továbbra sem műküdik a programod, és nem érted, hogy mi a gond, látogasd meg a [http://q2a.inf.mit.bme.hu/rendszermodellez%C3%A9s Házi feladat fórum] oldalát, hátha már akadt másnak is hasonló problémája.''
*''Ha továbbra sem műküdik a programod, és nem érted, hogy mi a gond, látogasd meg a [http://q2a.inf.mit.bme.hu/rendszermodellez%C3%A9s Házi feladat fórum] oldalát, hátha már akadt másnak is hasonló problémája.''
A lap eredeti címe: „https://vik.wiki/Rendszermodellezés