8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus.

Hasonló dokumentumok
Osztott rendszer. Osztott rendszer informális definíciója

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Kiterjesztések sek szemantikája

6. Közös változóval rendelkező párhuzamos program, Közös változó,

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere

Programok értelmezése

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

S0-01 Szintézis és verifikáció (Programozás elmélet)

Bevezetés az informatikába

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

UML (Unified Modelling Language)

Programozási Módszertan definíciók, stb.

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Elérhetőségi analízis Petri hálók dinamikus tulajdonságai

Algoritmusok helyességének bizonyítása. A Floyd-módszer

A helyességbizonyítás klasszikus módszerei

Részletes szoftver tervek ellenőrzése

Ó Ü Ó Ó Ó Ó Ó Á Ó Ó Ó

ő ó ó ó ő ó ő ó ő ő ő ó ö ó ó ö ő ő ö ő ö ű ó ő ő ű ő ő ö ő ó ó ő ö ó ö ő ő ű ó ö ő ő ű ő ő ő ö ó ü ó ő ő ő ő ű ő ö ő ü ő ő ó ő ö ö ö ő ó ő ő ő ó ü ö

Ö Ö Ö Ö Á ű ű ű ű ű ű ű ű ű ű

ü ű ü ü Ó ü

Ö ü ú ü ű ü ű ü Á ü ű ű ú ű Á Ű ú ü ü ú ű Á ü Ú ü ű ü ü ű ü ú ú ü ú ü ü ü ü ü ü Ü Ü Ü ü Ö Ü ü ü ü ű ü ü ű ú ü ú

ú ú ű Ó

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

ó ö ó ő ő ü ú ö ő ö ő ü ő ü ó ó ö ü ó ü ő ú ú ő Ú ú ó ő ő ó ú Ó Ö Ö Ö

Á Á Á ű Á

ü ú ú ú ú ü Á ü ű Ö ú ű ú ü ű ü ű Ö ű

Termelő-fogyaszt. fogyasztó modell

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Modell alapú tesztelés mobil környezetben

Formális nyelvek - 9.

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

FORD KA KA_202054_V5_2013_Cover.indd /06/ :59

Időzített átmeneti rendszerek

Programozási alapismeretek 3. előadás

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Követelmények formalizálása: Temporális logikák. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Bevezetés a programozáshoz I. Feladatok

Valószínűségi változók. Várható érték és szórás

Programfejlesztési Modellek

Ó Ó ó ö ó

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Objektumorientált Programozás III.

Logikai ágensek. Mesterséges intelligencia március 21.

A számítógépes nyelvészet elmélete és gyakorlata. Automaták

ä ä

ú ö ö ö ö ö ö Á ö ö ö á á á ű Ü ű ö ö Á á Á

Á ű ó ó

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

ő ő Ó

ü ú ú ü ú ú ú ú

ö ö Á Á Ó Á ö ö ö ö ö ú ű ö ö Á Á ű ű ö ö ö ö ű

ű ő ő ő

MapReduce paradigma a CAP-tétel kontextusában. Adatb haladóknak. Balassi Márton Adatbázisok haladóknak 2012.

ű ű ű Ú Ú Á ű Ö ű ű Ú Ő É

Fraktálok. Hausdorff távolság. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék március 14.

Á Ö Ö Ö Ö ú ú Ö Ö Ó Ó ú ú Ü ú Ó Ö Ö Ü Ó Ö Ö Á Ó ú ú ú ű Ö Ö Ö Ö Á Ó Ö Ó ú ú Ö

Ó Ó Ó Ü Í Ü Ü Ü Ü Ü Ü Á Ő Ü Ü Ü Ü Ó Ó Á Ü Ö

ű Ö ű Ú ű ű ű Á ű

Á ó ó ó Ü Ü ó ó Ü ó ó ú ú ó ó Ü ó ó ó Ü ó ó

Ó Ó ö ú ö ö ö ö ü ú ú ö ö ö ú ú ö ö ö ú ú ú ű ö ö ú ö ü ö ö ö ö ü ú Á ö ü Á ö ö ö ö ö ö

Modellezés Gregorics Tibor Mesterséges intelligencia

ó ő ő ó ő ö ő ő ó ó ó ö ő ó ó ó ö ő ó ő ő ö Ö ő ö ó ő ö ő ő ú ö ö ü ö ó ö ö ö ő ö ö Ö ú ü ó ü ő ő ő ő ó ő ü ó ü ö ő ö ó ő ö ő ö ü ö ü ő ö ö ó ö ő ő ö

Á Á ő ő Ö ő ő ö É ö ő ö ő ő ö ő ő ö ő ő ü ö

ű Ú ű ű É Ú ű ű

Á Ó ű ű Á É ű ű ű ű Ú Ú

Í ü ű Ö ö ö ü ö ö ü ü ö ö ű ű ö Í ű Á ö Á ö

Á Ü É Ü Ú Ü É

ó Ó ú ó ó ó Á ó ó ó Á ó ó ó ó Á ó ú ó ó ó

Ó é é Ó Ó ő ű Ó Ö ü Ó é Ó ő Ó Á Ö é Ö Ó Ó é Ó Ó Ó Ó ú Ó Ó Ó Ó ű Ö Ó Ó Ó é Ó Ó ö Ö Ó Ö Ö Ó Ó Ó é ö Ö é é Ü Ó Ö Ó é Ó é ö Ó Ú Ó ő Ö Ó é é Ö ú Ó Ö ö ű ő

Ö ö Á ü ü ö ű ö ö ü ö Ö

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

ü ü Ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü ü É ü ü

PROGRAMOZÁS MÓDSZERTANI ALAPJAI I. TÉTELEK ÉS DEFINÍCIÓK

ő ü ő ü ü Ö ő ő ü Ö ü Ö ü Ö ő ő

Ú ű É ű ű Ü Ü ű ű Ú É ű ű Ü ű ű ű ű ű ű ű Ú ű ű

Á ó ű ú ó ö ü ű ű ó ó ö ü ó ö ó Ö ü ó ü ű ó ö ó ó ú ó ú ó ó ó ó ó ó ó Ö ö ó ó ó ó ö ó Ű ö ó ó ü Ó ű Í ó ó ó ó ó ó Ó ü ó ó ó ó ó ó ú ó ö

Ó ú ú

ű ő ő ű Ü ő ő ő ű ű ő ú ő ú Á Á ő Á ő ő ő ű ő ű ú

ú Ó ú ú ú ú ú ú ú É Á

á é é á ó á é ö Ű í É Á ó í á ü á ó

Ü ü ü ú Ö ü ü Ö Ö Ö Ö Ő Ó ü Á Á Ö Ö Ö Ő ü Í ú ű Í ú ú

É É Ö

AWK programozás, minták, vezérlési szerkezetek

É Á Á Ö Á

ü ó ó ó ó ó ó ü ó í ü ü ó ó ü ó ó ü ó ü ü í í ü ü í í ó ü ü Ö ü Ö ü ü ó

ö ő ü ö ő ő ü ü ő ő ő ü ö ü ü ő ú ő ő ő ü ő ő ő ő ő ú ő ő ü ő ő ő ü ö ü ú ő ő ő ő ü ü ő ő ú

Ü ű Í Ü ű Ő Ó Í Í Í Ö Í Ü Ó Í Í ű ű Í ű ű Í Í Í Í Í ű ű ű Á ű

é ü ó ö é Ö é ü é é ó ö é ü ü é é ó ó ó é Á é é ü ó é ó ó é ö ö ö é é ü é ü é é ö ü ü é ó é é é é é é ö é é é é é é ö é ó ö ü é é é ü é é ó é ü ó ö é

Szoftverminőségbiztosítás

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

ö ó Á ü ű ö ó ö ö ű ö ű ö ő ő ó ö ű ö ő í ő ó ő ó ö ó í í ó ő í í ő ö ő ő ó ő ö ű í ű í ö í ö í ű ö ö ú ö ú ö ő ó ő ö ő ő í ű ö ó ö í ó í í ő ó ü ő ő

ú ú ő ő ő ú ü ő ő ü ú ő ő

A L Hospital-szabály, elaszticitás, monotonitás, konvexitás

í ü Ó ö í í í ó ó í í ü í ó ü ö ó ó ö ó ó ö í ö ö ó ó í ó í í ö ö ö í ú ö ó í ó ö ó ö ó í í ú ű ú

Ö ó ó ó í ó Ö ü ó ü ü Ö ó í í ú ü ó ó ó ó ó í í ú í Ö ú í ó ó ó í ó

Maximum kiválasztás tömbben

Átírás:

8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus. Ágens rendszer definíciója. Példák. Fairness. (Fair tulajdonság). Gyenge fair követelmény. A fair nem determinisztikus szemantika definíciója egyszintű nem determinisztikus program esetén. Komponens elvű programfejlesztés: C. B. Jones: A pre/post specifikációkat minden sc komponens (shared component) esetén egészítsük ki "megbízhatósági / garancia" (rely / garantee) előírással is: {p, r}sc{g, q} Előfeltétel: p: Σ Σ Utófeltétel: q: Σ X Σ Σ Megbízhatósági feltétel: r: Σ X Σ Σ Garancia feltétel: g: Σ X Σ Σ Probléma: A programfejlesztés alávetése a szekvencializációs szabályoknak! Modellalkotás: 1990-es évek végén: Warmer J., Kleppe A.: The Object Constraint Language - Precise Modelling with UML. Lényege: Probléma megoldásának modelljei + korlátozások. "Forgatókönyv" (scenario) készítésekor rögzítjük a komponensekre vonatkozó megállapodásokat: contracts, scenario, prototype. Probléma megoldás számítógépes hálózaton keresztül. A problémát ágensek oldják meg úgy, hogy összehangolt akciókkal kívánják a közös célt elérni. Komponens elvűprogramfejlesztés: 8.1. Definíció (Ágens): Felhasználó, program, rendszer, stb. 8.2. Definíció (Akció): Tevékenységek végrehajtása. Például: Gomb megnyomása, üzenet, algoritmus végrehajtása, stb. 8.3. Definíció (Cél): A rendszer kívánt állapotának elérése egy jövőbeli időpontban. 8.4. Definíció (Összehangolás): Kontraktus alapján (komponensek közötti szerződés) 1

8.5. Definíció (Kontraktus, megállapodás): Dokumentum, specifikáció, program szövege 8.6. Definíció (Probléma): Adott a kontraktus, és az ágensek egy halmaza. Kérdés: Egy adott célt képesek-e elérni az ágensek az adott kontraktussal? 8.7. Definíció (Batch feldolgozás): Választás a számítógépé (belsőnem determinisztikus választás) 8.8. Definíció (Dijkstra: abort = {false} user ): Ha abort-ot hajtott végre a felhasználó, jelzi, hogy a felhasználó megsértette a megállapodást. Ugyanis a számítógép felhatalmazást kapott a további rész akár hibás végrehajtásra is. 8.9. Definíció (Interaktív program): A felhasználónak van választási lehetősége a végrehajtásnál. (Alternatívák közül választhat) A számítógép belsődöntéseket hozó mechanizmus szerint dolgozik. Példa: S = S 1 ; S 2 a felhasználó b számítógép S 1 = (x: = x + 1 a x: = x + 2 ); S 2 = (x: = x - 1 b x: = x - 2 ); A felhasználó választása attól függ, hogy mit akar elérni: x 0 vagy x 0 1. ábra. Kontraktus a felhasználó és a gép között Ágens rendszerek: Legyen Ω az ágensek egy összessége, A az ágensek egy halmaza és a, b, c A. Ekkor az ágens rendszer = (A, S, I ct, Q). A: a rendszer ágenseinek véges halmaza S: S 0 ; do b 1 S 1 a... a b n S n a S E ; exit; od; S 0, S 1,..., S n ; nem determinisztikus programok. S 0 : rendszer indulása előtt elvégzendőfeladatok végrehajtására szolgáló program (inicializálás). I ct : kontraktust rögzítőinvariáns a A: ágens a megfelelőkomponens kiválasztásáért felelős 2

Q: az ágens rendszer végrehajtása során elérendőcélállítás Példa: Kecske, farkas és káposzta átszállítása a folyón: A farkas a kecskével csak akkor lehet együtt, ha a hajós is ott van: fa = ke ha = fa A kecske a káposztával csak akkor lehet együtt, ha a hajós is ott van: ke = ká ha = ke A kontraktus invariánsa ( l ct ): (fa = ke ha = fa) (ke = ká ha = ke) ( n fa, ke, ká, ha )(n bool) Kiindulási állapot: ha = F fa = F ke = F ká = F Q Cél állapot: ha = T fa = T ke = T ká = T Ágens(ek): a hajós átkelés = ha:= F; fa:= F; ke:= F; ká:= F; do ha = fa (ha, fa):= ( ha, fa); a ha = ke (ha, ke):= ( ha, ke); a ha = ká (ha, ká):= ( ha, ká); a ha = ha; a skip; exit od; a: hajós; Példa: Raktár szimuláció: Egy raktárban háromféle áru raktározható Áruféleségek: A, B, C Raktár kapacitása: N Kikötések B és C áru vegyesen tárolható. A és C áru vegyesen tárolható. A és B áru nem tárolható vegyesen. 3

Nem determinisztikus módon érkeznek/távoznak az árúk. Készítsük el a helyes működésének szimulációját. Adott áruból raktáron lévő mennyiség n A = cont(a,ent) - count(a,ex) n B = cont(b,ent) - count(b,ex) n C = cont(c,ent) - count(c,ex) Kontraktus: B és C áru vegyesen tárolható, ha nincs a raktárban A áru N n B + n C 0 n A = 0 A és C áru vegyesen tárolható, ha nincs a raktárban B áru N n A + n C 0 n B = 0 Komponensek közötti megállapodást rögzítő I ct (N, n A, n B, n C ) invariáns ((N n 0 n A = 0) (N n 0 n B = 0)) (n = n A + n B + n C ) ) raktár = ( n A 0; n B 0; n C 0; n N; raktároz; raktároz = do beszállít a elszállít a skip; exit od; a, b, c A, ágenshalmaz beszállít = if (N > n 0 n B = 0) (<binsert(r, A); (n A, n) ( n A + 1, n + 1) > ) b (N > n 0 n A = 0) (<binsert(r, B); (n B, n) ( n B + 1, n + 1) > ) b (N > n 0) (<binsert(r, C); (n C, n) ( n C + 1, n + 1) > ) fi; elszállít = if (n A > 0) ( < bdelete(r, A); (n A, n) ( n A - 1, n - 1) > ) c (n B > 0) ( < bdelete(r, B); (n B, n) ( n B - 1, n - 1) > ) c (n C > 0) ( < bdelete(r, C); (n C, n) ( n C - 1, n - 1) > ) fi; Fair tulajdonság: Példa nem fair programra: S 1 jel:= "false"; do jel következősor nyomtatása // nyomtatás jel jel:= "true" // kilépés 4

od; A nem determinisztikus program szemantikája nem garantálja, hogy a második sor megkapja a vezérlést. 8.10. Definíció (Gyenge fair követelmény): A do...od ciklusban minden olyan őrfeltételes utasítás, amely valamely időponttól folyamatosan készen áll a végrehajtásra, annak végtelen sokszor aktiválódni kell. Az elsőkomponens ilyen feltétel esetén nem aktiválódhatott volna kizárólagosan, ha a második komponens kész a végrehajtásra. Példa erősen fair programra S 2 jel:= "false"; lap:= "false"; i:= 0; do ~ j e l > k ö v e t k e z ő s o r n y o m t a t á s a ; i := ( i +1) mod 3 0 ; l a p := ( i =0) ~ j e l és l a p > j e l := " t r u e " od ; Most is az elsőtud aktiválódni először, de 30 nyomtatás után a második komponens indulásának feltétele folyamatosan teljesül, így a második ág végrehajtásra kerül. A második ág végrehajtása után egyik komponens belépési feltétele sem teljesül, ezért az iteráció befejeződik. Ezt az esetet nevezik erő s fair (strong fairness) tulajdonságnak. 8.11. Definíció (Nem determinisztikus program): Egyszerű, egyszintű nem determinisztikus program S 0 ; do α 1 S 1... α n S n od; S 0, S 1,..., S n determinisztikus komponensek. 8.12. Definíció (Fair nem determinisztikus szemantika definíciója...): Fair nem determinisztikus szemantika definíciója... S egyszintű, nem determinisztikus program esetén σ Σ kezdőállapot mellett M fair [S](σ) = {τ < S, σ > < E, τ >} { S divergálhat σ kezdőállapotból egy fair kiszámítás esetén } { fail S hibás eredményre juthat σ kezdőállapotból } egy fair kiszámítás esetén: M tot [S](σ) és M fair [S](σ) közötti különbség 5