Döntési feltétel is elemi tevékenység?

+1 vote
asked May 30, 2016 in Rendszermodellezés A00 by klenium (58 points)  

Volt a PZH1-ben egy olyasmi a beugróban, hogy egy imperatív program utasításai elemi tevékenységeknek felelnek meg. Ezt én hamisnak jelöltem, de nem volt jó. Megtekintésen is azt mondták, hogy az állítás igaz, de még nem igen egyértelmű számomra, hogy miért.

Egy programban vannak elágazások. Ezeket a folyamatmodellben rombusszal jelöljük, mint döntési feltétel, a programnál egy megfelelő gépi kóddal, feltételes ugrással. Kissé leegyszerűsítve egy vagy több ugró utasításnak megfeleltethető egy döntési csomópont. Ezután az állítás csak akkor lehet igaz, ha a döntés is egy elemi tevékenység. A jegyzetben lévő definíció alapján ez még lehetséges is lenne: a feltétel kiértékeléséhez idő kell, és azon kívül, hogy megadjuk a feltételeket, nem részletezzük jobban (pl. logikai kapukat nem jelöljük). Csakhogy az elemi tevékenység grafikus szintaxisának a kerekített sarkú téglalap van megadva. Ehhez viszonyítva a döntés már részletesebb, mivel tartalmazza az elágazások feltételeit is, míg a téglalapra csak felírjuk, hogy itt egy feltétel értékelődik ki. Emiatt én eddig úgy gondoltam, hogy az elemi tevékenység alatt csak a téglalapot értjük, így a döntés nem elemi tevékenység, hanem... döntés. De Gönczy mondta is, hogy ami nem elemi tevékenység, az az összetett, pl. alfolyamat, ami hívással ábrázolható a folyamatmodellben. Ez nyilván igaz, több tevékenység már nem nevezhető elemi tevékenységnek.
Na most a kérdés, mi az igaz? Rosszul tudtam, és a döntés is elemi tevékenységnek számít, vagy valami mást értettem félre, vagy hogy jön ki, hogy a beugró állítása igaz?

1 Answer

0 votes
answered May 31, 2016 by bergmann (36 points)  

Kicsit ízlés dolga a válasz mögötti indoklás, de véleményem szerint mindenképp igaz lesz a helyes.

Ha a folyamatmodell vezérlési csomópontjait nem különbözteted meg a tényleges eredménnyel járó tevékenységektől, akkor nyilván igaz a válasz, hiszen az if-nek megfelelő döntési csomópont is elemei tevékenység lesz.

Ha precíz akarsz lenni, és a vezérlési csomópontokat nem tekinted tevékenységnek, akkor ezzel teljesen analóg módon a programkódban az if, stb. nem utasítás lesz, hanem vezérlési szerkezet. Ekkor a kérdés szempontjából nem lesz érdekes, csak a függvényhívás, értékadás, stb. számít.

Ugyanarról a distinkcióról van szó - vagy mindkettőt megteszed, vagy egyiket sem. Akkor nyilván rossz eredmény jön ki, ha az egyik esetben élsz a megkülönböztetéssel, a másik esetben nem.

Elnézést, ha félreérthető volt emiatt a kérdés.

commented May 31, 2016 by klenium (58 points)  
A gép számára az elágazás tevékenység, ki kell értékelnie a gépi kódból a feltétel értékét, PC-t módosítani kell. De ettől még nem tekintem az elágazást olyannak, mint pl. az értékadást.
Nézzük, hogyan csoportosíthatóak ezek a dolgok:
Legyen egy H halmazunk, ebben van a program minden része.
H-n belül van egy Ö részhalmaz, ebbe kerülnek a hívások.
H-nak részhalmaza még T. Ebbe kerülnek az elemi tevékenységek.
T-nek is van egy részhalmaza: D, ide kerülnek az elágazások, amik tartalmazzák az őrfeltételt is.
Ezután kikötjük, hogy azokat az elemi tevékenységeket, amik csak D-nek elemei, rombusszal jelöljük.
Azokat az elemi tevékenységeket, amik T-nek igen, de D-nek nem elemei, téglalappal jelöljük.
Ha így lenne, akkor tényleg értem, miért igaz a beugró állítása. Csakhogy ezzel két gond van:
1. T minden elemére igaz állítás: "a megkezdésén és befejezésén túl további részleteit nem modellezzük". D elemeire ez nem teljesül, hisz a döntési feltételt is felírtuk (ha nem tennénk meg, akkor így jelölhetnénk: http://i.imgur.com/fUDcQZ2.png , ehhez képest a döntési feltétel már részletezés). -> D nem lehet részhalmaza T-nek.
2. A folyamatmodellezés jegyzet 1. ábrája alapján - értelmezésem szerint - MINDEN elemi tevékenységet téglalappal kell jelölni. Ha D elemeire is ezt alkalmaznánk, az előbbi képen lévő diagramot kapnánk, de nyilván nem ezt használjuk, hanem a rombuszt.
A két ellentmondás miatt én úgy képzeltem el, hogy D nem részhalmaza T-nek. Ettől még a döntésnek is lehet időbeli kezdete, vége (nincs kikötve, hogy nem lehetne), és mint írtam fent, a gép számára ez is egy egyszerű utasítás, amit végre kell hajtani. Ezért olyan tevékenységnek tekintem a döntést, ami nem tartozik T-be. Azt mondod, ez hibás, akkor miben nincs igazam?
...