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

Modellek ellenőrzése és tesztelése

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

Rendszermodellezés 1. ZH, A csoport, nagyfeladatok

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

Alapszintű formalizmusok

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

Dr. Mileff Péter

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

Szekvencia diagram. Szekvencia diagram Dr. Mileff Péter

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

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

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

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.

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

Code review és continous integration toolok BME-MIT

Gyártórendszerek irányítási struktúrái

A programozás alapjai 1 Rekurzió

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

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

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

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

IP150 frissítés 4.20-ra

Programozási nyelvek (ADA)

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

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

Modell alapú tesztelés mobil környezetben

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

2. fejezet Hálózati szoftver

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

A félév során előkerülő témakörök

OO rendszerek jellemzői

Szoftverminőségbiztosítás

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

Kód átvizsgálás. Irodalom. (Code review) code review,smart Bear Inc., ! Jason Cohen: Best kept secrets of peer

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)

Szakdolgozati, TDK témajavaslatok

Bevezetés a programozásba. 8. Előadás: Függvények 2.

iphone programozás alapjai IV. Gyakorlat

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

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

Frissítések, letöltések

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

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

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

Kölcsönhatás diagramok

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

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Digitális technika (VIMIAA02) Laboratórium 3

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

Objektumorientált Programozás III.

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

Digitális technika (VIMIAA02) Laboratórium 3

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

C programozási nyelv

OOP. Alapelvek Elek Tibor

Objektum orientált programozás Bevezetés

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

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

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

S01-7 Komponens alapú szoftverfejlesztés 1

Megoldás. Feladat 1. Statikus teszt Specifikáció felülvizsgálat

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

Java programozási nyelv

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

Rendszer szekvencia diagram

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

Nemzetközi team munka indítása

Időzített átmeneti rendszerek

Név: Neptun kód: Pontszám:

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

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

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

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

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

Regionális forduló november 18.

Digitális technika (VIMIAA02) Laboratórium 4

Java II. I A Java programozási nyelv alapelemei

Rekurzió. Dr. Iványi Péter

Új kompakt X20 vezérlő integrált I/O pontokkal

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

Programtervezés. Dr. Iványi Péter

Grid menedzsment megoldás az ARC köztesrétegben

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

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

1. Felhasználói név és jelszó

micron s e c u r i t y p r o d u c t s EzeProx proximity kártyaolvasó és kódbillentyűzet

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

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

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Már megismert fogalmak áttekintése

Programozás alapjai II. (7. ea) C++

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

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Interaktív, grafikus környezet. Magasszintû alkalmazási nyelv (KAL) Integrált grafikus interface könyvtár. Intelligens kapcsolat más szoftverekkel

Átírás:

3 gyakorlat Folyamatmodellek, kooperáló viselkedésmodellek ok 1 Felhőalapú adattárolás 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 izálás során továbbítódnak a példányok között Ha izá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 Lokálisan a kliensnél, illetve (pl másik kliens tevékenységének hatására) módosulhat a szerveren is Felhasználói utasításra, valamint időről időre spontán módon a kliens és a szerver izálhat; ilyenkor az esetleges módosítás eljut a másik példányhoz is, és újra ban lesz a két másolat Ha a legutóbbi izáció óta egymástól függetlenül mindkét replikát módosították, akkor viszont konfliktushelyzet (ütközés) áll fenn Ilyenkor a kliens a saját és a szerverről letöltött változatot összehasonlítja, és a felhasználóra bízza az ütközés feloldását a) Modellezzük először a kliens (részleges) működését állapotgéppel! A kliens kezdetben állapotú (a lokális fájlmásolat egyezik azzal, ami a szerveren a legutóbbi izációkor volt / lett), ám bemenet hatására a állapotba kerül (és további hatására is ottmarad) Az bemenet hatására tetszőleges állapotból újra állapotba kerül {, } b) A szerver lehetséges állapotai (csupán az adott klienssel való izációt vizsgálva) a és a Előfordulhat, hogy a megfelelő i 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 Itt annyi az érdekesség, hogy spontán állapotátmenet lesz (már ha a lokális felhasználótól érkezett bemenetekre figyelünk csak és nem modellezzünk másik klienst, pl kliens2 ) 1

c) Ha a szerver állapotban van, akkor a kliens a bemenet hatására feltölti az esetleges lokális módosításokat a szerverre, és szintén állapotba kerül A bemenetet a szerver is megkapja Hol kooperál a két automata? A automata két új átmenetére [] őrfeltételt rakunk Érdekesség, hogy ez a másik automata pillanatnyi állapotától függ ez 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 {,, } [Sz] [Sz] {sz} d) Ha a szerver állapotban van, akkor a kliensnek adott bemenet hatására a szerver állapotba kerül; a kliens pedig állapotból nem mozdul, de á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? Itt egyszerre lép a két automata, tehát a bemenet mindkét automatát befolyásolja! (Megjegyzés: ilyenkor azt mondjuk, hogy nem a, hanem vegyes szorzatban van a két komponens automatája (főleg a lépnek, de néha, mert mindkettő egyszerre lép)) A kliens állapotgép új élei [] őrfeltételt kapnak Vegyük észre, hogy a állapotból két hasonló átmenet megy ki ellentétes őrfeltétellel: ([], ill []), amik összevonhatóak egyetlen őrfeltétel nélküli éllé (a lenti ábrán ez nem szerepel) Ez nyilván az az eset, amikor a kliens detektálja az ütközést Ilyenkor a szerver állapotba megy, mivel őnála a legutolsó izáció óta nincs újabb A kliensen kell feloldani a konfliktust Az ütközés állapotban az eseményekre például így léphetünk:,, izál ütközés 2

[Sz] {,, [Sz] } [Sz] {sz} ütközés [Sz] e) (Kiegészítő feladat) A kliens időnként magától is izál a szerverrel, felhasználói bemenet nélkül Mit jelent ez? Hol kooperál a két automata? Ugyanaz, mint előbb, csak külső bemeneti esemény helyett közös, belső randevú esemény (legyen pull és push) hatására Opcionális változtatás lehet, pl konfliktust ilyenkor sose idézzen elő pull [Sz] {,, [Sz] } push [Sz] {sz} {push, pull} push pull ütközés [Sz] f) (Kiegészítő feladat) Fejtsük ki a teljes összetett állapottéret a vegyes szorzatban résztvevő két automata alapján g) (Kiegészítő feladat) Ebben a modellben a szerver és a kliens közvetlenül figyelembe tudják venni egymás belső állapotát, és a izáció is pillanatszerűen végbemegy közöttük Egy valódi elosztott rendszerben azonban üzenetváltással kell a kliens és a szerver közötti kommunikációt megvalósítani; a küldés és a válasz megérkezte között pedig huzamosabb idő eltelhet Gondoljuk végig, hogy lehetne finomítani a modellt, hogy ezeket a részleteket is tükrözze! Otthoni feladat 3

2 Folyamat lefutása Egy folyamat végrehajtása során az összes lépést megfigyelve a következő eseménysort észleltük: Folyamat indul, elkezdődik, befejeződik, elkezdődik, elkezdődik, befejeződik, befejeződik, Folyamat vége Az alábbi folyamatmodellek közül melyek lehetnek helyes modelljei a rendszernek? a S b c d A b és a c folyamatmodellek Ahol nem illeszkedik, ott mutassuk meg, hogy az eseménysor hol tér el a folyamatmodelltől TODO folyamatmodell-példány v metamodell-modell van a diasor terminológiájában 3 Vezérlési folyam (forráskód alapján) Tekintsük az alábbi C nyelvű függvényt 1 unsigned long long f(int n) 2 { 3 if (n <= 0) { 4 return 0; 5 } else if (n == 1) { 6 return 1; 7 } else { 8 unsigned long long a = f(n - 1); 9 unsigned long long b = f(n - 2); 10 return a + b; 11 } 12 } a) Milyen vezérlési folyamot határoz meg a függvény? A rekurzív hívást egy hívás elemmel ábrázoljuk (a doboz sarkában van egy nyíl) [n 0] return 0 [n==1] return 1 [else] [else] Fibonacci(n-1) Fibonacci(n-2) return a+b b a b) Mi biztosítja azt, hogy a függvény előbb-utóbb terminál? Az n változó értéke minden hívás során csökken, így előbb-utóbb teljesül az n <= 0 feltétel c) Azonosítsuk az adatfüggőségeket (adatáramlást) a tevékenységek között! A két rekurzív hívásból megy adatáramlás az összeg returnjébe (az ábrán szaggatott vonalakkal) A lényeg, hogy a második híváshoz voltaképp nem kell az első eredménye 4

d) Ha a programozási nyelv / futtatókörnyezet megengedi, hol van lehetőség párhuzamosításra? A c) feladat megoldása alapján ez triviális e) Ellenőrizzük, hogy jólstrukturált-e ez a folyamat! A jólstrukturáltság definícióját lásd a jegyzetben 1 A folyamataink jólstrukturáltak Ezt úgy tudjuk megmutatni, hogy az egyes tevékenységektől indulva, belülről kifelé haladva megmutatjuk minden részfolyamatra, hogy jólstrukturált Utolsóként a teljes folyamatmodellt kell ellenőriznünk: Egy teljes folyamatmodell jólstrukturált, ha egyetlen belépési pontja (Flow begin) és kilépési pontja (Flow end) egy jólstrukturált blokkot zár közre A folyamatmodellünk jólstrukturált, mert a fenti feltételeknek megfelel 4 Folyamatmodell szöveges specifikáció alapján Egy nagy szoftveralapítvány kódtára (pl Git) számos nyílt forráskódú szoftver fejlesztésének ad otthont A megbízható belsős fejlesztőkön kívül külsősök is gyakran küldenek be hibajavításokat vagy újonnan megvalósított képességeket Oda kell figyelni arra, hogy a kiadott szoftverben csak jogszerűen (pl munkaadó beleegyezésével) bekerült forráskód szerepeljen a) Ha egy fejlesztő hozzá szeretne járulni egy projekthez az általa készített forráskóddal, akkor a saját státuszától függő lépéseket kell tennie 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 Ha a kívülről érkező kód egy bizonyos küszöbértéknél rövidebb (pl néhány soros hibajavítás), akkor az elfogadás után a készítőjének már csak egy rövid hozzájárulási nyilatkozatot kell tennie, hogy beolvasztható legyen a kódtárba A nagyobb lélegzetű külső hozzájárulások (pl egy teljesen új modul beépítése) esetében azonban 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! 1 http://docsinfmitbmehu/remo-jegyzet/folyamatmodellezespdf 5

[belső] Közvetlen [külső] Benyújt Code review [-1] [1] [kis változtatás] Nyilatkozat Beolvasztás [nagy változtatás] [nem friss] Jogi ellenőrzés Beolvasztás [friss] Jogi ellenőrzés Beolvasztás 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 (release) Ezen a ponton közzétesznek egy új stabil verziót a szoftverből, majd ismét a fejlesztésen a sor, és így tovább Készítsünk folyamatmodellt az itt leírt tevékenységekből! [nem stabil] Módosítás Kiadás jóvahagyása [stabil] Közzététel Az Módosítás tevékenység alatt azt értjük, amikor a fejlesztők a kódot készítik és benyújtják az újabb kiadást Vegyük észre, hogy a modell csak a folyamatra fókuszál, nem jelennek meg benne (a szöveges specifikációban még szereplő) szereplők (aktorok) c) Milyen viszonyban állnak egymással a fenti részfeladatokban elkészített folyamatmodellek? Két külön dolognak az életútja egyazon rendszerben (lehetnek furcsa átlapolódások, pl kiadási cikluson átívelő code review) TODO: a gyakorlatban ezeknek lehet egymásra hatása, ennek ellenőrzése nem témája ennek a gyakorlatnak (ld Modellek ellenőrzése témakör) d) (Kiegészítő feladat) Ellenőrizzük, hogy jólstrukturáltak-e a folyamataink! A b) feladatrész megoldásának folyamatmodellje nem jólformált, mert hiányzik a Flow end csomópont 6

5 Felhőalapú adattárolás (részletesebben) Az első 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! 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ó üzenete jut el a szerverre, és hogy világos-e, mikor kommunikálna a két komponens 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 A szerver értelemszerű : minden őrfeltétel vagy 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 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 ban 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 c) Hogyan modellezhető az üzenetek belső struktúrája? 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 7