3. gyakorlat Folyamatmodellek, kooperáló viselkedésmodellek Megoldások



Hasonló dokumentumok
3. gyakorlat Folyamatmodellek, kooperáló viselkedésmodellek Megoldások

3. gyakorlat Folyamatmodellek, kooperáló viselkedésmodellek Megoldások

2. gyakorlat Állapot alapú modellezés Megoldások. 1. feladat. Rendszermodellezés (BMEVIMIAA00), tavaszi félév

5. gyakorlat Modellek ellenőrzése és tesztelése Megoldások

Alapszintű formalizmusok

Modellek ellenőrzése és tesztelése

Rendszermodellezés 1. ZH, A csoport, nagyfeladatok

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

2. gyakorlat Állapot alapú modellezés Megoldások

Elérhetőségi probléma egyszerűsítése: Állapottér és struktúra redukció Petri-háló alosztályok

2. gyakorlat Állapot alapú modellezés Megoldások

2. gyakorlat Állapot alapú modellezés Megoldások

Feladatgyűjtemény. 4. Modellek ellenőrzése Folyamat statikus analízise Dinamikus analízis teszteléssel... 7

Dr. Mileff Péter

Szekvencia diagram. Szekvencia diagram Dr. Mileff Péter

Gyakorló feladatok: Formális modellek, temporális logikák, modellellenőrzés. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Nokia N97_mini (Mail for Exchange) beállítása Virtualoso levelezésre

5. Hét Sorrendi hálózatok

Diszkrét állapotú rendszerek modellezése. Petri-hálók

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

Diszkrét állapotú rendszerek modellezése. Petri-hálók

Időzített átmeneti rendszerek

Petri hálók: alapfogalmak, kiterjesztések

INFORMATIKAI ALAPISMERETEK

Alapszintű formalizmusok

III. Alapfogalmak és tervezési módszertan SystemC-ben

Modell alapú tesztelés mobil környezetben

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

Folyamatmodellezés. Budapesti Műszaki és Gazdaságtudományi Egyetem. Hibatűrő Rendszerek Kutatócsoport. Budapesti Műszaki és Gazdaságtudományi Egyetem

Több platform egy kódbázis Tanulságok a Tresorittól. Budai Péter, vezető fejlesztő

C++ programozási nyelv

Mozgásvizsgálati mérések internetes megjelenítése. Zemkó Szonja - Dr. Siki Zoltán

Új Paradox My Home, Insite Gold és IP150 verzió információk

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Bevezetés a programozásba

OCSP Stapling. Az SSL kapcsolatok sebességének növelése Apache, IIS és NginX szerverek esetén 1(10)

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Adatszerkezetek 7a. Dr. IványiPéter

Hungaropharma Zrt. WEB Áruház felhasználói útmutató. Tartalomjegyzék

A simptask számos különböző funkcióval segíti Önt projektjei sikeres megvalósításában:

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

OOP. Alapelvek Elek Tibor

OO rendszerek jellemzői

IV.4. FELHŐ ALAPÚ BIZTONSÁGOS ADATTÁROLÁSI MÓDSZER ÉS TESZTKÖRNYEZET KIDOLGOZÁSA

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Aszinkron sorrendi hálózatok

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Internetes térkép publikálási technikák, szabványok, trendek, nyílt forráskódú megoldások

2. fejezet Hálózati szoftver

Objektum orientált programozás Bevezetés

Felhőalkalmazások a. könyvvizsgálatban

Occam 1. Készítette: Szabó Éva

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

Szoftverarchitektúrák 3. előadás (második fele) Fornai Viktor

KSHXML2 adatgyűjtési rendszer

Szoftver fő funkciói. Diszpécser rádió GPS nyomkövetés Adatátvitel és tárolás Telefonhívások kezelése 1 / 7

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Keresés képi jellemzők alapján. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

Rendszergazda Debrecenben

Sony Ericsson P910i BlackBerry Connect telepítési segédlet

C programozási nyelv

Rendszermodellezés. Modellellenőrzés. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Programozási nyelvek (ADA)

Frissítések, letöltések

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Petri hálók: alapfogalmak, kiterjesztések

Számítógépes Hálózatok. 5. gyakorlat

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

Code review és continous integration toolok BME-MIT

Folyamatmodellezés. Rendszermodellezés Budapesti Műszaki és Gazdaságtudományi Egyetem. Hibatűrő Rendszerek Kutatócsoport

Szekvenciális hálózatok és automaták

Folyamatmodellezés. Budapesti Műszaki és Gazdaságtudományi Egyetem. Hibatűrő Rendszerek Kutatócsoport. Budapesti Műszaki és Gazdaságtudományi Egyetem

Szimuláció. Fault Tolerant Systems Research Group. Budapest University of Technology and Economics. Department of Measurement and Information Systems

Szoftverprototípus készítése. Szoftverprototípus készítése. Szoftverprototípus készítése

Szoftver-technológia II. Architektúrák dokumentálása UML-lel. Irodalom. Szoftver-technológia II.

Időzített rendszerek és az UPPAAL II

A Via 125, Via 135 és Start 60 Refurbished készülékek frissítése. Hogyan csináld?

Formális verifikáció Modellezés és modellellenőrzés

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Socket programozás Példák

GPRS Remote. GPRS alapú android applikáció távvezérléshez. Kezelési útmutató

Mozo mobileszköz menedzsment eszköz telepítése

Kalumet Számlázó. Termék leírás

2) Tervezzen Stibitz kód szerint működő, aszinkron decimális előre számlálót! A megvalósításához

Rekurzió. Dr. Iványi Péter

Leolvasói rendszer kialakításának koncepciója ipari mobil eszközökkel (ipari PDA-val)

A Hexium AZBEST/AVAX és a HA-PON/sGTC alállomás szoftverének frissítése

Kiegészítő segédlet szinkron sorrendi hálózatok tervezéséhez

MIKE URBAN MOUSE Csıhálózati áramlási modell. DHI Prága oktatási anyagainak felhasználásával. Kiválasztás menü és eszköztár. Csomópontok és csövek

Webes alkalmazások fejlesztése

ISA szimulátor objektum-orientált modell (C++)

Nemzetközi team munka indítása

A modell-ellenőrzés gyakorlata UPPAAL

1. Melyik szabvány foglalkozik dokumentumok tulajdonságainak megfogalmazásával? a. RDFS b. FOAF c. Dublin Core d. DBPedia

KIRA. KIRA rendszer. Telepítési útmutató v1

Modellek ellenőrzése

ShopRenter Kulcs-Soft beállítás


Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Átírás:

3. gyakorlat Folyamatmodellek, kooperáló viselkedésmodellek ok Figyelem: Jelen anyag belső használatra készült megoldási útmutató, melyet a ZH felkészülés segítése érdekében publikáltunk. A feladatok részletesebb megoldása magyarázattal gyakorlaton hangzott el. 1. feladat Felhő alapú adattárolást modellezünk (ld. Dropbox, Google Drive, Tresorit), egyetlen állományra szorítkozva. Az állománynak a szerveren és a kliensnél (pl. laptop) is elérhető egy-egy replikája, kezdetben azonos tartalommal. A fájl módosításai szinkronizálás során továbbítódnak a példányok között. Ha szinkronizáció előtt mindkét példányt módosítják, akkor ütközés lép fel, amelyet a felhasználónak kell feloldania a kliensen. a. Modellezzük először a laptop kliens (részleges) működését állapotgéppel! A kliens kezdetben szinkron állapotú (a lokális fájlmásolat egyezik azzal, ami a szerveren a legutóbbi szinkronizációkor volt/lett), ám írás input hatására a piszkos állapotba kerül (és további írás hatására is ottmarad). Az elvet input hatására tetszőleges állapotból újra szinkron állapotba kerül. b. A szerver lehetséges állapotai (csupán az adott laptop klienssel való szinkronizációt vizsgálva) a szinkron és a frissült. Előfordulhat, hogy a megfelelő írási jog birtokában egy másik felhasználó (vagy ugyanazon felhasználó egy másik kliens, pl. a telefonja segítségével) frissíti a szerveren található állományt. c. Ha a szerver szinkron állapotban van, akkor a kliens a szinkronizál input hatására feltölti az esetleges lokális módosításokat a szerverre, és szintén szinkron állapotba kerül. A kliens és a szerver közben információt cserélnek hol kooperál a két automata? d. Ha a szerver frissült állapotban van, akkor a kliensnek adott szinkronizál input hatására a szerver szinkron állapotba kerül; a kliens pedig szinkron állapotból nem mozdul, de piszkos állapotból ütközés állapotba megy. Mit jelent ez? Mi történjen az ütközés állapotban? Hol kooperál a két automata? e. A kliens időnként magától is szinkronizál a szerverrel, felhasználói input nélkül. Mit jelent ez? Hol kooperál a két automata f. (Otthoni feladat) Teljes összetett állapottér kifejtése a vegyes szorzatban részvevő két automata alapján. a. : b. Itt annyi az érdekesség, hogy spontán állapotátmenet lesz (már ha a lokális usertől érkezett inputokra figyelünk csak). c. A Kliens automata két új átmenetére [Szerver.szinkron] őrfeltételt rakunk (az őrfeltétel fogalma volt előadáson!). Érdekesség, hogy ez a másik automata pillanatnyi állapotától függ - ez 1

tehát kooperáció! A modell absztrahálja a valóságot, itt ténylegesen nyilván üzenetcsere van a kliens és a szerver között, ahol kicserélik ezt az információt, ill. a fájlt is fel kell tölteni. d. Itt egyszerre lép a két automata, tehát ez egy olyan input, amelyik mindkét automatát befolyásolja! Ilyenkor azt mondjuk, hogy nem aszinkron, hanem vegyes szorzatban van a két komponenes automata (főleg aszinkron lépnek, de néha szinkron, mert mindkettő egyszerre lép). A kliens új élei [Szerver.frissült] őrfeltételt kapnak. Megjegyzés: a Kliens.szinkron állapotból két hasonló átmenet megy ki ellentétes őrfeltétellel ([Szerver.szinkron], ill. [Szerver.frissült]), ezek összevonhatóak egyetlen őrfeltétel nélküli éllé. (Ne felejtsük el, hogy a Szerver új éleit berajzoljuk a megfelelő őrfeltétellel.) Ez nyilván az az eset, amikor a kliens detektálja az ütközést. Ilyenkor a szerver szinkron állapotba megy, mivel őnála a legutolsó szinkronizáció óta nincs újabb. A kliensen kell feloldani a konfliktust, pl. így: elvet->szinkron, írás->piszkos, szinkronizál->ütközés). e. Ugyanaz, mint előbb, csak külső input esemény helyett közös, belső randevú esemény (legyen auto) hatására. Opcionális változtatás lehet, pl. konfliktust ilyenkor sose idézzen elő. 2. feladat Az előző feladatban modellezett klienst és szervert alaposabb vizsgálatnak vetjük alá, figyelembe véve, hogy hálózaton keresztül, üzenetek segítségével tartják a kapcsolatot. Ami az előző, absztrakt modellben a két automata egyidejű (atomi) közös állapotátmeneteként jelent meg, az valójában időbeli kiterjedéssel rendelkező, üzenetek küldésével és fogadásával megvalósuló kommunikációs tevékenység. a. Készítsünk adatfolyamhálót, amelynek a kliens és a szerver a csomópontjai! Az adatfolyamhálóban FIFO, kapacitáskorlát nélküli, pont-pont csatornákat használunk (az előadáson bevezetett módon). Határozzuk meg az adatfolyamháló bemenetén, illetve a két csomópont közötti interfészen érvényes tokeneket és a jelentésüket! b. Adjuk meg a csomópontok belső viselkedésének egy lehetséges modelljét állapotgráf formalizmussal! Az állapotgráfot írjuk fel táblázatos formában is. c. Hogyan modellezhető az üzenetek belső strukturája? a. A felhasználói input ugyanaz. A kliens és a szerver között megy oda egy kérés, vissza egy válasz (első körben). Érdemes megkérdezni, hogy értik-e miért nem közvetlenül a felhasználó szinkronizálj üzenete jut el a szerverre, és hogy világos-e, mikor kommunikálna a két komponens. b. A szerver értelemszerű. Kliens: minden őrfeltétel vagy szinkron lépés esetén először egy kérést küld, majd várakozó állapotba megy. A várakozó állapotból a válasz beérkezésekor lép ki (és ha közben semmi mást nem csinál, akkor visszaabsztrahálva valóban pillanatszerű, atomi szinkron művelet lesz). Ha őrfeltétel volt, az új modellben hova lép ki a válasz beérkeztekor? Hoppá, ez nem derül ki finomítsuk a válasz tokent! Lesz válaszsz (ha a szerver szinkronban van) és válaszf (ha a szerver frissítve állapotban volt), ez alapján a kliens már egyértelműen tud dönteni, de persze a szervert hozzá kell igazítani. (Nem lesz idő az egész klienst lerajzolni, a befejezése otthoni munka!)üü c. Itt egy rövid pár mondatos utalást lehet tenni, hogy az előző tokenfinomítás megfelel a strukturális modellezés előadásban használt altípus fogalomnak; az ott tanult eszköztár egyéb elemei is hasznosak lehetnek, pl. a kérés/válasz üzeneteknek lehet egy verziószám attribútuma, meg tartalmazhatnak fájlt. 2

3. feladat Tekintsük az alábbi C nyelvű függvényt. unsigned long long f(int n) { if (n <= 0) { return 0; } else if (n == 1) { return 1; } else { unsigned long long a = f(n - 1); unsigned long long b = f(n - 2); return a + b; } } a. Milyen vezérlési folyamot határoz meg a függvény? b. Mi biztosítja azt, hogy a függvény előbb-utóbb terminál? c. Azonosítsuk az adatfüggőségeket (adatáramlást) a tevékenységek között! d. (Kiegészítő feladat) Ha a programozási nyelv vagy a futtatókörnyezet megengedi, hol van lehetőség párhuzamosításra? a. A rekurzív hívás egy hívás elem. 3

b. Aki nem tudja, gondolkodjon rajta otthon. c. A két rekurzív hívásból megy adatáramlás az összeg returnjébe. A lényeg, hogy a második híváshoz voltaképp nem kell az első eredménye. d. A fenti alapján ez triviális. 4. feladat a) Belsős fejlesztők közvetlenül írhatnak a kódtár adott projekt részére fenntartott területére. Külsős fejlesztőknek először átvizsgálásra (code review) be kell nyújtaniuk a kódjukat; ezután egy belső fejlesztőnek ellenőriznie kell azt, és utána vagy elutasítania, vagy elfogadnia. Az elfogadást követően az alapítvány jogi osztálya egy külön adminisztratív eljárásban tisztázza a változtatások szellemi tulajdonának jogállását, és csak ennek sikeres lezárása után olvaszthatja be a belső fejlesztő a kódot. Frissen indított, első hivatalos kiadásuk előtt álló projekteknél itt tesznek egy kivételt: az elfogadott külső hozzájárulás kódtárba beolvasztásával nem kell megvárni ezt az adminisztratív eljárást. Készítsünk folyamatmodellt az itt leírt tevékenységekből! b) A szoftver fejlesztési projektje abból áll, hogy újabb és újabb módosításokat végeznek a forráskódon, amíg a projekt vezetése úgy nem látja, hogy a szoftver kellően stabil egy hivatalos kiadáshoz. Amikor eljött ez a pont, akkor közzétesznek egy új stabil verziót a szoftverből, majd ismét a fejlesztésen a sor stb. Készítsünk folyamatmodellt az itt leírt tevékenységekből! c) Milyen viszonyban állnak egymással a fenti részfeladatokban elkészített folyamatmodellek? d) Ellenőrizzük, hogy jólstrukturáltak-e a folyamataink! a. A megoldás: 4

b. A megoldás: c. Két külön dolognak az életútja egyazon rendszerben (lehetnek furcsa átlapolódások, pl. kiadási cikluson átívelő code review). d. Lásd a jólstrukturáltságról szóló anyag: http://docs.inf.mit.bme.hu/remo/out/04- folyamatmodellezes.html 5