Tartalom
Azt, hogy egy program futása során nemkívánatos mellékhatások nem lépnek fel, csak akkor tudjuk igazolni, ha a modell a folyamatok kölcsönhatása során fellépő jelenségek minél szélesebb körének jellemzésére alkalmas. Célunk, hogy modellünk minél valósághűbben tükrözze a sokprocesszoros multikomputereken futó programok viselkedését, ahol az események a különböző processzorokon egyidejűleg mennek végbe, valamint támogassa a lépésenkénti finomítást. Ezért kívánatos lenne, hogy a modell alapfogalmai magukban foglalják a valós párhuzamosság és a valós nemdeterminisztikusság fogalmát [[???Bak War 91, ???Mak Ver 91]]. Másrészt törekednünk kell arra is, hogy modellünk ne váljon kezelhetetlenül bonyolulttá.
Valós párhuzamosság-ot ír le egy szemantikai modell, ha a
párhuzamos programot nem tekinti azonosnak azzal a programmal, amelyet a
folyamatok eleminek tekintett összetevőinek összefésülésével kapunk
(
+
)
- az a
esemény és a
esemény időben átfedi egymást.
- az
esemény
megelőzi a
eseményt.
+
- az
esemény
és a
esemény közül pontosan egy következik be nemdeterminisztikusan.,
ellenkező esetben összefésüléses (interleaving) szemantikáról beszélünk. Az
összefésüléses szemantika legnagyobb hátránya, hogy az összefésülés
feltételezi az elemi műveletek (atomi akciók) egy rögzített szintjét. Ha az
elemi művelet fogalma relatív, akkor a modell már ellentmondásra vezet
(
?=?
). Ha
nem alkalmazzuk azt az egyszerűsítést sem, amely szerint a programok
nemdeterminisztikus viselkedése a kezdőállapotra korlátozható, akkor
időben elágazó szemantikáról, ellenkező esetben időben lineáris
szemantikáról beszélünk (linear time, branching time). Az időben lineáris
szemantika szerint a későbbi nemdeterminisztikus viselkedés előre figyelembe
vehető a kezdeti állapotra vonatkoztatva (időben előrehozott döntések).
Ebben az esetben minden lehetséges későbbi nemdeterminisztikus viselkedést
előre figyelembe kell vennünk, ha a program helyességét vizsgáljuk.
A partner folyamatok állapotának figyelembevétele nélkül (túl
korán) meghozott döntés holtpont kialakulását eredményezheti
(
). Ha
a szelektív várakozást tartalmazó programot egyszerűen ekvivalensnek
tekintjük azzal, amely előre vagy az egyik vagy a másik partner mellett dönt,
akkor a lehetséges jó megoldások egy részét eleve kizárjuk.
Ha folyamatok közötti kapcsolatok topológiája a program futása során változhat, új folyamatok jöhetnek létre korlátlan számban, illetve folyamatok szűnhetnek meg, akkor dinamikus modellről, ellenkező esetben statikus vagy korlátosan dinamikus modellről beszélünk aszerint, hogy a folyamatok száma rögzített vagy felülről korlátos. A változások matematikai leírására az állapottér kiterjesztése, projekciója [[???Fót 88]] biztosíthat eszközt. Szemantikai modellek tehát abban különböznek, hogy mely absztrakt programokat tekintik azonosnak.
Az ún. leíró szemantika minden programhoz a szemantikai tartomány (pl. az állapottéren értelmezett bináris relációk halmaza vagy valamely algebrai struktúra) egy elemét rendeli hozzá. A programkonstrukcióknak a szemantikai tartományon értelmezett műveletek (pl. relációk szigorú kompozíciója) felelnek meg. Teljesülnie kell annak, hogy összetett program megfelelője a komponensekből a programkonstrukciónak megfelelő művelettel áll elő (kompozícionális megfeleltetés).
Műveleti szemantika definiálásakor pl. címkézett átmenetgráfot (LTS) használhatunk. A gráf csúcsaiban helyezkednek el az absztrakt programok, az éleket általában elemi műveletekkel címkézzük. A gráf azt definiálja, hogy egy (összetett) program egy elemi művelet (vagy komponens program) végrehajtása után mely programmal ekvivalens módon működik tovább. Azt vizsgáljuk, hogy mely absztrakt programok viselkedése azonos, azaz mely absztrakt programoknak megfelelő csúcsokból elindulva kapunk ekvivalensnek tekintett címkesorozatokat. Az ekvivalencia definíciója esetleg önmagában is bonyolult. (A processzalgebrában [[???Hen 88]] definiált tesztelési ekvivalencia vizsgálatakor például gráfok direkt szorzataiból indulunk ki.)
Axiómatikus szemantikáról beszélünk, ha absztrakt programok ekvivalenciáját axiómák és levezetési szabályok segítségével adjuk meg.
Amikor utasítások, szekvenciális programok hatásrelációját, mint az állapottér feletti bináris relációt definiáljuk, akkor leíró szemantikai eszközöket alkalmazunk programok ekvivalenciájának definiálására. Ebben a modellben programok helyességét statikus módon vizsgáljuk (pl.: halmazok összehasonlítására vezetjük vissza), míg műveleti szemantikát alkalmazva a program helyes működését annak dinamikus viselkedése elemzésével igazolhatjuk. Ez utóbbi módszer általában több hibalehetőséget hordoz magában, de előnye, hogy a program viselkedését szemléletes formában írja le. Az axiomatikus szemantika automatikus helyességbizonyításra alkalmas elsősorban.
Gyakran felvetik a kérdést, hogy három különböző formában definiált szemantika ekvivalens-e (az axiómatikus teljes és ellentmondásmentes-e illetve a műveleti teljesen absztrakt-e a leíróra nézve [[???Hen 88]]), azaz pontosan ugyanazon absztrakt programokat tekintik-e ekvivalensnek. A kérdés eldöntése gyakran összetett matematikai apparátus használatát igényli, különösen, ha a leíró szemantikai tartomány egy bonyolult algebrai struktúra vagy metrikus tér [[???Bak War 91]]. Ilyenkor kérdésessé válik az elmélet gyakorlati alkalmazhatósága is, mert szükségképpen hasonlóan bonyolult eszközökre van szükség annak eldöntéséhez is, hogy az absztrakt program megfelel-e a specifikációnak.
A gyakorlati alkalmazás szempontjából tehát elsődleges, hogy a jelenségek minél tágabb körének leírására alkalmas, de minél egyszerűbb matematikai struktúrájú szemantikai tartomány segítségével modellezzük a párhuzamos programok világát.