47
Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév Feladatgyűjtemény – Megoldások Tartalomjegyzék 1. Struktúra alapú modellezés 1 1.1. Struktúra modellezése gráffal ................................ 1 1.2. Tulajdonságmodellezés .................................... 2 1.3. Típusok modellezése ..................................... 3 1.4. Űrlap ............................................. 5 2. Állapot alapú modellezés, kooperáló viselkedésmodellek 6 2.1. Közlekedési lámpa ...................................... 6 2.2. Háromrétegű architektúra .................................. 9 2.3. Érintőképernyős billentyűzet ................................. 10 2.4. „Mit ír ki?” .......................................... 11 2.5. Ablaktörlő ........................................... 12 2.6. Összetett rendszer modellezése ............................... 13 3. Folyamat alapú modellezés 17 3.1. Folyamat lefutása ....................................... 17 3.2. Vezérlési folyam (forráskód alapján) ............................ 18 3.3. Folyamatmodell szöveges specifikáció alapján ....................... 19 4. Modellek ellenőrzése 21 4.1. Folyamat statikus analízise ................................. 21 4.2. Dinamikus analízis teszteléssel ............................... 23 5. Teljesítménymodellezés 26 5.1. Zárthelyi megtekintése .................................... 26 5.2. Diszk teljesítménye ...................................... 28 5.3. Kétrétegű architektúra .................................... 28 5.4. Sziget közlekedési hálózata (* korábbi zárthelyi feladat) ................. 31 5.5. Tudásbázis (*) ........................................ 31 5.6. Közösségi oldal ........................................ 32 5.7. Szerver teljesítménye – teljesítménymodellezés ....................... 33 6. Adatelemzés 34 6.1. Szerver teljesítménye – felderítő adatelemzése ....................... 34 6.2. Képgaléria – adatelemzés .................................. 35 6.3. Szenzorhálózat (korábbi zh feladat) – adatelemzés .................... 36 6.4. Szenzorhálózat (korábbi zh feladat) – teljesítményelemzés (*) .............. 39 7. Követelménymodellezés 39 7.1. Vasúti biztosítóberendezés követelményelemzése ...................... 39 7.2. Rendszermodellezés tárgy követelményei .......................... 42 8. Kísérlettervezés* 43 8.1. Kísérlettervezés ........................................ 44 8.2. Kísérlet kiértékelése ..................................... 45 1. Struktúra alapú modellezés Közösségi fuvarszolgáltatás Közösségi fuvarszolgáltatást tervezünk, ahol bárki meghirdetheti a közeljövőben tervezett autós uta- zásait; mások pedig a rendszerünkön keresztül értesülhetnek erről, és utasként csatlakozhatnak (akár 1

Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

  • Upload
    others

  • View
    9

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

Feladatgyűjtemény – Megoldások

Tartalomjegyzék

1. Struktúra alapú modellezés 11.1. Struktúra modellezése gráffal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Tulajdonságmodellezés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3. Típusok modellezése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4. Űrlap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2. Állapot alapú modellezés, kooperáló viselkedésmodellek 62.1. Közlekedési lámpa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2. Háromrétegű architektúra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3. Érintőképernyős billentyűzet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.4. „Mit ír ki?” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.5. Ablaktörlő . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.6. Összetett rendszer modellezése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3. Folyamat alapú modellezés 173.1. Folyamat lefutása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.2. Vezérlési folyam (forráskód alapján) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3. Folyamatmodell szöveges specifikáció alapján . . . . . . . . . . . . . . . . . . . . . . . 19

4. Modellek ellenőrzése 214.1. Folyamat statikus analízise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.2. Dinamikus analízis teszteléssel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

5. Teljesítménymodellezés 265.1. Zárthelyi megtekintése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265.2. Diszk teljesítménye . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285.3. Kétrétegű architektúra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285.4. Sziget közlekedési hálózata (∗ korábbi zárthelyi feladat) . . . . . . . . . . . . . . . . . 315.5. Tudásbázis (∗) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315.6. Közösségi oldal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325.7. Szerver teljesítménye – teljesítménymodellezés . . . . . . . . . . . . . . . . . . . . . . . 33

6. Adatelemzés 346.1. Szerver teljesítménye – felderítő adatelemzése . . . . . . . . . . . . . . . . . . . . . . . 346.2. Képgaléria – adatelemzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356.3. Szenzorhálózat (korábbi zh feladat) – adatelemzés . . . . . . . . . . . . . . . . . . . . 366.4. Szenzorhálózat (korábbi zh feladat) – teljesítményelemzés (∗) . . . . . . . . . . . . . . 39

7. Követelménymodellezés 397.1. Vasúti biztosítóberendezés követelményelemzése . . . . . . . . . . . . . . . . . . . . . . 397.2. Rendszermodellezés tárgy követelményei . . . . . . . . . . . . . . . . . . . . . . . . . . 42

8. Kísérlettervezés* 438.1. Kísérlettervezés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448.2. Kísérlet kiértékelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

1. Struktúra alapú modellezés

Közösségi fuvarszolgáltatás

Közösségi fuvarszolgáltatást tervezünk, ahol bárki meghirdetheti a közeljövőben tervezett autós uta-zásait; mások pedig a rendszerünkön keresztül értesülhetnek erről, és utasként csatlakozhatnak (akár

1

Page 2: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

csak egy rövidebb szakaszon is), ha beszállnak az üzemanyagköltségbe. Az egyes fuvarokat különbözőfuvarszakaszokra osztjuk. Nem feltétlenül végig az autó gazdája fog vezetni, ez megbeszélhető, azonbanminden fuvarszakasz során jelen kell lennie.A szolgáltatásunk eddig zárt tesztüzemben futott, a fuvarokat ad-hoc szerveztük, és az adatokat nemrögzítettük szisztematikus módon. Hamarosan szeretnénk nyilvánosan is elindítani a szolgáltatást. Awebes felületen az utazásszervezéssel kapcsolatos információkat elérhetővé kell tenni, ezért valamilyenmódon nyilván kell ezeket tartanunk.

1.1. Struktúra modellezése gráffal

Szeretnénk a rendszer mögöttes adatmodelljét megtervezni. Ehhez az eddigi fuvarok tapasztalataialapján összeállítottunk néhány tipikus forgatókönyvet.

a) Anna Szombathelyről autóutat tervez Győr és Budapest érintésével Debrecenbe. Balázs Győrbőlindít fuvart Budapestre, majd onnan tovább Kecskemétre. Alkossunk gráfmodellt a szövegbenmegadott viszonyok alapján!MegoldásItt egyszerűen (példány)gráfot kell építeni a szöveges leírás alapján. Sokféleképpen lehet, példáullehetnek a városok a csomópontok és a közöttük futó irányított élek a fuvarszakaszok (a kocsigazdájával címkézve). Természetesen máshogy is ábrázolható ugyanez – de erről majd egy későbbipontban.

b) Dani győri, és nincs kocsija. Milyen gráfelméleti művelet ad választ arra, hogy a felajánlottfuvarokba utasként becsatlakozva mely városokba lehet Győrből eljutni? (Feltehetjük, hogy azautósok az utazás időpontját tekintve rugalmasak.)MegoldásA Győrből irányított utakon elérhető csomópontokat keressük. Ha az átszállásokat ki akarjukzárni (ott ugye figyelembe kellene venni az érkezés és indulás időzítését, amely egyelőre nem részea modellünknek), akkor a csupa egyforma élcímkéjű irányított utakra van szükségünk. EzeketGyőrből induló gráfbejárással határozhatjuk meg, amelyre ismertek algoritmusok.

c) Csilla úgy döntött, hogy Anna autójával fog utazni Szombathelytől Budapestig; Dani GyőrbőlKecskemétre kért fuvart. Mivel Anna előző este sokáig dolgozott, az indulás után aludna, ezértúgy beszélték meg, hogy Budapestig Csilla vezet. Balázs végig maga vezet. Alakítsuk át a gráfotolyan módon, hogy kifejezze ezt a tudást!MegoldásA fuvarszakasz kiindulópontja, célja, sofőrje és utasai között többes viszony áll fent. Ezen vi-szonyokat úgy tudjuk gráfként kezelni, ha bevezetünk egy személyt ( ) és egy fuvarszakasztreprezentáló csompontot ( ), amelyhez utána élekkel köthető a többi elem. Így tehát a meglévőéleket csomóponttal és több új éllel helyettesítjük; élet csomóponttá transzformáltunk. Fontosészrevétel, hogy személy és fuvarszakasz között lehet „kínál”, „sofőrje” és „utazik” jelentésű él is,ezeket legcélszerűbben címkével tudjuk megkülönböztetni. A „sofőrje” él implicit azt is jelenti,hogy az illető az adott fuvarszakaszon utazik.

2

Page 3: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

d) Balázsnak nem ez az első közösségi fuvarja; korábban Kecskemétről hirdetett utazást Győrbe Bu-dapesten keresztül. Módosítsuk a gráfot olyan módon, hogy megjelenjen benne ez az információis!MegoldásMegjelenik a fuvarszakaszokat összefoglaló fuvar csomópont ( ), amely a hirdetővel van össze-kötve. Ez például arra is jó, hogy lássuk, hogy Budapest-Győr-Budapest fuvar például nincs: eza fuvar fogalom nélkül nem lenne egyértelmű.

e) Milyen művelettel kaphatunk a teljes tudást reprezentáló gráfból egy egyszerűsített nézetet,amelyik csak a hirdetőket, az utazásaikat, és az utazásokat alkotó szakaszokat mutatja?MegoldásCsomópontokra és élcímkére szűrjük a részgráfot.

1.2. Tulajdonságmodellezés

Az eddigi fuvarok során összegyűjtöttünk néhány adatot. Ezeket az alábbi táblázat tartalmazza.

ért.száma

ért.összege

kategória név jelszó rendszám dohányos A/C díjfizetés jog.sz.

6 24 kocsi ABC-123 nincs17 71 személy Anna qwe nem KL204816 49 személy Balázs pass igen MN409614 45 személy Csilla 12345 igen kártya1 5 személy Dani barát nem utalás0 0 kocsi DEF-456 van7 31 személy Eszter 2501 nem kártya2 8 személy Feri almafa nem Bitcoin

1. táblázat. A Fuvarok táblázat.

3

Page 4: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

Egy-egy fuvar után 1–5 skálán lehet értékelni, hogy az útitársak és az autó mennyire járultak hozzá akellemes utazáshoz. A fenti táblázat többek között a begyűjtött értékeléseket is mutatja.

a) Amikor valaki a lehetséges fuvarok közül válogat, az útitársak és az autó értékelése mellett alégkondicionáló megléte, ill. a dohányzás is fontos szempont lehet. A döntéshez azonban nemkell, és nem is szabad a felhasználóknak megismernie a sofőrök jelszavát és jogosítványszámát,valamint hogy a többi útitárs a fuvar megegyezéses díját milyen módszerrel rendezi a cég fe-lé. Milyen (tulajdonságmodellezésnél megismert) művelettel kapható meg az ehhez a nézethezszükséges információ?MegoldásEz egy vetítés művelet, amely a három megnevezett jellemzőt eldobja, a többit megtartja.SQL-ben:SELECT "ért. száma", "ért. összege", "kategória", "név", "dohányos", "A/C"FROM FuvarokMegjegyzés: A továbbiakban SELECT *-ot fogunk használni, hogy ne kelljen minden oszlopnevét kiírni. Azonban SELECT *-gal olyan információkat is megkapunk, amit adatvédelmiokokból a felhasználónak nem kéne továbbadni. Precízebb lenne, ha felsorolnánk a publikusoszlopok neveit az a) megoldáshoz hasonlóan.

b) A rangsorolás az értékelések pontszámának nem az összege, hanem az átlaga alapján történik.Milyen művelettel bővíthető ki a tulajdonságmodell ezen számítás eredményével?MegoldásVegyük fel egy új „értékelések átlaga” oszlopot (jellemzőt), amely származtatott tulajdonságkéntaz alábbi képlettel számítható (ha legalább egy értékelés van már):

értékelések átlaga = értékelések összegeértékelések száma

SQL-ben:SELECT *, ("értékelések összege" / "értékelések száma") AS "értékelések átlaga"FROM FuvarokEz a megoldás magában hordozza a nullával osztás lehetőségét. Ezt számos módon kiküszö-bölhetjük, most a legegyszerűbb az eredmények szűrése, hiszen várhatóan csak az értékelésselrendelkező elemeket szeretnénk megtekinteni (lásd a következő feladatban):SELECT *, ("értékelések összege" / "értékelések száma") AS "értékelések átlaga"FROM FuvarokWHERE "értékelések száma" > 0Még elegánsabb lenne a megoldás, ha a nullával osztás tudna üres cellákat (N/A) generálni, deerre ebben a tárgyban nem térünk ki.

c) Eszter és Feri együtt keres fuvart. Eszter lehetőleg 4 pont feletti értékelésű autót szeretne. Fericsak légkondicionálóval rendelkező kocsik közül hajlandó válogatni. Milyen műveletekkel kapha-tóak meg a választási lehetőségeik?MegoldásEz szűrés művelet lesz, amely csak azokat a sorokat tartja meg, amelyekben a „értékelésekátlaga” jellemző értéke egy adott tartományba esik és a „légkondicionáló” jellemző értéke „van”.SQL-ben (ismét csak az értékelt elemeket megtartva):SELECT *, ("értékelések összege" / "értékelések száma") AS "értékelések átlaga"FROM FuvarokWHERE "értékelések száma" > 0 AND "értékelések átlaga" > 4 AND "A/C" = "van"

1.3. Típusok modellezése

A szolgáltatáshoz szeretnénk adatbázist tervezni. Ehhez fontos, hogy megkülönböztessük a típusokata rendszerünkben és keressünk validációs szabályokat.

a) Milyen alapvető elem- és kapcsolattípusokat sugallnak a gráfmodellben látható megadott viszo-nyok? Ábrázoljuk típusgráffal!MegoldásÉszrevehetjük, hogy „sofőrje” címkéjű él mindig fuvarszakasz jelentésű csomópontból megy egyszemélyt jelentő csomópontba: lehet, hogy itt rögtön két csomóponttípust és egy éltípust fogtunk!

4

Page 5: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

A csomóponttípusok és éltípusok megválasztása elég egyértelmű, de persze az élek elnevezése,irányítása egyedi is lehet; például

(fuvarszakasz)− [sofőrje]→ (személy)

él helyett lehet(személy)− [vezet]→ (fuvarszakasz)

él is, akár összevissza is. Érdemes időt szentelni arra, hogy ezekben az esetekben konzisztensenegyféle nevezéktant használjunk.Ez alapján egy lehetséges típusgráf:

A példánygráfban a típusgráfnak megfelelő csúcsok és élek szerepelhetnek, így érdemes összevet-ni, hogy minden példánygráfbeli elem megfelel-e a típusgráfnak.(Megjegyzés: a gráfban nem jelent meg az autó, ezzel a típusgráfban most nem foglalkoztunk.)

b) Milyen típusokba sorolhatóak a táblázatban szereplő elemek a rajtuk értelmezett jellemzőik köreés a kapcsolataik alapján?MegoldásÉszrevehetjük, hogy a jellemzők egy köre (pl. „rendszám”) csak az értékelhető elemek egy részén,míg más jellemzők (pl. „jogosítványszám”) csak a többi értékelhető dolgon értelmezettek. Ha-sonló megfigyelésre juthatunk a gráfban tapasztalt kapcsolattípusok alapján is. A két csoportotépp a „kategória” jellemző értéke alapján különíthető el. Vegyük észre, hogy egy értékelhetőelemet alapvetően jellemez, hogy személy vagy jármű-e, és ez nem fog később megváltozni. Eztehát két típusnak tekinthető.

c) Definiáljunk egy típushierarchiát a problémára!MegoldásVegyük észre, hogy az „értékelhető elem” mégis közös általánosítása a kocsiknak és személyeknek,hiszen bizonyos aspektusból hasonló a kezelésük. Tehát a „személy” és a „kocsi” az „értékelhetőelem” két altípusának tekinthető.

Kézenfekvőnek tűnhet, hogy megkülönböztessük a sofőr (autóval és jogsival rendelkező) felhasz-nálókat az utasoktól (akik csak betársulnak és fizetnek ezért). Ez azonban nem jó típusbesorolás,mivel az idő folyamán változhat (pl. Feri idővel jogosítványt szerezhet és autót vehet; Balázslegközelebb dönthet úgy, hogy más autójával utazik), és az is lehet, hogy nem az autó gazdájavezet egy adott szakaszon. Általában a típus szót (szemben pl. a fogalom szóval) csak olyankategorizálásnál használjuk, amikor egy elem besorolása nem változik az időben, ezért nemjavasolt típusrendszert alapozni arra, ki sofőr és ki utas. Azonban egy-egy fuvar(szakasz) eseténvannak olyan szerepek, hogy kik ülnek az autóban, ki közülük a kocsi gazdája, és ki vezet.Tanulság: a szerep és a típus nem ugyanaz.

d) (Kiegészítő feladat) A típusgráf, a típushierarchia és a jellemzők értelmezési tartománya alapjánrajzoljunk metamodellt! Milyen további megkötésekkel (jólformáltsági kényszerekkel) egészíthet-jük ki?MegoldásA típusgráf is egyfajta metamodellje a példánygráfoknak. Az a) feladatrész során rajzolt gráfot atípushierarchiával kiegészítve (esetleg új kapcsolatok feltüntetésével) megkapjuk a metamodellt.

5

Page 6: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

Jólformáltsági kényszerre példák:• Minden fuvarnak legyen legalább egy szakasza.• A fuvar szakaszai egymáshoz csatlakozzanak, tehát a harmadik szakasz ott végződjön, ahon-

nan a negyedik indul

1.4. Űrlap

Az alábbi metamodell alapján készítsünk egy űrlapot, amelynek segítségével az utasok egy-egy utazástkövetően visszajelzést adhatnak a sofőrről. Nem szeretnék túl sok időt elvenni az utastól, ezért a legtöbbinformációt eldöntendő, illetve feleletválasztós kérdések formájában gyűjtjük be. Az utasnak lehetőségevan arra is, hogy saját szavaival összefoglalja tapasztalatait egy rövid szöveges vélemény keretében.

a) Milyen információra van szükségünk a sofőr azonosításához?Megoldás

A sofőrt azonosíthatjuk például a személyi vagy a jogosítványszáma alapján. Mindkettőadatvédelmi kérdéseket vet fel. Általános esetben az a megoldás, hogy a rendszerünk utazásazonosítót generál, amely arra szolgál, hogy az utazás adatokat (indulás, cél, sofőr, utasok stb.)egy (nem publikus) adatbázisban tárolja, így az utasnak elég ezt megadnia.

b) Gyűjtsünk össze pár kérdést, csoportosítsuk őket, majd adjuk meg az elkészült űrlapnak egymodelljét. (Ez már példánymodell lesz a későbbiekben.)MegoldásLehetséges kérdések (a teljesség igénye nélkül):

• Utazás azonosító (Rövid válasz)• Szolgáltatás értékelése (1-től 5-ig) (Feleletválasztás)• Minek kapcsán tapasztalt esetlegesen hiányosságokat: pontos indulás és/vagy érkezés, meg-

állások gyakorisága, ülés kényelmessége, autó felszereltsége (Többszörös feleletválasztás)• Szöveges vélemény, egyéb tapasztalatok (Hosszú válasz)

c) Top-down vagy bottom-up tervezést alkalmaztunk?MegoldásEbben az esetben bottom-up tervezés volt (a kérdésektől a szekciókon át az űrlap megalkotásá-ig), míg a metamodellt top-down terveztük (az űrlaptól a szekciókon át eljutottunk a kérdésekig,majd összegyűjtöttük a lehetséges típusokat).

6

Page 7: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

d) (*) Ha az utas az ötös skálán való értékelésnél hármasnál rosszabbat ad a sofőrre, akkor min-denképpen szeretnénk szöveges véleményt. Hogyan tudnánk ezt a modellben megfogalmazni (ésmelyikben)?MegoldásJólformáltsági kényszerrel jelezhetjük a metamodellben, amely alapján a példánymodell ma-ga már validálható. A fenti követelmény maga a kényszerfeltétel, informális stílusban; formáliseszközöket más tárgyakból tanulunk majd rá.

Kiegészítő feladat: megvalósítás programmal

a) Készítsünk olyan adatstruktúrát (tetszőleges programozási nyelven), amely egy ilyen fuvarszer-vező információtartalmának reprezentálására szolgál!

b) Egészítsük ki olyan eljárással (metódussal) a programot, amely képes felsorolni, hogy egy meg-adott városból hova juthatunk el (átszállás nélkül) a meghirdetett fuvarokkal!

c) Készítsük el az előző eljárás okosabb változatát, amelyik igény szerint elkerüli azokat a fuvarokat,ahol legalább egy szakaszon dohányzó útitársunk lenne!

MegoldásKiindulási ötlet: készítsünk egy-egy C struktúrát a Fuvar és a Fuvarszakasz jellemzőivel, valaminthivatkozásokkal egymásra:

1 typedef struct {2 char* user_name;3 //...4 BOOL smokes;5 } Person;67 typedef struct {8 char* start_city;9 char* end_city;

10 time_t date;11 //...12 Person* array_of_passengers;13 } Trip_fragment;1415 typedef struct {16 Trip_fragment* fragments;17 //...18 } Trip;

2. Állapot alapú modellezés, kooperáló viselkedésmodellek

2.1. Közlekedési lámpa

Közlekedési lámpát vezérlő elektronikát tervezünk.a) Készítsük el egy egyszerű piros–sárga–zöld közlekedési lámpa olyan állapotterét, amely kellően

finom ahhoz, hogy a lámpák vezérlését ez alapján lehessen végezni! Győződjünk meg arról, hogyaz állapottér kizárólagos és teljes!Megoldás{ piros, sárga, zöld, piros-sárga, villogó sárga, kikapcsolt }, röviden: S = {p, s, z, ps, s, ◦}. Ezkizárólagos és teljes.

b) A három égőnek külön-külön mi az állapottere? Milyen absztrakciós viszony áll fent a lámpaés az egyes égők állapottere közt? Hogy viszonyul a lámpa állapottere a három égő állapotterétreprezentáló három állapotváltozó direkt szorzatához?MegoldásSp = {p, ◦}, Ss = {s, s, ◦}, Sz = {z, ◦}.Milyen absztrakciós viszony áll fent a lámpa és az egyes égők állapottere közt? Az absztrakciósviszony a vetítés. (Szemléletesen: pl. betesszük a lámpát egy dobozba, amiből csak a piros égőlátszik ki, akkor az Sp állapotteret látjuk.) Egy komponens állapottere mindig állapottere ateljes rendszernek, tehát a komponens állapottere absztrakciója a teljes rendszer állapotterének(hiszen a többi komponens állapota „elhagyható”, azaz összevonható egy állapotba).

7

Page 8: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

Másként megfogalmazva: az egyes égők állapotterét egy-egy predikátumabsztrakció során is meg-kaphatjuk. A predikátumként felhasznált állítás: (folyamatosan) világít-e az adott égő. Az ígymegkapott állapothalmaz: {0, 1}. A sárga lámpa esetén további állításra van szükség (villog-e asárga égő), hogy megkülönböztessük a villogó állapotot. A sárga égő így kapott állapothalmaza:{〈0, 0〉, 〈0, 1〉, 〈1, 0〉}, ami megfelel a Ss = {s, s, ◦} állapotoknak.Direkt szorzat: Sp×Ss×Sz, 2 ·3 ·2 = 12 elemű lesz. A direkt szorzat elemei háromtagú vektorok(más néven n-esek, tuple-ök), pl.: 〈p, s, ◦〉, amit most ps formában fogunk rövidíteni.Az így kapott állapottér potenciális állapottér, amely tartalmazza a valódi állapotteret, annakegy felülbecslése. A potenciális állapottér nem minden állapota fordul elő a valódi állapottérben.S ⊂ Sp × Ss × Sz.A Sp × Ss × Sz Descartes-szorzat táblázatban:

SzSp Ss z ◦

ps psz ps∗

s psz ps◦ pz p∗

◦s sz s∗

s sz s∗

◦ z∗ ◦∗

A *-gal jelölt állapotok az eredeti állapottérben is megjelennek.

c) Mik az érvényes állapotátmeneti szabályok? Készítsük el az (egyszerű) állapotgráfot!MegoldásA cél az érvényes állapotátmeneti szabályok megállapítása a hat állapot között. Sok tervezőidöntéssel szembesülünk, ezekre egy-egy választ adtunk zárójelben:

• Milyen állapotba kerül a rendszer bekapcsoláskor? (villogó sárga)• Ha elmegy az áram, az hibás működés? (igen, vegyük úgy, hogy csak tervezett áramszünetek

vannak)• Csak a szabályos működést modellezzük? (igen)• Pirosból pirosba mehet? (nem rajzoljuk fel, mert semmi megfigyelhető nem történik a mi

szempontunkból )• Piros-sárgából mehet rögtön pirosba, pl. baleset esetén? (nem)

A KRESZ1 könyvben található állapotgép-jellegű ábra, de csak a piros, piros-sárga, zöld és sárgaállapotokat tartalmazza, a villogó sárga és a kikapcsolt állapotokról csak a szövegben esik szó.Az állapotgép bárhonnan kerülhet villogó sárga (s) állapotba.Egy lehetséges megoldás:

◦ s

s p

z ps

d) Hogyan fejezhető ki ugyanez a működés tömörebben hierarchikus állapotokkal?MegoldásA lámpa bármely üzemszerű állapotból sárga villogó állapotba kapcsolható – ha tehát a

1Közúti Rendelkezések Egységes Szabályozása

8

Page 9: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

{p, ps, s, z} állapothalmazra közös absztrakcióként bevezetjük a főciklus hierarchikus állapotot,akkor a 4 helyett 1 állapotátmeneti szabállyal kifejezhető ez a működés.

main region

off

főciklus

R1

p ps

s z

š

e) Amikor a lámpa elektromos fogyasztását vizsgáljuk, csak az érdekel, hogy a három égőből hányég egyszerre. Absztraháljuk az állapotgépet úgy, hogy az állapotokat csak a fogyasztásuk külön-böztesse meg!MegoldásVegyünk fel egy 4 állapotú állapotteret, az égők fogyasztása alapján: 0, ½, 1, 2 (egyszerre mind-három égő nem világíthat). Az 1-es állapotra rajzolhatnánk hurokélet (pl. zöld → sárga → pirosesetén mindig csak egy lámpa világíthat), de ezt nem tesszük meg, mivel nem figyelhető megkívülről ezen az absztrakciós szinten (ha betesszük a lámpákat egy dobozba, amiből csak annyilátszik ki, hogy 0, ½, 1 vagy 2 égő világít, és nem látjuk a pozíciójukat és a színüket, akkor nemtudunk különbséget tenni például a p, a s és a z állapotok között). Többszörös éleket (ha nincsrajtuk különböző bemenet/kimenet) nem rajzolunk be.

0 ½ 1 2

f) A piros jelzés végén van egy olyan időszak, amikor a merőleges gyalogosátkelő zöld lámpája márvillog. Finomítsuk úgy az (absztrakció előtti) állapotgráfot, hogy ez az állapot elkülöníthetőlegyen!MegoldásBontsuk fel a piros állapotot két állapotra: piros és a gyalogosoknak folyamatos zöld (pfz), pirosés a gyalogosoknak villogó zöld (pvz). Az állapotgráfra is vigyük át a változtatást: a két állapotközött pfz → pvz átmenet van, a többi értelemszerűen berajzolandó.Itt tovább lehet gondolni azt, hogy szükség van-e olyan állapotra, amikor az autósoknak és agyalogosoknak is piros a lámpa. Ha az előző részben úgy döntöttünk, hogy a lámpának kötelezőenpirosnak kell lennie bekapcsolás után, akkor itt is érdemes ezt megvalósítani: ebben az esetbena piros állapotot három állapotra kell felbontani: pp, pfz, pvz.

9

Page 10: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

◦start s

s pp pz pz

psz

g) Egy út mentén 10 jelzőlámpa található, egyenként 4 állapottal. Legfeljebb hány állapota lehet ateljes rendszernek? Várhatóan kell-e minden állapotot kezelnünk?Megoldás410 = 220 =

(210)2 ≈ 106.

Természetesen nem biztos, hogy minden állapot elérhető is lesz , hiszen a jelzőlámpák állapotát-menetei nem biztos, hogy függetlenek egymástól a különböző hangolási kényszerek miatt. Példáula zöldhullám beállítása miatt van egy „ritmusa” a 10 jelzőlámpából álló rendszernek.Gyakran az is hasznos lehet, ha csak azt modellezzük, hogy egy szakaszba összevonunk többkereszteződést és azt vizsgáljuk, hogy az adott szakaszon mehetnek-e autók vagy sem. Pl. aforgalomirányításnál. Ebben az esetben a szakaszok meghatározásához arra van szükségünk,hogy ismerjük rendszer felépítését, azaz legyen strukturális modellünk a rendszerről.

2.2. Háromrétegű architektúra

Egy informatikai rendszert szeretnénk modellezni, melyet háromrétegű architektúra valósít meg azalábbiak szerint:

webszerverkérés alkalmazásszerver adatbázisszerver

A használt fogalmak:• Adatbázisszerver: hosszútávon tároljuk az adatokat• Alkalmazásszerver: az üzleti logikáért felelős alkalmazást futtatja• Webszerver: megjelenítésért felelős, generálja a HTML oldalakat

Háromrétegű kiszolgáló infrastruktúránk viselkedésének modellezésére megfelelő állapotterek-e azalábbiak?

a) { Webszerver dolgozik, Alkalmazásszerver dolgozik, Adatbázisszerver dolgozik } MegoldásNem. Egyszerre több gép is dolgozhat.

b) { Leállítva, Tétlen üzemel, Aktívan dolgozik } MegoldásIgen. Természetesen elképzelhetők további állapotok is, pl. hibernált.

c) N (mint a pillanatnyilag feldolgozás alatt álló kérések száma) MegoldásIgen. Fontos azonban, hogy ez egy végtelen állapotteret eredményez – bizonyos esetben egy ilyenmodellre van szükségünk a rendszer elemzéséhez (ld. még a Teljesítménymodellezés témakört).A kizárólagosság mellett fontos vizsgálni, hogy teljes-e. Pl. 3,5 vagy −9 kérés nem lehet a rend-szerben, ezért teljes. Ezzel persze a kérések eloszlását nem tudjuk megnézni.

d) Z (mint a pillanatnyilag feldolgozás alatt álló kérések száma) MegoldásIgen. Teljes és kizárólagos, bár nem minden eleme elérhető.

e) { A kérés feldolgozása még nem kezdődött el, A szerverek épp dolgoznak a kéréssel, A kéréskiszolgálása befejeződött } MegoldásIgen, ha egyértelmű, mit jelent „a kérés”, ugyanis a rendszerünknek természetesen sok kérést kellkiszolgálnia az idő múlásával. Ha teljesen egyértelműen egy adott, jól beazonosítható kérésrőlbeszélünk (pl. Gipsz Jakab hétfő reggel 10:03-kor beérkezett kérése), akkor szigorúan ezen kéréséletútjának vizsgálatára teljesen megfelel ez az állapottér, elhanyagolva az összes többi kéréssorsát.

10

Page 11: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

f) { Igaz } ∗ MegoldásIgen, minden állapottér ennek a finomítása.

2.3. Érintőképernyős billentyűzet

Modellezzük állapotgéppel egy mobiltelefon érintőképernyőjére tervezett, az előadáson is bemutatottvirtuális billentyűzetet! A billentyűzeten egyszerre vagy a kisbetűk, vagy a nagybetűk, vagy a szá-mok és fontosabb szimbólumok, vagy ritkább szimbólumok láthatóak. Az elsődleges üzemmódváltógomb a betűk és a számok/szimbólumok beírása között vált, a másodlagos üzemmódváltó pedig ezenkategóriákon belül. Létezik továbbá egy olyan nagybetűs állapot is, amely egy betű leütése után auto-matikusan kisbetűsre vált. Vegyük figyelembe a bal felső gombot (q/Q/1/=), ill. a két üzemmódváltógombot mint bemenetet, és a szövegmezőbe begépelt karaktereket mint kimenetet!

MegoldásA billentyűzet képernyőképeken:Fontos, hogy csak egy billentyűt kell feltüntetnünk az állapotgépen, ez segíti az áttekinthetőséget is.Jelöljük a bal felső gombot k-val (key), az fn helyén lévő gombot fn1-gyel, a shift helyén lévő gombotfn2-vel. Egy lehetséges megoldás az alábbi:

lower Upper CAPS

number symbol

fn2/− fn2/−fn2/−

fn1/− fn1/− fn1/−

fn2/−

fn2/−

k/q

k/Q

k/Q

k/1 k/=

fn1/−fn1/−

A hierarchikus állapotgép:

main region

letters

R1

lower Upper CAPS

numbers and symbols

R1

number symbol

fn2/-

fn2/-

fn2/-fn2/-

fn1/-

b/q

fn1/-

b/Q

fn2/-

b/=

b/Q

b/1

fn2/-

fn2/-

b/q b/Q

fn2/-

fn2/-

b/1 b/=

fn1/-fn1/-

b/Qfn2/-

11

Page 12: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

A jelenlegi megoldásnál a number és a symbol állapotokból az fn megnyomására mindig a lower álla-potba kerül az automata. A valóságban a fejlettebb implementációk képesek megjegyezni azt, hogy alower, Upper és CAPS állapotok közül melyikben voltak és abba lépnek vissza.Ez az állapotgépben úgy valósítható meg, hogy finomítjuk a „number” és a „symbol” állapotokat(numbers with lower, numbers with Upper, numbers with CAPS, . . . ), valamint emlékező állapotot(history state-et) vezetünk be. Erről a Szoftvertechnológia tárgyban lesz részletesen szó.

2.4. „Mit ír ki?”

Tekintsük az M állapotgépet!Megjegyzés: a „−” jel a bemeneti jel pozíciójában spontán állapotátmenetet jelöl, a kimenet helyén pedigkimenet hiányát, egyik esetben sem a digitális áramkörtervezésben használt don’t care szimbólum.

0

2

1

gomb / sípjel érme / −

gomb / érme

érme / −− / golyók

gomb / érme

érme / érme

a) Milyen valós rendszer lehet az M állapotgép mögött, hogyan működik?MegoldásAz állapotgép egy fizetős biliárdasztal érmebedobó modulját („érmeszerkezet”) modellezi,amely két érme (pl. 100 forintos) bedobása után kiadja a játékhoz szükséges golyókat. A golyókiadása, pénz bedobása stb. mind pillanatszerű eseményként van modellezve (ez egy modellezéssorán alkalmazott egyszerűsítés). A rendszer állapotai az adott pillanatban az érmeszerkezetbentalálható érmék darabszámát tükrözik. A gomb egy bedobott érmét ad vissza, ha a gépbenvan érme, egyébként sípjelet hallat. A rendszer nem engedi, hogy kettőnél több érme legyen agépben. Amennyiben két érme van a gépben, rövid várakozás után egy spontán állapotátmenetkeretében az érmeszerkezet időleges tárolójából átkerülnek az érmegyűjtőbe, az asztal pedigezzel egyidejűleg a játékosok rendelkezésére bocsájta a golyókat. Ha a játékosok meggondoljákmagukat, a golyók kiadása előtt gyorsan visszakérhetik még az érméiket a gomb benyomásával.

b) Determinisztikus-e ez a viselkedésmodell? Hozzávehető-e, ill. elhagyható-e egyetlen állapotátme-neti szabály, hogy ez megváltozzon?MegoldásMikor determinisztikus egy állapotgép? Akkor, ha „legfeljebb egy kezdőállapota van, valamintbármely állapotban, bármely bemeneti esemény bekövetkeztekor legfeljebb egy tranzíció tüzel-het.” Ez úgy dönthető el, ha végignézünk minden állapotot és a kimenő élekre ellenőrizzük, hogyminden bemenet esetén csak egy él megy-e ki, ill. nincs-e spontán átmenet. Itt minden állapotbólcsak egy él megy ki, azonban van olyan állapotátmenet, amelynél „−” karakter van a bemene-ten (tehát bármely bemenet helyett választható ez), ezért az állapotgép nem determinisztikus.Erről teljes bizonyosságot szerezhetünk a következő gondolatmenettel: ha bedobunk 2 érmét,majd 5 másodperc múltán megnyomjuk a gombot, sípjelt vagy érmét kapunk-e vissza? Ez attólfügg, hogy a gép feldolgozta-e a két érmét a gombnyomás előtt (tehát végbemegy-e ez a spontánátmenet).Megállapíthatjuk, hogy a modell nem tartalmazza azt az információt, amely alapján előre eldönt-hetnénk, hogy a két lehetőség közül ebben a helyzetben melyik fog megtörténni; nem határozzameg (determinálja) teljesen a viselkedést. Ennek egyik lehetséges oka, ha maga az érmeszerkezet

12

Page 13: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

konstrukciójából adódóan véletlenszerűen dönti el, lejárt-e a türelmi idő; a nemdeterminizmusmásik lehetséges oka a modellezés során alkalmazott absztrakció (pl. egy időzítő határozza meg,mikor történjen meg az itt spontánként modellezett állapotátmenet).Determinisztikussá tehető-e az állapotgép? Igen, a „2” és a „0” állapotok közötti tranzíció tör-lésével, de így más lesz a viselkedése.

c) Absztraháljuk az M állapotgépet a {{0}, {1, 2}} állapotpartíció szerint!MegoldásA megoldás az M ′ állapotgép, melynek állapotgráfja:

0 ≥ 1

gomb / sípjel érme / −

gomb / érme

− / golyók

érme / −

gomb / érme

érme / érme

Az M ′ állapotgép az M állapotgépből 1 és 2 állapotok összevonásával keletkezik.A kapott állapotgép az eredeti állapotgép egy absztrakciója, mely az eredeti állapotgép végrehaj-tássorozatain kívül számos más végrehajtássorozatot is megenged. Ezek közül néhány akár valósrendszer viselkedése is lehet: az absztrakt rendszer a közös absztrakciója az n érmével (n ≥ 1)működtethető asztaloknak. Az absztrakt állapotgép ugyanakkor olyan végrehajtássorozatokatis megenged, amelyeket nem egy valós biliárdasztal viselkedését modellezik.

d) Hol és milyen jellegű nemdeterminizmus figyelhető meg az így kapott absztrakt modellen?MegoldásAz absztrakt állapotgépben a spontán állapotátmeneten kívül is jelenik meg nemdeterminizmus:≥ 1 állapotban a gomb, illetve érme bemeneti események több tranzíciót is kiválthatnak. Amost újonnan bevezetett nemdeterminizmus forrása az absztrakció: elhanyagoljuk azt a tudást,amely alapján determinisztikusan dönteni lehetne (ez jó is lehet, pl. ha sok rendszerről egyszerreakarunk beszélni).

2.5. Ablaktörlő

Egy autóban az első ablaktörlőnek három állapota van (első kikapcsolva, első lassan töröl, első gyorsantöröl), a hátsó ablaktörlőnek kettő (hátsó kikapcsolva, hátsó töröl). Az első ablaktörlő működését azM1 állapotgép, a hátsóét az M2 állapotgép modellezi.M1 állapotgép:

első kikapcsolva

első lassan töröl

első gyorsan töröl

kapcsoló felfelé kapcsoló lefelé

kapcsoló felfelé kapcsoló lefelé

M2 állapotgép:

hátsó kikapcsolva hátsó töröl

kapcsoló befelé

kapcsoló kifelé

a) Készítsük el az M1 és M2 állapotgépek aszinkron szorzatát! MegoldásAz aszinkron szorzat:

13

Page 14: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

〈ek, hk〉

〈el, hk〉

〈egy, hk〉

〈ek, ht〉

〈el, ht〉

〈egy, ht〉

befelé

kifelé

befelé

kifelé

befelé

kifelé

felfelé lefelé

felfelé lefelé

felfelé lefelé

felfelé lefelé

b) Hány állapota és átmenete van az így kapott modellnek? MegoldásAz állapotok száma a komponensek állapotszámainak szorzata (3 · 2 = 6). Az átmenetek száma|S(M1)| · |T (M2)|+ |S(M2)| · |T (M1)| = 3 · 2 + 2 · 4 = 6 + 8 = 14.

c) (Kiegészítő feladat) Kifejezhető-e a kapott állapotgépen, ill. a komponensre vetített modelleksegítségével olyan kocsi, ahol a hátsó ablaktörlő csak akkor kapcsolható be, ha megy az első is?MegoldásA teljes rendszert leíró állapotgép nyilván módosítható megfelelően – egyszerűen csak elhagyjuka nem megengedett átmeneteket. A komponensekre vetítéskor viszont bajba jutunk, hiszen akét komponens működése már nem független: a hátsó ablaktörlő szóban forgó átmeneteit csakakkor szabad használni, ha az első ablaktörlő állapota megfelelő. Ilyen megszorítást őrfeltétellelfejezhetünk ki.Az aszikron szorzatban mindkét állapotgép explicit megjelenik, mindkettő annyiszor, ahány ál-lapota van a másiknak. Intuitívan: az egyik állapotgépet „elvihetjük” egy tetszőleges állapotába,és ott „lejátszhatjuk” a másik összes viselkedését, és ugyanez igaz fordítva.

2.6. Összetett rendszer modellezése

Felhő alapú adattárolást modellezünk (ld. Dropbox, Google Drive, Tresorit), egyetlen állományra szo-rítkozva. Az állománynak a szerveren és a kliensnél (pl. laptop) is elérhető egy-egy replikája, kezdetbenazonos tartalommal. A fájl módosításai szinkronizálás során továbbítódnak a példányok között. Haszinkronizáció előtt mindkét példányt módosítják, akkor ütközés lép fel, amelyet a felhasználónak kellfeloldania 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 szinkronizálhat;ilyenkor az esetleges módosítás eljut a másik példányhoz is, és újra azonos lesz a két másolat. Haa legutóbbi szinkronizáció óta egymástól függetlenül mindkét replikát módosították, akkor viszontkonfliktushelyzet (ütközés) áll fenn. Ilyenkor a kliens a saját és a szerverről letöltött változatot össze-hasonlí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 azonosállapotú (a lokális fájlmásolat egyezik azzal, ami a szerveren a legutóbbi szinkronizációkor volt /lett), ám írás bemenet hatására a piszkos állapotba kerül (és további írás hatására is ottmarad).Az elvetés bemenet hatására tetszőleges állapotból újra azonos állapotba kerül.Megoldás

14

Page 15: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

{elvetés, írás}

Kliens

azonos

piszkos

elvetés

írás

íráselvetés

b) A szerver lehetséges állapotai (csupán az adott klienssel való szinkronizációt vizsgálva) az azonosés a frissült. Előfordulhat, hogy a megfelelő írási jog birtokában egy másik felhasználó (vagyugyanazon felhasználó egy másik kliens, pl. a telefonja segítségével) frissíti a szerveren találhatóállományt. A szerver kezdetben azonos állapotban van.MegoldásItt annyi az érdekesség, hogy spontán állapotátmenet lesz (már ha a lokális felhasználótól érkezettbemenetekre figyelünk csak és nem modellezzünk másik klienst, pl. „kliens2”).

Szerver

azonos

frissült

c) Ha a szerver azonos állapotban van, akkor a kliens a szinkronizálj bemenet hatására feltölti azesetleges lokális módosításokat a szerverre, és szintén azonos állapotba kerül. A szinkronizáljbemenetet a szerver is megkapja. Hol kooperál a két állapotgép?MegoldásA Kliens állapotgép két új átmenetére [Szerver.azonos] őrfeltételt rakunk. Érdekesség, hogyez a másik állapotgép pillanatnyi állapotától függ – ez tehát kooperáció! A modell absztraháljaa valóságot, itt ténylegesen nyilván üzenetcsere van a kliens és a szerver között, ahol kicserélikezt az információt, ill. a fájlt is fel kell tölteni.

{elvetés, írás,szinkronizálj}

Kliens

azonos

piszkos

elvetés

írás

íráselvetés

szinkronizálj[Sz.azonos]

szinkronizálj[Sz.azonos]

{sz.} Szerver

azonos

frissült

szinkronizálj

15

Page 16: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

d) Ha a szerver frissült állapotban van, akkor a kliensnek adott szinkronizálj bemenet hatására aszerver azonos állapotba kerül; a kliens pedig azonos állapotból nem mozdul, de piszkos állapot-ból ütközés állapotba megy. Mit jelent ez? Mi történjen az ütközés állapotban? Hol kooperál akét állapotgép?MegoldásItt egyszerre lép a két állapotgép, tehát a szinkronizálj bemenet mindkét automatát befolyásolja!(Ilyenkor azt mondjuk, hogy nem aszinkron, hanem vegyes szorzatban van a két komponensautomatája: főleg aszinkron lépnek, de néha szinkron, mert mindkettő egyszerre lép.)A kliens állapotgép új élei [Szerver.frissült] őrfeltételt kapnak. Vegyük észre, hogy a Kli-ens.azonos állapotból két hasonló átmenet megy ki ellentétes őrfeltétellel: ([Szerver.azonos],ill. [Szerver.frissült]), amik összevonhatóak egyetlen őrfeltétel nélküli éllé (a lenti ábrán eznem szerepel). Ez nyilván az az eset, amikor a kliens detektálja az ütközést. Ilyenkor a szerverazonos állapotba megy, mivel őnála a legutolsó szinkronizáció óta nincs újabb. A kliensen kellfeloldani a konfliktust. Az ütközés állapotban az eseményekre például így léphetünk:

• elvetés → azonos,• írás → piszkos,• szinkronizál → ütközés.

{elvetés, írás,szinkronizálj}

Kliens

azonos

piszkos

elvetés

írás

íráselvetés

szinkronizálj[Sz.azonos]

szinkronizálj[Sz.azonos]

ütközés szinkronizálj[Sz.frissült]

szinkronizálj[Sz.frissült]

írás

szinkronizálj

elvetés

{sz.}

Szerver

azonos

frissült

szinkronizálj

szinkronizálj

e) A kliens időnként magától is szinkronizál a szerverrel, felhasználói bemenet nélkül. Mit jelentez? Hol kooperál a két állapotgép?MegoldásUgyanaz, mint előbb, csak külső bemeneti esemény helyett közös, belső randevú esemény (legyenpull és push) hatására. Opcionális változtatás lehet, pl. konfliktust ilyenkor sose idézzen elő.

16

Page 17: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

{elvetés, írás,szinkronizálj}

Kliens

azonos

piszkos

elvetés

írás

íráselvetés

szinkronizálj[Sz.azonos]

szinkronizálj[Sz.azonos]

ütközés szinkronizálj[Sz.frissült]

szinkronizálj[Sz.frissült]

írás

szinkronizálj

elvetés

{sz.}

Szerver

azonos

frissült

szinkronizálj

szinkronizáljpull pushpush

pull

{push,pull}

randevú

f) Fejtsük ki a teljes összetett állapotgépet a vegyes szorzatban részt vevő két állapotgép alapján.MegoldásAz összetett állapotgép állapotát egy kételemű állapotvektor (〈kliens, szerver〉) írja le. A kez-

aszinkron (egyedi)események

közös (osztott)események

randevúesemények

spontánátmenet

elvetés írás szinkronizálj push pull −〈azonos, azonos〉 ∗ 〈p, a〉 ∗ – – 〈a, f〉〈piszkos, azonos〉 〈a, a〉 ∗ 〈a, a〉 〈a, a〉 ∗ 〈p, f〉〈azonos, frissült〉 ∗ 〈p, f〉 〈a, a〉 ∗ 〈a, a〉 ∗〈piszkos, frissült〉 〈a, f〉 ∗ 〈ü, a〉 ∗ ∗ ∗〈ütközés, azonos〉 〈a, a〉 〈p, a〉 ∗ ∗ ∗ 〈ü, f〉〈ütközés, frissült〉 〈a, f〉 〈p, f〉 〈ü, a〉 ∗ ∗ ∗

dőállapotból (〈azonos, azonos〉) indulva minden eseményre rögzítjük egy táblázatban, hogy mia következő állapot. Randevú eseményen csak akkor lép az összetett állapotgép, ha mindkétállapotgép tud lépni az adott eseményre. (A táblázatban ∗ jelöli a hurokéleket.)

17

Page 18: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

<a,a>

<p,a>

írás

<a,f>

elvetés szinkronizálj push–

<p,f>

szinkronizálj pull–

íráselvetés

<ü,a>

szinkronizálj

elvetés

írás

<ü,f>

elvetés

írás

szinkronizálj

Vegyük észre, hogy az összetett automatán pirossal jelölt éleken a belső randevú események he-lyett spontán átmenet szerepel, mivel a randevú célja a két állapotgép szinkronizálása volt, amelyaz összetett automatában megvalósul. (Az átláthatóság érdekében a hurokélek nem szerepelneka gráfon.)

g) (Kiegészítő feladat.) Ebben a modellben a szerver és a kliens közvetlenül figyelembe tudják venniegymás belső állapotát, és a szinkronizáció is pillanatszerűen végbemegy közöttük. Egy valódielosztott rendszerben azonban üzenetváltással kell a kliens és a szerver közötti kommunikációtmegvalósítani; a küldés és a válasz megérkezte között pedig huzamosabb idő eltelhet. Gondoljukvégig, hogy lehetne finomítani a modellt, hogy ezeket a részleteket is tükrözze!MegoldásOtthoni feladat.

3. Folyamat alapú modellezés

3.1. Folyamat lefutása

Egy folyamat végrehajtása során az összes lépést megfigyeltük. A következő eseménysor bekövetkeztétészleltük:

Folyamat indul, P elkezdődik, P befejeződik, Q elkezdődik, R elkezdődik, Q befejeződik,R befejeződik, Folyamat befejeződik.

PQ

R

bR

d P

Q

P

aQ

R

S

P Q

R

c

Az a, b, c, d folyamatmodellek közül melyek lehetnek helyes modelljei a rendszernek?MegoldásA b és a c folyamatmodellek. Ahol nem illeszkedik, ott mutassuk meg, hogy az eseménysor hol tér ela folyamatmodelltől.

18

Page 19: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

3.2. Vezérlési folyam (forráskód alapján)

Tekintsük az alábbi C nyelvű függvényt.1 unsigned long long fibonacci(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 = fibonacci(n - 1);9 unsigned long long b = fibonacci(n - 2);

10 return a + b;11 }12 }

a) Milyen vezérlési folyamot határoz meg a függvény?Az unsigned long long egy jó példa arra, hogy a kódban több információ szerepel, mint a folya-matmodellben.Kódból vezérlési folyam építése a folyamatmodellezés egy lehetséges alkalmazása (a másikat –szöveges specifikáció alapján modell építése – a 3.3. feladatban mutatjuk be).MegoldásA rekurzív hívást egy „hívás” elemmel ábrázoljuk (a doboz sarkában van egy nyíl).

return 0[n≤0]

Fibonacci(n-1) Fibonacci(n-2) return a+b

return 1

[else]

[n==1]

[else]

a

b

b) Ellenőrizzük, hogy jólstrukturált-e ez a folyamat!MegoldásA jólstrukturáltság definícióját lásd a jegyzetben.2 A folyamataink jólstrukturáltak. Ezt úgy tud-juk megmutatni, hogy az egyes tevékenységektől indulva, belülről kifelé haladva megmutatjukminden részfolyamatra, hogy jólstrukturált. Utolsóként a teljes folyamatmodellt kell ellenőriz-nünk:

Egy teljes folyamatmodell jólstrukturált, ha egyetlen belépési pontja (Flow begin) éskilé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.c) Azonosítsuk az adatfüggőségeket (adatáramlást) a tevékenységek között!

MegoldásA két rekurzív hívásból megy adatáramlás az összeg return lépésébe (az ábrán szaggatott vona-lakkal). A lényeg, hogy a második híváshoz voltaképp nem kell az első eredménye.

d) Ha a programozási nyelv vagy a futtatókörnyezet megengedi, hol van lehetőség párhuzamosítás-ra?

2https://ftsrg.mit.bme.hu/remo-jegyzet/folyamatmodellezes.pdf

19

Page 20: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

MegoldásA c) feladat megoldása alapján ez triviális.

e) (Kiegészítő feladat.)Mi biztosítja azt, hogy a függvény előbb-utóbb terminál?MegoldásAz 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.

3.3. 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 ott-hont. 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, akkora saját státuszától függő lépéseket kell tennie. Belsős fejlesztők közvetlenül írhatnak a kódtáradott projekt részére fenntartott területére. Külsős fejlesztőknek először átvizsgálásra (code re-view) be kell nyújtaniuk a kódjukat; ezután egy belső fejlesztőnek ellenőriznie kell azt, és utánavagy elutasítania, vagy elfogadnia. Ha a kívülről érkező kód egy bizonyos küszöbértéknél rövi-debb (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övidhozzá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 azonbanaz elfogadást követően az alapítvány jogi osztálya egy külön adminisztratív eljárásban tisztázzaa változtatások szellemi tulajdonának jogállását, és csak ennek sikeres lezárása után olvaszthatjabe a belső fejlesztő a kódot. Frissen indított, első hivatalos kiadásuk előtt álló projekteknél itttesznek egy kivételt: az elfogadott külső hozzájárulás kódtárba beolvasztásával nem kell megvárniezt az adminisztratív eljárást. Készítsünk folyamatmodellt az itt leírt tevékenységekből!Megoldás

Közvetlen írás[belső]

[külső]

Benyújt

Code review

Jogi ellenőrzés Beolvasztás

[nem friss]

Jogi ellenőrzés

Beolvasztás

[friss]

[-1]

[1]

[nagy változtatás]

Nyilatkozat Beolvasztás

[kis változtatás]

b) A szoftver fejlesztési projektje abból áll, hogy újabb és újabb módosításokat végeznek a for-ráskódon, amíg a projekt vezetése úgy nem látja, hogy a szoftver kellően stabil egy hivatalos

20

Page 21: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

kiadáshoz (release). Amikor eljött ez a pont, akkor közzétesznek egy új stabil verziót a szoft-verből, majd ismét a fejlesztésen a sor, és így tovább. Készítsünk folyamatmodellt az itt leírttevékenységekből!Megoldás

Módosítás

[nem stabil]

Közzététel[stabil]Kiadás

jóvahagyása

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övegesspecifikációban még szereplő) szereplők (aktorok).

c) (Kiegészítő feladat.) Ellenőrizzük, hogy jólstrukturáltak-e a folyamataink!MegoldásA b) feladatrész megoldásának folyamatmodellje nem jólformált, mert hiányzik a Flow end cso-mópont.

d) (Kiegészítő feladat.)Milyen viszonyban állnak egymással az a) és b) feladatokban elkészítettfolyamatmodellek?MegoldásA két folyamatmodell két külön dolognak – új forráskódok kontributálásának és új verziók ki-adásának – az életútját ábrázolja egyazon rendszerben.A kettő „nagyjából diszjunkt”, de lehetnek furcsa átlapolódások, pl. kiadási cikluson átívelő codereview. Az ehhez hasonló egymásra hatások ellenőrzése nem témája ennek a gyakorlatnak (ld.Modellek ellenőrzése témakör).

Kiegészítő feladat: Adatfolyamháló

Elakadásjelző háromszögeket előállító gyárunkat adatfolyamhálóval modellezzük. A háló kezdetbenkét csomópontot tartalmaz. Az első csomópont egy gép, amely fényvisszaverő oldallapokat állít elő, ésa futószalagra helyezi őket. A második csomópont az összeszerelő gép, amely a futószalagról felveszi alapokat; ezen kívül időnként egy összeszerelt háromszöget bocsájt ki az egész háló kimenetén.

a) Készítsük el a feladat adatfolyamháló modelljét. Szorítkozzunk állapotgép jellegű csomópontok-ra.

b) Finomítsuk a modellt a következőképp: az első gép időnként deformált oldallapokat gyárt.c) Finomítsuk tovább a modellt a következőképp: az összeszerelő gép az eredeti funkcionalitás elé

kapcsolva tartalmaz egy bevizsgáló berendezést is, amely képes kidobni a deformált lapokat (azép lapokat továbbengedve).

d) Végül finomítsuk tovább a modellt a következőképp: az összeszerelő gép (a selejtes lapok kiszűréseután) mindig bevár három fényvisszaverő lapot, és belőlük szerel össze egy háromszöget.

MegoldásAzt érdemes pluszban a b-c-d lépésekben alaposan végiggondolni, hogy mi is a finomítás következmé-nye:

• A finomított modell „ugyanúgy” működik, mint az absztrakt; ha megfigyeljük a működését, deolyan szemüvegen keresztül, amely „röptében” visszacsinálja az absztrakciót (pl. összevonja aszétválasztott tokenfajtákat), akkor nem tudjuk megkülönböztetni az absztrakt modell viselke-désétől. Ezért helyes az absztrakciós viszony a két modell között.

• A finomított modell több információt tartalmaz, ugyanis finomítás közben választási lehetősége-ink vannak. Pl. a (d) résznél sokféleképpen lehet az állapotok szétvágása után az állapotátmenetiszabályokat úgy felvenni, hogy megmaradjon az absztrakciós viszony, de ezek közül csak egy az,amely a feladatban leírtaknak megfelelően működik; ennek az egy megoldásnak a kiválasztásateszi bele az információtöbbletet a finomításba.

21

Page 22: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

Ezeket a tanulságokat persze a lenti feladatmegoldás közben lehet felvezetni.Az egyes állapotgépek be- és kimenetei lapok (s) és háromszögek (4) lehetnek.

a) Az adatfolyamháló:M1 {s}

create −/out.s

M2 {s,4}

assemble in.s/−

in.s/out.4

b) Ehhez végezzünk tokenfinomítást: a s helyett vegyünk fel egy sOK és egy sDEF tokent.M1 {sOK, sDEF}

create −/out.sOK

−/out.sDEF

M2 {sOK, sDEF,4}

assemble in.s/−

in.s/out.4

c) Ehhez végezzünk struktúrafinomítást: az M2 állapotgép helyett vegyünk fel egy M3 és egyM ′2 állapotgépet.M3 {sOK, sDEF}

check in.sOK/out.sOK

in.sDEF/−

M ′2 {sOK,4}

assemble in.sOK/−

in.sOK/out.4

A feladat megoldható tokenfinomítással is: ebben az esetben az M2 állapotgépet egészítsük kiegy in.sDEF önhurokkal.

d) Ehhez végezzünk állapotfinomítást.M ′′′2 {sOK,4}

0

1

2

in.sOK/− in.sOK/−

in.sOK/out.4

Jó megoldás az is, ha felveszünk plusz egy olyan állapotot, ahol 3 oldallap van a rendszerben.Ennek a bemenő tranzíciója a 2 állapotból in.sOK/−, a kimenő tranzíciója a 0 állapotba−/out.4.

4. Modellek ellenőrzése

4.1. Folyamat statikus analízise

Ellenőrizzük az alábbi folyamatmodellt.

A

B

C

D

E

F

[x]

[y]

[z]

[w]

[t]

[s]

22

Page 23: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

a) Milyen feltételek mellett teljesen specifikált a folyamat?b) Milyen feltételek mellett determinisztikus is a folyamat?c) Milyen feltételek mellett holtpontmentes is a folyamat?d) Milyen további feltételek mellett termináló a folyamat?e) Jólstrukturált-e a folyamat? Ha nem, hogyan lehetne azzá tenni? Segít-e ez a problémákon?

Megoldás

a) Az állapotgépekkel analóg módon a folyamat akkor teljesen specifikált, ha minden elágazáshozérkezéskor (decision) a kimenő élek őrfeltételei közül legalább az egyik igaz – magyarul mindigjárható legalább az egyik kimenő él. Ehhez elégséges feltétel, hogy teljes feltételrendszert al-kossanak az őrfeltételek, de igazából elég annyit megkövetelni, hogy feltételesen teljes rendszerlegyen, tehát ha odakerülhet a vezérlés, akkor álljon fenn, hogy legalább az egyik kimenő igaz(a harmadik decisionnél ez számít).

• Következésképp:– x ∨ y– z ∨ w– w ∧ y → s ∨ t (a jobb oldal a ciklus bárhány végrehajtása után igaz).

b) A folyamat akkor determinisztikus, ha minden elágazáshoz érkezéskor (decision) a kimenő élekőrfeltételei közül legfeljebb az egyik igaz – magyarul mindig csak az egyik kimenő él járható.Ehhez elégséges feltétel, hogy kizárólagos feltételrendszert alkossanak az őrfeltételek, de igazábólelég annyit megkövetelni, hogy feltételesen kizárólagos rendszer legyen, tehát ha odakerülhet avezérlés, akkor álljon fenn, hogy legfeljebb az egyik kimenő igaz (a harmadik decisionnél ezszámít).

• Következésképp:– ¬(x ∧ y)– ¬(z ∧ w)– w ∧ y → ¬(s ∧ t) (a jobb oldal a ciklus bárhány végrehajtása után igaz)

• Az a) feladatrésszel összesítve némileg egyszerűsíthetjük az első két kritériumot:– y = ¬x (ugyanis x és y nem lehetnek egyszerre igazak és nem lehetnek egyszerre

hamisak, tehát x XOR y)– w = ¬z

c) Holtpont (deadlock): örök várakozás. Először is nyilván feltesszük, hogy maguk az elemi tevé-kenységek holtpontmentesek – ha nem így lenne, akkor nem a folyamatmodell a holtpont forrása.Holtpont itt úgy fordulhat elő, hogy a fork után az egyik ág a fenti, a másik ág a lenti jointválasztja, és örökké várnak egymásra. Baj van, ha az egyik joinba csak az egyik ág fut be.

• Következésképp:– x = z– y = w

d) Először is nyilván feltesszük, hogy maguk az elemi tevékenységek terminálnak – ha nem így lenne,akkor nem a folyamatmodell a nemterminálás forrása. A folyamatmodellben probléma lehet, haa join örökké vár – de a holtpontot már kizártuk. Utolsó lehetőségként marad a livelock, vagyis avégtelen ciklus. Ebben akkor ragadunk bele, ha ráfutunk, és a kilépési feltétel sose válik igazzá.

• Következésképp:– Ha ¬x (ilyenkor y és w igaz), akkor előbb-utóbb t-nek igazzá kell válnia. Érdekesség:

ahogy a fenti állításokat, úgy ezt is le lehet írni logikai formulaként (van előbb-utóbbszimbólum, a future operátor (F)), de az ehhez szükséges ún. temporális logikákat nemtanultuk.

– ¬x→ Fte) A tanult módszerrel megvizsgálva kiderül, hogy nem jólstrukturált. Azzá lehet tenni, ha B és

C után van egy join, és utána egyetlen decision. Azzal a feltételezéssel tudjuk jólstrukturálttátenni, hogy a c) feladatban megállapított összefüggések igazak. Ez a deadlockot automatikusankiküszöböli, a többi hibalehetőséget viszont nem – legfeljebb a modell átláthatóbbá tételévelsegít –, így pl. livelock megmaradhat, determinizmust nem garantál.

23

Page 24: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

4.2. Dinamikus analízis teszteléssel

Az f() függvénnyel szemben a következő követelményeink vannak:R1 Az f() függvénynek minden végrehajtása során legalább egyszer outputot kell kiadnia.R2 Az f() függvénynek tetszőleges inputsorozat esetén terminálnia kell.R3 Az f() függvény végrehajtása során kiadott legutolsó output értéke kötelezően 0.A függvény egy lehetséges megvalósítását adja meg az alábbi C nyelvű kódrészlet:

1 int readInput();2 void writeOutput(int out);34 void f() {5 int x = readInput();6 int y = readInput();7 int z = x + y;8 writeOutput(x * y);9 while (x > 0 && y > 0) {

10 if (1 == readInput() % 2) {11 y--;12 z--;13 } else {14 x--;15 y++;16 }17 writeOutput(z + x * y * y - x - y);18 }19 }

A következő lépések során ellenőrizzük a függvény működését!a) Ábrázoljuk folyamatmodellként f() vezérlési folyamát!

Megoldás. Készítsük el a folyamatmodellt.

read x read y z = x+y out: x*y

y-- z--

x-- y++

[x>0 && y>0] [tmp%2 == 1]

[else]

out: z+xy2-x-y

[else]

read tmp

b) Miért lehetünk biztosak az R1 teljesülésében?Megoldás. A folyamatmodellen jól látszik: minden út átmegy az első output adási tevékenysé-gen.

c) Miért lehetünk biztosak az R2 teljesülésében?Megoldás. Pozitív x és y esetén vagyunk a ciklusban; itt x nem nőhet, ezért a második ág csakvéges sokszor hajtódhat végre; így pedig egy idő után csak az első ágat hajthatnánk végre, aholy előbb-utóbb elfogy. (Van még az az eset is, hogy y negatívba túlcsordul, de akkor is rögtönleáll.)

d) (Kiegészítő feladat.) Építsünk olyan állapotgépet, amely az f() függvénnyel ekvivalens módonműködik. Modellezzük a readInput() hívásokat input csatornaként, valamint a writeOutput() hívástoutput csatornaként. Az f() függvény terminálását modellezzük úgy, hogy az automata ad egyspeciális outputot, és átmegy egy nyelő (kimenő átmenet nélküli) állapotba.

24

Page 25: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

Megoldás. Tanultunk állapotváltozókat, legyen ilyen az x, y, z. Írjunk az átmeneti élekre őrfel-tételeket ezek segítségével, meg akciókat (mint a Yakinduban is). Lehet minden programsorraegy állapot, de lehet sokkal kevesebb is, pl. az egész ciklusmag lehet két hurokél egyazon állapotfölött (kicsit szebb annyira szébontani, hogy először a ciklusfeltételt teszteljük, utána a belsőelágazást); ezek mind helyes megvalósítások lesznek.

In: Z

Out: Z

Out: {TERM}

in: φ/x:=φ

in: φ/y:=φ, z=x+y, out: x*y

[!(x>0 && y>0)]-/out:TERM

[(x>0 && y>0)]

in: φ [φ%2==0]/y++, x--

in: φ [φ%2==1]/y--, z--

-/out: z*x2-x-y

e) Az R3 követelményt teszteléssel ellenőrizzük. A t1 = 〈2, 3, 5, 7, 11, 13, ...〉 input szekvencia atesztesetünk. Detektálunk-e hibát?Megoldás. Mit csinál a program?

• t1 = 〈2, 3, 5, 7, 11, 13, ...〉• x = 2• y = 3• z = 5• out: 6• belépünk a ciklusba• true ág• y = 2• z = 4• out: 4 + 8− 2− 2 = 8• bent maradunk a ciklusban• true ág• y = 1• z = 3• out: 3 + 2− 2− 1 = 2• bent maradunk a ciklusban• true ág• y = 0• z = 2• out: 0 + 2− 2− 0 = 0• kilépünk a ciklusból• futás vége

f) Számítsunk utasításszintű tesztfedést a programkódon, vagyis hogy az utasítások mekkora hánya-dát járja be a tesztelt függvény a teszteset végrehajtása során! Hogy jelenik meg ez a mérőszáma vezérlési folyamon?Megoldás. 10 utasítást hajt végre és 2 utasítást kihagy 10/12 ≈ 83%-os utasításfedés. A ve-zérlési folyamon a csomópontokat lehet karikázni, és a csomópont szintű fedettséget jelenti (kiseltéréssel / korrekcióval, mert a decision-merge pár csak egyszer számított utasításnak).

g) Az R3 követelményhez a t2 = 〈1, 2, 4, 1, 2, 4, ...〉 input szekvencia a második tesztesetünk.

25

Page 26: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

Detektál-e hibát ez a teszteset? Mekkora a két tesztből álló tesztkészlet együttes utasításfedése?Megoldás. t2 = 〈1, 2, 4, 1, 2, 4, ...〉 Mit csinál a program?

• x = 1• y = 2• z = 3• out: 2• belépünk a ciklusba• false ág• x = 0• y = 3• out: 3 + 0− 0− 3 = 0• kilépünk a ciklusból.• futás vége

Tehát nem sérült az R3. A teszteset utasításfedése 100%.h) (Kiegészítő feladat.) Milyen tesztfedettségi metrika számítható a korábban megépített állapotgép

alapján?Megoldás. Az állapotgépen fedettség szempontjából hasonló a helyzet, mint a kódban, amennyi-ben elég közeli formában építettük fel – de a javasolt összevonások után jóval egyszerűbb, nemlátszik rajta ez a fedettségi mérték (van persze állapotfedettség, de az most akár 100% is lehet;megfelelő összevonásokkal itt csak az átmenetfedettség marad el a 100%-tól).

i) Készítsünk olyan tesztorákulum állapotgépet, amely f() input és output szekvenciái és termi-nálása alapján el tudja dönteni, hogy az adott lefutás során az R3 követelmény sérült-e! Hogyviselkedik az orákulum a fenti tesztinputra?Megoldás.A tesztorákulum a tesztbemenet és a valós kimenet alapján eldönti a teszt eredményét és I/H-tad vissza. Az automata két legfontosabb állapota, hogy I („utolsó input 0”) és H („utolsó inputnem 0”), ezek között értelemszerűen ugrál. A SUT terminálódásának eseményére pedig átmegya nyelő állapotba, és rendre igaz („i”), ill. hamis („h”) kimenetet ad. (A kezdőállapot működésenincs teljesen specifikálva, lehet mondjuk az „utolsó input nem 0” állapot). Az orákulumon azoutputok és a terminálás alapján végigjátszható, hogy (az elvárásoknak megfelelően) „i” outputotad ki.

In: {Z,TERM} Out: {h, i}H

I

TERM

Z \ {0}

0 Z \ {0}

TERM/h

TERM/i

0

Megoldás.j) Adjunk meg egy tesztesetet, amely kimutat egy hibát a programban! Milyen elv alapján sejthet-

tük volna meg, hogy a korábban összeállított tesztkészletünk kiegészítésre szorul?Megoldás. Egy lehetséges teszteset: t3 = 〈−1,−1,−1, ...〉. Mit csinál a program?

• x = −1• y = −1• z = −2• out: 1• nem lépünk be a ciklusba• futás vége

26

Page 27: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

Ez megsérti az R3 követelményt, az orákulum fülön is csípi.Tanulság: nem elég az utasítás vagy ág szintű fedettséget nézni, a robusztusságot is meg kellvizsgálni a szélső vagy kritikus inputértékekre és közvetlen környezetükben (jelen esetben ilyena 0 az x és y esetén). Ez nagyon hasznos lesz a programozásos házi feladatoknál!Ez egy dinamikus ellenőrzési módszer, mert konkrétan végre kellett hajtanunk a lépéseket.

k) (Kiegészítő feladat.) Vegyük hozzá a tesztkészlethez a t3 = 〈0, 1, 2, 3, 4, 5, ...〉 és t4 =〈1, 2, 3, 4, 5, 6, ...〉 input szekvenciákat mint további teszteseteket! Detektálunk-e hibát? Hogyanváltoznak a tesztfedési számok?Megoldás. Otthoni munka.

l) (Kiegészítő feladat.) Határozzuk meg, hogy pontosan milyen input szekvenciák esetén sérül R3,és javasoljunk hibajavítást!Megoldás. Lássuk csak!

• triviális megoldás a void f() { writeOutput(0); }, de inkább olyan megoldást keressünk, amilegalább nyomokban őrzi az eredeti működést.

• ha x és y közül az egyik negatív és a másik nem nulla, és nem lépünk be a ciklusba, akkorx · y lenne az utolsó output – ilyenkor el kell dönteni, mi a helyes viselkedés, pl. a ciklushelyett mondjuk ki lehetne adni egy 0 outputot. Vagy eleve elutasítani a negatív bemenetet,ha az érvénytelennek számít.

• z = x+ y végig igaz, így a ciklusmagban kiadott outputból egyedül a szorzattag marad.• ha belépünk legalább egyszer a ciklusba, akkor a ciklus utolsó lefutása után, feltéve ha nem

volt negatívba overflow, akkor x vagy y 0 lett, tehát a szorzatuk is 0, ez eleve stimmel.• azt kell tehát még kivédeni, hogy ne csorduljon túl y MAXINT-ból negatívba eldöntendő, hogy

ilyenkor mi a teendő, pl. egy magas küszöbszám feletti y értékek esetén hibát adunk ésleállunk, vagy detektáljuk az overflow-t és kiadunk 0-t stb.

5. Teljesítménymodellezés

5.1. Zárthelyi megtekintése

A zárthelyik megtekintése során a hallgatóknak lehetőségük van reklamálni esetleges javítási hibákmiatt. Sikeres reklamáció esetén a pontszámuk módosításra kerül. Az első nagyfeladatból (F1) órán-ként 10 darabot képes átnézni egy javító, a második nagyfeladatból (F2) pedig 20 darabot. Mindkétfeladathoz tartozik 1-1 javító, akik az adott feladatot javították. A továbbiakban készítsünk mindenkérdéshez egy-egy folyamatmodellt és határozzuk meg, hogy óránként hány hallgató dolgozatát sikerülátnézni az egyes esetekben!

a) A hallgatók először az F1, majd az F2 feladatot nézetik át a javítóval.Megoldás

F1 F2

Szekvenciális komponálás. A szűk keresztmetszet fogja meghatározni a teljes átbocsátó ké-pességet, mert ott fognak feltorlódni a feladatok (hiába gyors a többi rész). Általánosan:Xmax = min(Xmax

1 , Xmax2 ). Mivel Xmax

F1 = 10h , X

maxF2 = 20

h , F1 a szűk keresztmetszet, tehátXmax = min(Xmax

F1 , XmaxF2 ) = min(10

h ,20h ) = 10

h .b) A leleményes hallgatók a két feladatot külön-külön már egyszerre két javítónak adják oda, mivel

külön lapra voltak írva. Mit nyerünk a párhuzamosítással?Megoldás

27

Page 28: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

F1

F2

Párhuzamos komponálás. Mivel a feladatoknak a végén be kell várniuk egymást (szinkronizáció),ezért itt is a szűk keresztmetszet fogja meghatározni a teljes átbocsátó képességet. Általánosan:Xmax = min(Xmax

1 , Xmax2 ). Tehát Xmax = min(Xmax

F1 , XmaxF2 ) = min(10

h ,20h ) = 10

h .Mit nyertünk a párhuzamosítással? Az átbocsátóképességünk változatlan maradt, de a válasz-időnk csökkent.

c) A nagy tömeg miatt a hallgatók csak az egyik feladatukat nézetik át, mégpedig azt, amelyikneka javítója éppen szabad.Megoldás

F1

F2

Komponálás szabad választással. Oda mennek a hallgatók ahol hely van (K db nyitott pénztáranalógia). Általánosan: Xmax = Xmax

1 +Xmax2 . Tehát Xmax = Xmax

F1 +XmaxF2 = 10

h + 20h = 30

hd) Híre ment, hogy a második feladat javítója sokkal kevésbé szigorú, így a hallgatók 80%-a inkább

kivárja ennél a javítónál a sort. A maradék 20% a másik javítónál reklamál az első feladattalkapcsolatban.Megoldás

F1pF1 = 20%

pF2 = 80%F2

Komponálás kötött arányú választással. Analógia: felhasználók viselkedése egy weblapon: 20%eséllyel vásárol, 80% eséllyel elvet. Általánosan: Xmax = min( 1

p1× Xmax

1 , 1p2× Xmax

2 ), ahol p1és p2 annak a valószínűsége, hogy az első, illetve a második lehetőséget választjuk (p1 + p2 = 1).Azért reciprok, mert az átlagosan F1-el töltött idő p1×T1, az ide eső maximális átbocsátás pedigennek a reciproka (egy erőforráspéldány esetén). Tehát Xmax = min( 1

0.2 ×XmaxF1 , 1

0.8 ×XmaxF2 ) =

min(50h ,

25h ) = 25

h .e) A hallgatók 10%-ának a reklamáció után már csak 1-2 pont kellene a jobb jegyhez, ezért újra

és újra megpróbálkoznak a reklamációval. Feltételezhetjük, hogy a hallgatók az a) részben leírtreklamációs stratégiát használják.Megoldás

F1

pújra = 10%

pvége = 90%F2

28

Page 29: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

Komponálás ciklussal. Általánosan: Xmax = 11

pvege

×Xmax1 = pvege ×Xmax

1 , ahol pvege annak a

valószínűsége, hogy kilépünk a ciklusból, 1pvege

pedig az iterációk várható száma (lásd később aValószínűségszámítás tantárgyban).Az Xmax

1 érték jelen esetben az a) részben kiszámolt érték (absztrakció), pvege pedig 0.9. TehátXmax = 1

10.9× 10

h = 0.9× 10h = 9

h

Egy valós rendszerhez képest ez közelítés, mert azt feltételeztük, hogy a reklamálás itt függetlena reakció tartalmától.

Vizitációs szám: megmutatja, hogy a folyamat végrehajtása során átlagosan hányszor fut leaz adott tevékenység/alfolyamat. Választás esetén maga a döntési valószínűség, ciklus esetén avárható iterációk száma. Átbocsátóképesség a vizitációs szám ismeretében: Xmax = 1

v ×Xmax1 .

Adott tevékenységre eső végrehajtási idő a vizitációs szám ismeretében: Tfolyamat = v × Ttaszk.f) Mi történne másként, ha bármelyik javító bármelyik feladatot hajlandó átnézni (de az egyes

feladatok átnézése változatlan ideig tart), és így szeretnék a hallgatók az eredeti tervnek megfe-lelően először az F1, majd az F2 feladatot átnézetni a javítóval?MegoldásEbben az esetben a két tevékenység közös erőforrást (javító) használ, tehát nem külön-külön vanfelső korlátunk az átbocsátóképességükre, hanem együttesen. (Ha több erőforrás lenne, akkor azerőforrások közül kellene a szűk keresztmetszetet kikeresni, nem a tevékenységek közül.)Az első tevékenység 6 percre, a második 3 percre foglal le egy erőforráspéldányt (javítót), tehátegy folyamatpéldánnyal (hallgatóval) összesen 9 percnyi munkája van az erőforrásnak. A két erő-forráspéldány összesen óránként 120 percet tud dolgozni, tehát 120

9 = 403 hallgató/óra a rendszer

átbocsátóképessége.

5.2. Diszk teljesítménye

Egy diszk 50 kérést szolgál ki másodpercenként. Minden kérés kiszolgálása 0,005 másodpercet veszigénybe. A rendszerben nincs átlapolódás.

a) Mekkora a maximálisan kiszolgálható terhelés (érkezési ráta)?MegoldásMaximális terhelés mellett a kihasználtság U = 1. Ekkor Xmax = U

T = 200 kéréss . Vagyis a szabály

egyetlen, átlapolódásmentes feldolgozó egységre: Xmax = 1T = 1

0,005 s = 200 kéréss .

b) Mekkora a kihasználtság?MegoldásAz erőforrás kihasználtsága U = X ·T , ahol X az átlagos átbocsájtás és T az átlagos kiszolgálásiidő. Tehát U = 0,25, így 25%-os a kihasználtság.A feladat józan ésszel is megoldható: a diszknek másodpercenként 50 kérés · 0,005 s

kérés -t kelldolgoznia. Ha másodpercenként 0,25 másodpercet dolgozik, akkor 25% a kihasználtsága.

5.3. Kétrétegű architektúra

Adott egy webszerver (WS) és két fürtözött adatbázisszerver (DB1, DB2). A két adatbázis szerver köztsúlyozott round robin terheléselosztás alapján választunk, 1:2 arányban. Minden felhasználói kéréskiszolgálása során mindkét fajta erőforrást használjuk. A csúcsidőszakban 30 percig monitorozzuk arendszert, ezalatt 9000 kérést szolgál ki. A szerveken mért foglaltsági idők: WS – 1350 s CPU idő;DB1 – 810 s, DB2 – 1320 s diszk IO idő.

a) Készítsünk folyamatmodellt a kérések feldolgozásáról a szöveg alapján!Megoldás

29

Page 30: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

Mivel a feladatban nem volt egyéb megkötés, azt feltételeztük, hogy a kérések kiszolgálása akülönböző erőforrásokon párhuzamosan történik. Ehelyett a modell lehetne szekvenciális is (azátbocsátás szempontjából nincs kilönbség, de a végrehajtási időben igen!), viszont az előbbi álta-lánosabb, hiszen a WS használata átlapolódhat az adatbázis használatával. A valóságban perszea WS az adatbázishívás előtt és után is dolgozik, sőt, időnként még közben is. A mostani modellazt fejezi ki, hogy – pontos információ híján – ezeket a szakaszokat aggregáljuk és elfelejtjük,hogy milyen sorrendben futottak (absztrakció!).

b) Mekkora az egyes szerverek jelenlegi átbocsátása?MegoldásEmlékeztető: A vizitációs számmal (többek között) a rendszer és a komponensek átbocsátásaés átbocsátóképessége között tudunk váltani. Ha átbocsátással dolgozunk, akkor rendszerint arendszer átbocsátásából számítjuk a komponensek átbocsátását – ilyenkor a vizitációs számmalszorozni kell, hiszen minden rendszerbe belépő tokent átlagosan annyiszor kell feldolgoznia akomponenseknek, mint amennyi a vizitációs szám. Ha átbocsátóképességet szeretnénk számolni,akkor rendszerint a komponensek (egyszerűen számítható) átbocsátóképességéből kiindulva ha-tározzuk meg a rendszer átbocsátóképességét – ilyenkor a vizitációs számmal osztani kell, hiszenha minden belépő tokent annyiszor kell feldolgoznia a rendszernek, mint amennyi a vizitációsszám, akkor annyival kevesebb token érkezhet a rendszerbe túltelítődés nélkül. Ne feledjük, hogy(többek között a szűk keresztmetszetek miatt) ebben az irányban nem elegendő a vizitációsszámmal számolni, gyakran szükség van a számított értékeken végzett egyéb számításokra (pl.minimumképzésre)Számoljunk először a rendszerre, aztán az erőforrásokra! A feldolgozott kérések száma C = 9000(„Count”), a mérés ideje Tm = 30 min.

• Xrendszer = CTm

= 9000 kérés30 min = 9000

1800kérés

s = 5 kéréss

• XWS = Xrendszer · vWS = 5 kéréss · 1 = 5 kérés

s• XDB1 = Xrendszer · vDB1 = 5 kérés

s · 13 = 1,666 kérés

s• XDB2 = Xrendszer · vDB2 = 5 kérés

s · 23 = 3,333 kérés

sc) Mennyi időt töltenek egy-egy hozzájuk beérkezett kérés kiszolgálásával a szerverek?

MegoldásAz egyes erőforrásokra (B a mért foglaltsági idő, „Busy time”, az egyes szerverek pedig C · vikérést dolgoznak fel):

• TWS = BWSC·vWS

= 1350 s9000 használat = 0,15 s

használat• TDB1 = BDB1

C·vDB1= 810 s

3000 használat = 0,27 shasználat

• TDB2 = BDB2C·vDB2

= 1320 s6000 használat = 0,22 s

használatd) Mekkora a rendszer maximális áteresztőképessége?

MegoldásA rendszer maximális átbocsátóképessége az a legnagyobb átbocsátás, amivel egyik komponensbesem érkezik több kérés, mint annak átbocsátóképessége. Ennek megfelelően pl. a DB1 ágra

Xrendszer · vDB1 ≤ XmaxDB1 ⇒ Xrendszer ≤

1vDB1

·XmaxDB1.

Ugyanígy DB2-re és WS-re:

30

Page 31: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

Xrendszer ≤1

vDB2·Xmax

DB2

Xrendszer ≤1vWS

·XmaxWS = Xmax

WS . (1)

Mivel DB1 és DB2 kötött arányú választás (hosszú távon gyakorlatilag olyan, mintha minden„munkát” 1:2 arányban szétbontanánk és továbbküldenénk, tehát ilyen szempontból a fork-joinés a szabad választás3 közé tehető), ezért a számított értékek minimuma érkezhet meg a decisioncsomóponthoz túltelítés nélkül:

Xrendszer ≤ min( 1vDB1

·XmaxDB1,

1vDB2

·XmaxDB2

). (2)

A fork mindig mindkét irányba továbbküldi a kérést, és mindkét irányba a „teljes munkát”továbbítja, tehát az elágazásra számított érték és a WS-re számított érték közül a kisebb lehet arendszer átbocsátóképessége. Ezalapján az 1 és a 2 egyenlőtlenségekből a maximális átbocsátás,vagyis az átbocsátképesség képlete:

Xmaxrendszer = min

(Xmax

WS ,1

vDB1Xmax

DB1 ,1

vDB2Xmax

DB2

).

A feladat megoldásához tehát a komponensek átbocsátóképességeit kell kiszámolnunk:• Xmax

WS = 1TWS

= 10,15 s

kérés= 6,666 kérés

s

• XmaxDB1 = 1

TDB1= 1

0,27 skérés

= 3,704 kéréss

• XmaxDB2 = 1

TDB2= 1

0,22 skérés

= 4,545 kéréss

A rendszer maximális átbocsátóképessége ezekből:Xmax

rendszer = min(6,666 kérés

s , 3 · 3,704 kéréss , 3

2 · 4,545 kéréss

)=

min(6,666 kérés

s , 11,112 kéréss , 6,818 kérés

s

)= Xmax

WS = 6,666 kéréss .

Érdemes megfigyelni, hogy a minimum a WS-en esett, de a DB2-höz tartozó érték (6,818 kéréss )

szintén nagyon közel van. A szűk keresztmetszet tehát jelenleg a webszerver, de csak ennek akomponensnek a fejlesztésével vagy többszörözésével csak korlátozott mértékben növelhető ateljesítmény, mert nagyon hamar a DB2 válik majd szűk keresztmetszetté.

e) Miért nem egyféle foglaltsági időt vettünk figyelembe a két erőforrástípusnál?MegoldásAzért, mert mind a DB szerver, mind a WS egy-egy kis rendszer önmagában is, és belül adiszk I/O, ill. a CPU bizonyul szűk keresztmetszetnek jelen esetben. Más rendszerben, másfeladatot végrehajtva lehet, hogy az egyik erőforrás hálózati linkje, míg a másik erőforrás RAMsávszélessége fog szerepelni. Vegyük észre, hogy ez egy absztrakció, melynek célja a számításokegyszerűsítése a nem (vagy kevésbé) releváns adatok eltávolításával, ami abból indul ki, hogyaz elhanyagolt adatok hatása a megtartott adatokénál jóval kisebb (itt: a webszerver memóriájavagy merevlemez sávszélessége sokkal később telítődne, mint a processzora, de ezt már el semérjük, ha a processzor miatt vergődik a rendszer).

f) Hol csal még így is a modell?MegoldásTöbb egyszerűsítéssel is éltünk, pl.

• lineáris skálázódást feltételeztünk, holott a valós rendszerek ennél általában rosszabbulskálázódnak (ráadásul telítődés közelében hajlamosak leromlani),

• nem vettük figyelembe a valódi rendszerben előforduló összes erőforrást (lásd előző feladat),• feltétleztük, hogy a kéréseket statikus módon elosztva tökéletes terheléselosztást kapunk,

holott ez általában nem igaz: az átlagos értékek hosszú távon a számított módon alakulnak,de rövidebb időszakokra nézve egy átlagosnál hosszabb végrehajtási idejű kérés például rövididőre telítésbe viheti a rendszert.

3A szabad választású döntés akármelyik irányba továbbküldheti a kérést, tehát ha az egyik ág telítésben van, nyu-godtan választhatja a másikat (a kötött arányú nem). Emiatt szabad választásnál az átbocsátóképességek összeadódnak.

31

Page 32: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

5.4. Sziget közlekedési hálózata (∗ korábbi zárthelyi feladat)

Egy sziget lakói minden reggel munkába menet átkelnek a szigetet ölelő tavon. Észak felé híd vezet,dél felé autóskomp. Az irányonként egysávos híd 200 m hosszú, és 60 km/h sebességgel szabad rajtahaladni, a követési távolság (hátsó lámpától hátsó lámpáig 30 m) betartása mellett. A négy komp-hajó egyenként 15 percenként teszi meg a sziget-szárazföld-sziget kört, és így óránként négyen együttlegfeljebb 800 autót tudnak átvinni a szárazföldre.

a) Mekkora a híd átbocsátóképessége (észak felé)?MegoldásLittle törvényében az átbocsátás szerepel, nem az átbocsátóképesség – de abban a speciálisesetben, amikor pont telítve van a rendszer, a kettő megegyezik:

• N = X · T → X = NT ;

• N = 200 m30 m/kocsi = 20

3 kocsi;• T = 200 m

60 km/h = 0,2 km60 km/h = 0,2

60 h; tehát• X = 20/3

0,2/60 = 2000 kocsih = Xmax.

b) Hány autó fér el egy kompban?MegoldásAz előzőhöz hasonlóan Little törvényéből az átbocsátóképesség:

• N = X · T ;X = 800 kocsih ;

• T = 15 min = 0, 25 h;ekkor N = 200, tehát egyszerre 200 autó utazik. Mivel 4 hajó van, ezért egy hajóra 50 kocsi férfel.

c) A reggeli csúcsforgalomban mekkora a szigetet elhagyó két útvonal együttes átbocsátóképessége?MegoldásAz együttes átbocsátóképesség a két átbocsátóképesség összege. A hídon egy irányba óránként2000 kocsi haladhat át, tehát 2000 kocsi

h a híd átbocsátóképessége. A kompok óránként 800 autótvisznek át, tehát az átbocsátóképesség 2800 kocsi

h egy irányba.d) Ha délben a szárazföldi főutat baleset miatt lezárták, és a szigeten keresztül (a hídon, majd a

kompon átkelve) terelik a forgalmat, mekkora a terelőútvonal átbocsátóképessége?MegoldásA terelőút átbocsátóképessége (soros kompozíció): X = min(Xhíd, Xkomp) = 800 kocsi

h .e) Valamelyik reggel 7:00 és 8:30 között 900 autó hagyta el a szigetet komppal. Mennyi volt ebben

az időszakban a kompok átbocsátása és kihasználtsága?MegoldásÁtbocsátás: X = K

T = 9001,5 = 600 kocsi

h .

Kihasználtság: U = XXmax = 600 kocsi

h800 kocsi

h= 0, 75 = 75%.

f) A fenti mérésben átlagosan hány autó állt sorba egyszerre a parton, ha az autók jól időzítve,átlagosan fél perccel a beszállásuk előtt érkeztek kompkikötőhöz?MegoldásKomphoz sorbanállásra Little-törvény: N = X · T = 0, 5 min · 600 autó

h = 5 autó.

5.5. Tudásbázis (∗)

Vállalatunk nyilvános szakmai tudástára egymásra is hivatkozó szócikkeket kínál a cég termékeitvilágszerte használó ügyfeleknek. Egyetlen szócikk lekérésének kiszolgálásához a szervert átlagosan60 ms-ig veszi igénybe. A szócikk megtekintése után az olvasó csak az esetek 30%-ában hagyja el azoldalt, többnyire ugyanis egy újabb szócikkre mutató hivatkozásra kattint.

a) Egy olvasó összes tudásszomjának kielégítéséhez átlagosan mekkora szerveridő szükséges?MegoldásEgy szócikk lekérésének kiszolgálása átlagosan 60 ms, egy felhasználó pedig átlagosan v = 1

0,3szócikket tekint meg,4 tehát T = 60 ms

szócikk ·1

0,3szócikk

felhasználó = 200 msfelhasználó . A v most is a vizitációs

szám.4Geometriai eloszlás várható értéke (Wikipédia) http://hu.wikipedia.org/wiki/Geometriai_eloszlás

32

Page 33: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

b) Tekintsük úgy, hogy az egyes kérések a szerveren nem párhuzamosíthatóak. Óránként hány egyedilátogatót képes kiszolgálni a szerver?MegoldásMaximális eset, amikor a kihasználtság 100%, azaz U = 1. Ekkor U = X · T → X = U

T = 10,2 =

5 látogatós . Óránként 3600 s · 5 látogató

s = 18000 látogató.

5.6. Közösségi oldal

Internetes közösségi oldalt működtetünk. Az utóbbi időben számottevően népszerűbb lett az oldal,de ezáltal a válaszidő is kellemetlenül megnőtt. Az üzleti cél, hogy csúcsidőszakban egyszerre 1500felhasználót átlagosan négy másodperces válaszidővel szolgáljon ki a honlap.

a) Minimálisan mekkorára kell tervezni a kiszolgáló infrastruktúra átbocsátóképességét, ha az azonkívüli késleltetés (hálózati forgalom, HTML megjelenítés a kliensoldalon) egy másodpercnekbecsülhető?MegoldásTehát a kiszolgáló infrastruktúránknak átlagosan 3 másodperces válaszidővel kell kiszolgálniegyszerre 1500 felhasználót. Little-törvényt alkalmazva: N = 1500, T = 3 s

kérés , tehát X = NT =

500 kéréss

b) Az újratervezett weboldalon a mérések szerint egyetlen kérés kiszolgálása átlagosan 20 ms CPU-időt igényel a webszerveren, és 12,5 ms erejéig foglal le egy adatbázisszervert. Jelenleg 15 web-szerver fogadja a kéréseket és az adatbázis 5 kiszolgálóra van replikálva. Lineáris skálázhatóságotfeltételezve, milyen számítógépből és mennyit kell még legalább venni a fenti cél eléréséhez?MegoldásTCPU = 20 ms = 0,02 s, TDB = 12,5 ms = 0,0125 s. A CPU-nak és adatbázisnak is legalább500 kérést kell tudnia kiszolgálni másodpercenként, hogy a teljes rendszer is képes legyen erre(akár szekvenciális, akár párhuzamos kompozíciót alkalmazunk). Jelenleg az erőforrások egyetlenpéldányára: Xmax

CPU = 1TCPU

= 50 kéréss , Xmax

DB = 1TDB

= 80 kéréss . Tehát a 15 webszerver átbocsátó

képessége együttesen 750 kéréss , míg az 5 adatbázis szerveré csak 400 kérés

s . Tehát még kell 2 dbadatbázis szerver, hogy az adatbázis réteg elérje a kívánt átbocsátó képességet.

c) (∗) A kibővített rendszerben mekkora lesz az egyes szervertípusok kihasználtsági aránya? Ha aza cél, hogy még a csúcsidőszakban is legfeljebb 50%-os legyen a kihasználtság, meddig kellenemég bővíteni a rendszert?MegoldásA 15 webszerver átbocsátó képessége együttesenXmax

web = 750 kéréss , a csúcsidőszakban a szükséges

átbocsátás pedig Xweb = 500 kéréss . A kihasználtságuk tehát Uweb = Xweb

Xmaxweb

= 23 . Ugyan ezzel a

módszerrel: UDB = XDBXmax

DB= 500

520 = 0.96.

Ha 50%-os kihasználtságot szeretnénk, akkor XwebUweb

(= XDB

UDB

)= 500 kérés

s0.5 = 1000kérés

s átbocsátóképességgel kell rendelkeznie az infrastruktúrának csúcsidőszakban. Ehhez 20 webszerver és 13adatbázis szerver kell.

d) Tekintsünk csak 2 db webszervert és 3 db adatbázis szervert. Készítsünk állapot alapú mo-dell(eke)t, amely(ek) az infrastruktúra erőforrásait modellezi(k) az elérhetőségeik (szabad/fog-lalt) szerint. Milyen tervezői döntésekkel szembesülünk? Mik az egyes lehetőségek előnyei éshátrányai?MegoldásLehetőségek:

• Az erőforrásokat típusonként összevonva modellezzük aszerint, hogy mennyi foglalt belőlük.Tehát lesz egy 0–1–2 állapotláncunk a webszerverekre, valamint egy 0–1–2–3 állapotláncunkaz adatbázis szerverekre. Az erőforráskészlet teljes modellje ezek aszinkron szorzata lesz.A megoldás előnye, hogy egyszerű. Ha például szeretnénk erőforrás foglalást is modellezni,akkor az könnyen megvalósítható kooperáló állapotgépekkel: ha az erőforrás állapotgépenem az utolsó állapotban van, akkor sikerül a foglalás, és ezzel szinkronban az erőforrásállapotgépe is lép egyet „jobbra” (már eggyel kevesebb erőforrás szabad). Az erőforrásfelszabadítás hasonlóan történik.A megoldás hátránya, hogy nem szolgáltat arról információt, hogy melyik erőforrás példány

33

Page 34: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

mikor szabad vagy foglalt, így nem tudunk például pontos kihasználtságot mondani az egyespéldányok esetén, csak egy átlagos értéket, ami az összes szervert jellemzi.

• Minden erőforrás példányt külön modellezünk egy szabad-foglalt állapotpárral (vagy akármég részletesebben). Tehát annyi állapotgép régiónk lesz, ahány erőforrás példányunk van.Az erőforráskészlet teljes modellje ezek aszinkron szorzata lesz.A megoldás előnye, hogy konkrét erőforrás példányokra is tudunk például kihasználtságotszámolni. Vagy ami még érdekesebb: tudunk erőforrásonként meghibásodást és javítást ismodellezni és ennek fényében megnézni az egyes metrikák változását. A meghibásodási ésjavítási ráták különbözhetnek is az egyes példányok esetén, így lehetőség nyílik heterogénerőforrás kollekció (vagy alkatrész elöregedés) modellezésére is.A megoldás hátránya, hogy mostantól a fogyasztók felé is több erőforrás példány látszik,ami például megnehezíti a foglalás modellezését. Egy erőforrás foglalásához meg kell keresniegy szabad erőforrást, majd a végén pontosan azt kell felszabadítani. Ez a szituáció mégtovább bonyolódik, ha egy művelethez több erőforrásra is szükség van (holtpont, éheztetés).Ebben az esetben célszerű (és szokás is) bevezetni egy erőforrás menedzser komponenst,amely elrejti ezt a folyamatot a fogyasztóktól.

5.7. Szerver teljesítménye – teljesítménymodellezés

Egy szerveren az alábbi teljesítményjellemzőket mértük:

Mintavétel időpontja [ms] 500 600 700 800 900Utolsó 100ms alatt feldolgozott kérések száma [darab] 11 12 21 18 20Utolsó 100ms átlagos kiszolgálási ideje [ms] 15 20 21 25 27Utolsó 100ms CPU kihasználtság [%] 12 13 16 17 19Utolsó 100ms HDD I/O kihasználtság [%] 55 63 87 61 73

a) A rendelkezésre álló adatok alapján a szerver melyik erőforrása tűnik a szűk keresztmetszetnek?MegoldásA HDD kihasználtsága a legnagyobb. A terhelés felskálázásával először a HDD fog telítődni.

b) Az első mintavétel idején mekkora az átbocsátási ráta értéke? Az 5 mintavétel alapján mekkoraaz átbocsátási ráta átlaga?MegoldásA mintavételi időkből látszik, hogy két mintavétel között 100 ms telik el. Ebből

X1 = k1∆t = 11 kérés

100 ms = 11 kérés100 ms

[1000 ms1 s

]= 110 kérés

s .

Az átlag kiszámítása történhet a másik négy átbocsátás kiszámításával és átlagolással, vagy akövetkező módon (kihasználva, hogy ∆t végig 100ms):

k =∑ni=1 kin

= 11 + 12 + 21 + 18 + 205 = 16,4

Ebből az átlagos átbocsátás X = k∆t = 16,4

0,1 = 164 kéréss .

c) Ezen 5 mérés alapján milyen becslést tudunk adni az egyszerre kiszolgálás alatt lévő kérésekátlagos számára?MegoldásAz utolsó 100 ms alatt feldolgozott kérések számából és az átlagos kiszolgálási időből adódik.Mivel az átlagos kiszolgálási idő különböző elemszámú adathalmazokból került kiszámításra,egyszerű átlagolásuk helyett a feldolgozott kérésekkel súlyozott átlagukat kell vennünk.

T =∑ni=1 kiti∑ni=1 ki

= 11 · 15 + 12 · 20 + 21 · 21 + 18 · 25 + 20 · 2711 + 12 + 21 + 18 + 20 = 22,39 ms

A rendszer egyensúlyi állapotban van, ezért a b) feladatban kiszámolt átlagos átbocsátássalalkalmazhatjuk a Little-törvényt:

34

Page 35: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

N = X · T = 164 1s · 22,39 ms = 164 1

s · 0,02239 s = 3,67196

6. Adatelemzés

6.1. Szerver teljesítménye – felderítő adatelemzése

Egy szerveren az alábbi teljesítményjellemzőket mértük:

Mintavétel időpontja [ms] 500 600 700 800 900Utolsó 100ms alatt feldolgozott kérések száma [darab] 11 12 21 18 20Utolsó 100ms átlagos kiszolgálási ideje [ms] 15 20 21 25 27Utolsó 100ms CPU kihasználtság [%] 12 13 16 17 19Utolsó 100ms HDD I/O kihasználtság [%] 55 63 87 61 73

a) Ábrázoljuk a feldolgozott kérések számát és a CPU kihasználtságot pontfelhő (scatterplot) di-agramon! Értelmezzük a diagramot!Megoldás

12

14

16

18

12.5 15.0 17.5 20.0Feldolgozott kérések száma

CPU

kih

aszn

álts

ág

Két klaszter (csoportosulás) látszik, nagyjából pozitív a korreláció (kb. arányosak az adatok), denem direkten monoton (valami más is befolyásolhatja az adatokat, ezért ingadozik). Értelmezvea látottakat a CPU átlagos kihasználtsága a feldolgozott kérések számával nő. A bal alsó csoportkisebb terhelésű pillanatokat tartalmaz, míg a jobb felső nagyobbakat. Ez a megfigyelés adottesetben jó alapja lehet a terhelés vizsgálatának (pl. az egyes csoportokhoz tartozó pontok időbenis közel vannak-e egymáshoz).

b) Az első mintavétel idején mekkora az átbocsátási ráta értéke? Az 5 mintavétel alapján mekkoraaz átbocsátási ráta tapasztalati átlaga és mediánja? Mi tartozik a 40%-os kvantilisbe?Megoldás

A mintavételi időkből látszik, hogy két mintavétel között 100 ms telik el. Ebből

X1 = k1∆t = 11 kérés

100 ms = 11 kérés100 ms

[1000 ms1 s

]= 110 kérés

s .

A tapasztalati átlag kiszámítása történhet a másik négy átbocsátás kiszámításával és átlagolással,vagy a következő módon (kihasználva, hogy ∆t végig 100ms):

k =∑ni=1 kin

= 11 + 12 + 21 + 18 + 205 = 16,4

35

Page 36: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

Ebből az átlagos átbocsátás X = k∆t = 16,4

0,1 = 164 kéréss .

Az elemek sorba állítva 11, 12, 18, 20, 21, ebből rögtön látszik, hogy a medián 18, tehát az átbo-csátás mediánja 18

0,1 = 180 kéréss .

A p kvantilis definíció szerint az a szám, amelynél az elemek p-ed része kisebb vagy egyenlő.A pkvantilisba azok az elemek tartoznak, amelyek kisebb vagy egyenlők a p kvantilisnál. A kvantilisspeciálisabb változata a percentilis, amely egész százalékokkal dolgozik, valamint a kvartilis,amely „negyedeli” az adatot. Pl. a 35. percentilis a 35%-os kvantilisnak felel meg (a kvantilislehetne pl. 35,7% is!), a második kvartilis pedig az 50%-os kvantilisnak.Itt az elemek legkisebb 40%-a a 11 és a 12, ezért a 40%-os kvantilis értéke a 12 lesz, és a 11,illetve 12 elemek tartoznak bele. A kapcsolódó átbocsátási ráták 110 kérés

s és 120 kéréss

c) Vajon mely mért jellemzők között sejthető ok-okozati viszony?MegoldásAhogy az ábrán is látjuk, az átbocsátás hatással van az erőforrások kihasználtságra. A szűkkeresztmetszetnek számító erőforrás (HDD – ld. korábbi gyak) magas kihasználtsága meg islátszik a megnyúlt válaszidőkön.

6.2. Képgaléria – adatelemzés

Online képgalériánkban a felhasználók keresés alapján megjeleníthetnek a keresőkifejezésre illeszkedőképeket.

a) Az alábbi hisztogramon ábrázoltuk az albumok méretének eloszlását. Mivel a tárhely hatékonyszervezéséhez elég azt tudnunk, hogy hány 10 alatti, 10 és 20 közötti stb. képet tartalmazóalbumunk van, az alábbihoz képest kétszeres oszlopszélességű hisztogramot szeretnénk (szinténa 0 mérettől kezdve felszámítva az oszlopokat). Rajzoljuk meg az ábrát!

0

1

2

3

4

5

0 5 10 15 20 25 30 35 40 45 50Méret

0

1

2

3

4

5

0 5 10 15 20 25 30 35 40 45 50Méret

Megoldás

0

1

2

3

4

5

0 5 10 15 20 25 30 35 40 45 50Méret

b) Pont-pont diagramon (scatterploton) ábrázoltuk 5 kiválasztott album méretét illetve megtekin-tési számát a megosztási számmal összehasonlításban. Igaz-e, hogy minél nagyobb az album,annál többen tekintik meg? Válaszolja meg a kérdést egy harmadik pont-pont diagramon, amelya megtekintések számát a méret függvényében ábrázolja!

36

Page 37: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

1

2

3

4

5

6

1 2 3 4 5 6Megosztások száma

Mér

et

2

3

4

5

6

7

1 2 3 4 5 6Megosztások száma

Meg

teki

ntés

ek s

zám

a

Megoldás

2

3

4

5

6

7

1 2 3 4 5 6Méret

Meg

teki

ntés

ek s

zám

a

c) Az albumok jellemző népszerűségét szeretnénk meghatározni, emiatt a pont-pont diagram alap-ján kiszámoltuk a megtekintési számok átlagát és mediánját. Általánosságban megtehető-e ezegy pont-pont diagram alapján? Mennyivel változnak ezen középértékek, ha feltöltünk egy újalbumot, amelyet 40-en tekintenek meg?MegoldásAz értékek 2, 3, 5, 6, 7; tehát az átlag 23

5 = 4,6, míg a medián 5.Ha hozzávesszük a 40-et, akkor az átlag 63

6 = 10,5, míg a medián 5+62 = 5,5.

Tanulság: az átlag érzékenyebb a kiugró értékekre, a medián kevésbé.

6.3. Szenzorhálózat (korábbi zh feladat) – adatelemzés

Adott egy mezőgazdasági szenzorhálózat, amellyel a szabadföldes, üvegházi, ill. fóliasátras területe-ink állapotát követjük nyomon a mért értékek (hőmérséklet, páratartalom, fényerősség, szélsebesség,detektált kártevők stb.) alapján.

37

Page 38: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

Dátum Hőm.[◦C]

Pára.[%]

Kártevők[db]

2015. 05. 04. 08:00 18 66,00 32015. 05. 04. 09:00 20 65,75 62015. 05. 04. 10:00 20 65,75 82015. 05. 04. 11:00 20 65,50 92015. 05. 04. 12:00 20 65,50 52015. 05. 04. 13:00 21 65,00 122015. 05. 04. 14:00 21 64,70 52015. 05. 04. 15:00 21 64,70 62015. 05. 04. 16:00 21 64,60 72015. 05. 04. 17:00 22 64,00 2

a) Sajnos a május 4. hétfői középértékek (medi-án) lemaradtak az ábráról, rajzoljuk őket bea táblázatban található adatok alapján!

b) Értelmezze a diagramokat: mely változó(k)első kvartilisei mutat(nak) szigorúan mono-ton változást az idő folyamán?

c) (Kiegészítő feladat.) Szeretnénk párhuzamoskoordináta diagramon összevetni a hétfői hő-mérsékleti értékeket a detektált kártevők szá-mával.

0.0

2.5

5.0

7.5

10.0

12.5

h k sz cs p

Kártevők száma

16

18

20

22

24

h k sz cs p

Hőmérséklet

64.0

64.5

65.0

65.5

66.0

h k sz cs p

Páratartalom

Megoldás

38

Page 39: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

a) Rajzoljuk be a medián értékeket. Mivel pá-ros számú értékünk van, ezért a középső kettőátlaga lesz a medián. Az első két oszlop ren-dezett, ezért pont a középső két érték átlaga:20+21

2 = 20,5, ill. 65,5+652 = 65,25.

A harmadik oszlop sorbarendezve2, 3, 5, 5, 6, 6, 7, 8, 9, 12, így a medián 6+6

2 = 6.b) Egyik sem, hiszen a „dobozok” alja nem mu-

tat sehol szigorúan monoton változást.A boxplot főbb jellemzőit az 1. ábra mutat-ja be. A ±1.5 × IQR-en kívül eső értékeketponttal jelöljük.Érdekességként megjegyezzük, hogy a 1.5konstans használata egy statisztikai konven-ció, amely analóg a a normális eloszlású adat-halmazok ±3σ elvével.

c) Az értékeket az alábbi párhuzamos koordiná-ta diagramon ábrázoljuk.

Hőmérséklet Kártevők

0.0

2.5

5.0

7.5

10.0

12.5

h k sz cs p

Kártevők száma

16

18

20

22

24

h k sz cs p

Hőmérséklet

64.0

64.5

65.0

65.5

66.0

h k sz cs p

Páratartalom

Q1 Q3

IQR

Median

Q3 + 1.5 × IQRQ1 − 1.5 × IQR

−0.6745σ 0.6745σ 2.698σ−2.698σ

50%24.65% 24.65%

68.27% 15.73%15.73%

−4σ −3σ −2σ −1σ 0σ 1σ 3σ2σ 4σ

−4σ −3σ −2σ −1σ 0σ 1σ 3σ2σ 4σ

−4σ −3σ −2σ −1σ 0σ 1σ 3σ2σ 4σ

1. ábra. A boxplot főbb jellemzői

39

Page 40: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

6.4. Szenzorhálózat (korábbi zh feladat) – teljesítményelemzés (∗)

(A 6.3. feladathoz kapcsolódó teljesítményelemzési feladatok.) A különböző típusú szenzorok a he-lyüktől számított 100 méteres körzetben lévő területekről szolgáltatnak adatokat. A szenzorok mé-rési eredményeiket időbélyeggel ellátva, rádiós kommunikációs hálózaton továbbítják a központnak.A központi számítógép processzora feldolgozza a kéréseket, majd archiválási célzattal kiírja őket egytárolóegységre. A gazdaságunk összesen 4500 szenzort telepített, amelyek percenként egy-egy mérésieredményről adnak jelentést. A rendszer sikerrel kiszolgálja a terhelést. A rádiós kommunikációs háló-zat 100 mérési eredményt képes másodpercenként továbbítani. A központi számítógép CPU idejének75%-a tétlenül múlik. A tárolóegységet 8 ms-ig foglalja le minden egyes kérés kiírása.

a) Másodpercenként hány mérési adat a rendszer jelenlegi átbocsátása?MegoldásX = 4500 szenzor · 1 adat/60 s = 75 adat/s

b) Mekkora a hálózat, CPU, ill. tároló átbocsátása, átbocsátóképessége és kihasználtsága?MegoldásXhálózat = XCPU = Xtároló = X = 75 adat/s, mert minden vizitációs szám 1.

Xhálózatmax = 100 adat/s→ Uhálózat = Xhálózat/X

hálózatmax = 75/100 = 75% = 0,75

UCPU = 1− 0,75 = 0,25 = 25%→ XCPUmax = XCPU/UCPU = 75/0,25 adat/s = 300 adat/s

Ttároló = 0,008 s és nincs átlapolódás:

Xtárolómax = 1/Ttároló = 125 adat/s→ Utároló = Xtároló/X

tárolómax = 75/125 = 60% = 0,6

c) A mérési pontosság javításához hány szenzort helyezhetünk még üzembe ugyanezen a területenaz infrastruktúra fejlesztése nélkül? Feltételezzünk lineáris skálázódást!MegoldásMivel minden mérés feldolgozásához igénybe vesszük mindhárom erőforrást:

Xmax = min(Xhálózatmax , XCPU

max , Xtárolómax ) = Xhálózat

max = 100 adat/s

Tehát 4/3 arányú felskálázás lehetséges, még 1500 szenzor üzembe helyezhető.d) A rádióhálózat ügyes kódolással biztosítja, hogy egyszerre több szenzor is sugározhasson mérési

eredményeket. Átlagosan hány szenzor rádiója sugároz egyszerre (vagyis hányszoros az átlapo-lódás) a hálózaton jelenleg, ill. a hálózat maximális terheltsége esetén, ha egy mérési eredménysugárzása 40 ms-ig tart?MegoldásAlkalmazzuk Little törvényét a levegőben épp sugárzás alatt álló üzenetekre:

Thálózat = 0,040 s

Xhálózat = 75 adat/s→ Nhálózat = Xhálózat · Thálózat = 75 adat/s · 0,04 s = 3 adat egyszerre most

Xhálózatmax = 100 adat/s→ Nhálózat = 100 adat/s · 0,04 s = 4 adat maximálisan

7. Követelménymodellezés

7.1. Vasúti biztosítóberendezés követelményelemzése

Vasúti biztosítóberendezést tervezünk. A rendszer elsődleges célja a vonatok összeütközésének megaka-dályozása. A megfelelő rendszer kifejlesztésének kulcsa a jó minőségű követelményspecifikáció, ugyanisa követelmények alapján kell majd teszteseteket és egyéb ellenőrző vizsgálatokat kidolgoznunk.

40

Page 41: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

2. táblázat. A vasúti biztosítórendszer követelményei (részlet)R1 Biztonság A felügyelt pályarendszeren tartózkodó vonatok nem

ütközhetnek össze.R2 Működés A vonatoknak biztosítani kell, hogy elérhessék az úti-

céljukat.R3 Optimalitás Minimalizálni kell a vonatok menetidejét.R4 Pályaszakaszok felügyelete A pályarendszert szakaszokra kell osztani, ezeken egy-

szerre egy vonat tartózkodhat.R5 Szakaszokra bontás A pályarendszert szakaszokra kell bontani.R6 Foglaltság Egy szakaszon egyszerre egy vonat tartózkodhat.R7 Foglaltság érzékelése Valamilyen módon érzékelni kell, hogy egy szakaszon

áll-e vonat, vagy nem.R8 Hibatűrés A komponensek meghibásodására fel kell készülni.R9 Foglaltságjelző szenzorok A foglaltságot többféle, redundánsan kialakított szen-

zorral kell érzékelni.R10 Sínekbe épített szenzor A sínekbe mindegyik szakaszon szenzorokat kell tele-

píteni, amik jelzik, hogy a szakaszon áll-e vonat, vagysem.

R11 Kamerás rendszer Ahol lehetséges, kamerákat kell telepíteni a szakaszokmegfigyelésére.

R12 Helyzetmeghatározás A vonatoknak folyamatosan jelezni kell a helyzetüketa központi vezérlő felé.

R13 GPS alrendszer A vonatokat GPS alrendszerrel kell felszerelni.R14 Vezeték nélküli kapcsolat Biztosítani kell, hogy a vonatok vezeték nélküli háló-

zaton jelezhessék a helyzetüket a központi vezérlő felé.R15 Vonatok vezérlése Meg kell tudni akadályozni, hogy a foglalt szakaszra

másik vonat is ráhajthasson.R16 Vonat leállítása A központi rendszer azonnal leállíthatja a vonatot.R17 Mozdonytípusok támogatása A rendszernek támogatnia kell minden, a sínpáron

közlekedni képes mozdonytípust.R18 Mozdony nem módosítható Nem alkalmazható olyan megoldás, amihez a mozdo-

nyok vezérlését meg kellene változtatni.

a) Gyűjtsük össze azokat a szereplőket, akik egy ilyen rendszer kifejlesztése kapcsán érintettek,vagyis követelményeket támaszthatnak a leendő rendszerrel szemben (ún. stakeholderek)!Megoldás

• Vasúti társaság– Vasúti karbantartók– Mozdonyvezetők– Forgalomirányítók

• Vonatgyártók• Utasok• Hatóságok

– Törvények és szabályozások– Felügyelő testületek

• Szabványok• stb.

b) A stakeholderek felderítése után összegyűjtöttük az általuk támasztott követelményeket is, ennekegy részletét tartalmazza a 2. táblázat. Rajzoljuk fel a követelmények közötti függőségi viszo-nyokat egy gráf segítségével! A gráfban A-ból B-be mutató irányított éllel jelezzük, ha (1) az Akövetelmény a B követelmény része (kompozíció), (2) az A követelmény finomítja (részletezi) aB követelményt (refines kapcsolat), illetve (3) az A követelmény származtatható a B követel-ményből (derive kapcsolat). Ne foglalkozzunk azzal, hogy két követelmény közül ezen viszonyok

41

Page 42: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

melyike áll fent; most csak a kapcsolat megléte a fontos.Megoldás

A vázolt kapcsolattípusok alapvetően a követelményanalízis során a tervező top-bottom gondo-latmenetét fejezik ki, ezért a kapcsolat megléte, illetve főképp a típusa igen szubjektív lehet. Alényeges információ itt az, hogy adott magas szintű követelményhez mely alacsony szintű kö-vetelmények kapcsolódnak valamilyen módon. Egy ilyen hierarchia segítségével a megvalósításbottom-up módon történhet az alacsony szintű követelményektől indulva. Emiatt nem érdemesmost feltüntetni a kapcsolatok típusát.

R1 R2 R3

R4

R5 R6

R7

R8

R9

R11R10 R12

R13 R14

R15

R16

R17

R18

(A szaggatott piros vonallal jelzett élek későbbi feladatban kerülnek elő.)c) A felsoroltak közül melyek funcionális követelmények, illetve milyen típusúak az extrafunkcionális

követelmények (biztonságosság, teljesítmény, megbízhatóság stb.)?MegoldásFunkcionális: R2, R4–R7, R9–R16Extrafunkcionális: R1 (biztonságosság), R3 („teljesítmény”, esetleg optimalitás), R8 (megbízha-tóság), R17 (kompatibilitás), R18 („karbantarthatóság”)Vegyük észre, hogy egy extrafunkcionális követelmény megvalósításához szükséges konkrét funk-ciók (származtatott követelmények) már lehetnek funckionális követelmények; és fordítva, egyfunkcionális követelmény teljesülésének lehetnek extrafunkcionális feltételei.

d) Vizsgáljuk meg, hogy konzisztens-e a bemutatott követelményrendszer! Ha nem az, akkor mu-tassunk példát ellentmondásra!MegoldásA követelményrendszerben két ellentmondás is található (ezeket az előző ábrán piros szaggatottvonallal jelöltük). Az egyszerűbben feloldható konfliktus az R3 és az R4 (vagy R6) között figyel-hető meg, ugyanis azzal, hogy egy szakaszra egyszerre csak egy vonatot engedünk be, várhatóanszuboptimális eredményt kapunk a menetidő tekintetében (pl. ha egy szakasz jóval hosszabb,mint egy vonat). Itt kompromisszumot kell kötni a biztonságosság és a hatékonyság között, amia valóságban is egy gyakori dilemma.A másik ellentmondás az R16 és R18 között feszül, ugyanis ahhoz, hogy a vonat távolról le-állítható legyen a központból, feltételezhetően mindenképpen „bele kell nyúlni” a vezérlőjébe.Ennek a konfliktusnak a feloldása már nem kompromisszum kérdése, itt mindenképpen át kell

42

Page 43: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

alakítani a követelmények egy részét, attól függően, hogy az R16 vagy az R18 megsértése azelfogadhatóbb.

e) A fentiekből adjunk példát közvetlenül ellenőrizhető követelményre!MegoldásPl. ilyenek az R6, R7, R9 követelmények.

7.2. Rendszermodellezés tárgy követelményei

Az alábbiakban felsoroljuk a Rendszermodellezés tárgy menetével kapcsolatos követelményeket. Fi-gyelem: a felsorolás (a legtöbb valós specifikációhoz hasonlóan) nem feltétlenül logikus sorrendbenszedi össze a követelményeket és nem biztos, hogy teljes/konzisztens. A könnyebb hivatkozás kedvéérta követelményeket sorszámmal láttuk el.R1 A tárgy elvégzésének feltétele az aláírás megszerzése.R2 A félév 1 regisztrációs hétből, 14 oktatási hétből és 1 pótlási hétből áll.R3 Az aláíráshoz a hallgatónak az összes zárthelyi dolgozatot és a házi feladatot elégséges szintre

teljesítenie kell.R4 A tárgyból egy házi feladat van.R5 A házi feladat leadási határideje a 12. hét.R6 A házi feladat mellé plusz pontszám szerezhető szorgalmi feladat és a bemelegítő feladat leadásá-

val.R7 A házi feladat a pótlási héten pótolható.R8 A zárthelyi dolgozatok közül csak egy pótolható.R9 A tárgyból két zárthelyi dolgozat van.R10 A tárgy csak akkor vehető fel, ha a hallgató teljesítette a tanrend szerinti előkövetelményeket.R11 A tárgy sikeres elvégzése után az összes ráépülő tárgy felvehető.R12 A házi feladat kiadásának ideje a 3. hét.R13 Az 1. zárthelyi ideje a 8. hét.R14 A 2. zárthelyi ideje a 14. hét.R15 A házi feladat a pótlási héten pótolható.R16 Minden pótlás különeljárásidíj-köteles.R17 A tárgy 14 előadásból és 6 gyakorlatból áll.R18 A gyakorlatokon történő részvétellel jutalompont szerezhető.R19 A tárgyra kapott jegy a zárthelyik pontszáma, a házi feladat pontszáma és a jutalompontok

összegének függvénye.R20 A gyakorlatok opcionális beugrófeladattal indulnak, melyekért jutalompont jár.R21 A zárthelyi kötelezően beugróval indul, melynek nem teljesítése a zárthelyi nem teljesítését vonja

maga után.a) Teljes-e a fenti követelményrendszer? (Ha nem, hogyan változtatna rajta?)b) Konzisztens-e a fenti követelményrendszer? (Ha nem, hogyan változtatna rajta?)c) Rajzoljon folyamatmodellt, ami az egyéni hallgató szemszögéből mutatja be a tárgy menetét!d) Mennyiben térhet el egy folyamatmodell, amely az oktató szemszögéből mutatja be a tárgy

menetét?e) Ha feltételezzük, hogy a tárgy összes, követelmények teljesítésével kapcsolatos lépése (házi feladat

kiadás, házi feladat beadás, értékelés stb.) munkafolyamat alapon történik, akkor hány különbözőmunkafolyamat sablon hány különböző példánya fut jelenleg a rendszerben?

f) Ha a Neptun szemszögéből nézzük, mik a tárgy elvégzésének lehetséges kimenetei? (Egy hallga-tói munkafolyamat futásának eredményei?) Ha az előtanulmányi követelmények kiértékelésénekszempontjából nézzük, mik a lehetséges kimenetek? Milyen viszony áll fenn ezek közt? Mindezmennyiben változna, ha a tárgy vizsgás tárgy lenne?

g) Hogyan ellenőrizhető, hogy a tárgy végrehajtásának folyamata a Tanulmányi és Vizsgaszabály-zatnak (TVSZ) megfelel-e?

Megoldás

A követelmények gráfként ábrázolva:Az a/b/c szétválasztások:R16 Minden pótlás különeljárásidíj-köteles.

43

Page 44: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

R0R1

R19

R3

R4

R15 R16c

R5

R6b

R6a R9R13

R14

R8R16a

R16bR17a

R17b R18b

R18a

2. ábra. Követelmények

R16a a pótzárthelyi nem különeljárásidíj-köteles.R16b a pótpótzárthelyi különeljárásidíj-köteles.R16c a pót házi feladat különeljárásidíj-köteles.

R17 A tárgy 14 előadásból és 6 gyakorlatból áll.R17a A tárgyból van előadás és gyakorlat.R17b A tárgyból 14 előadás és 6 gyakorlat van.

R18 A gyakorlatokon történő részvétellel jutalompont szerezhető.R18a Beugró alapjánR18b Kiskérdések alapján

8. Kísérlettervezés*

Adatelemzés – elméleti ismeretek

Valószínűségszámítási alapfogalmak

• Valószínűségi változó (random variable): X• Várható érték, átlag (expected value, average, mean):

µ = EX =n∑i=1

pixi

• Szórásnégyzet (variance):

σ2 = E (X − µ)2 =n∑i=1

pi(xi − µ)2

• Szórás (standard deviation):

σ =√E (X − µ)2 =

√√√√ n∑i=1

pi(xi − µ)2

Konfidencia – normális eloszlás

A normális eloszlású változó• az esetek 68%-ában legfeljebb 1σ messze kerül µ-től,• az esetek 95%-ában legfeljebb 2σ messze kerül µ-től,• az esetek 99,7%-ában legfeljebb 3σ messze kerül µ-től.

44

Page 45: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

3. ábra. Konfidenciaintervallumok

Statisztikai alapfogalmak

• Megfigyelések: t darab, x1, . . . , xt• Tapasztalati átlag (sample mean):

m = x = x1 + · · ·+ xtt

• Korrigált tapasztalati szórás (unbiased sample standard deviation):

s =

√(x1 −m)2 + · · ·+ (xt −m)2

t− 1 =

√∑ti=1 (xi −m)2

t− 1

Figyeljük meg, hogy a korrigált tapasztalati értékeknél t helyett (t − 1)-gyel osztunk. Ennekoka, hogy t-vel osztva a kapott érték általában alábecsli a teljes populáció szórását. Belátható,hogy (t−1)-gyel osztva a valódi szórást jobban közelítő értéket kapunk. Ezt nevezzük Bessel-félekorrekciónak (https://en.wikipedia.org/wiki/Bessel’s_correction).

Kísérlettervezés

A centrális határeloszlás-tételből (central limit theorem) következik, hogy tetszőleges eloszlású jellemző(véges µ várható értékkel és σ szórással) tapasztalati átlaga (m valószínűségi változó) t → ∞ eseténnormális eloszlású, µ várható értékkel és σm = σ√

tszórással (ahol σ a megfigyelés alatt álló valószínűségi

változó szórása).Ökölszabály: ismert szórásnál t > 30 után kezd elfogadható lenni ez a közelítés.A fentiek miatt a megfigyeléseink kiértékeléséhez használhatjuk a normális eloszláshoz tartozó konfi-denciaintervallumokat. Eszerint m 68%-os valószínűséggel maximum σm távolságra esik µ-től. Tehát(ha m-et és σm-et ismerjük, és µ-t szeretnénk ez alapján becsülni) µ értékéről kijelenthetjük, hogy

• 68% valószínűséggel m− σm és m+ σm közé esik, valamint ehhez hasonlóan• 95% valószínűséggel m− 2σm és m+ 2σm közé esik,• és 99,7% valószínűséggel m− 3σm és m+ 3σm közé esik.

Sokszor azonban σ nem ismert (a mérésekre azért van szükség, hogy becsléseket kaphassunk µ és σértékére), ekkor elfogadható a σm ≈ s√

t(ahol s a korrigált tapasztalati szórás), amennyiben t ≥ 100.

8.1. Kísérlettervezés

Egy modellezett folyamat átbocsátóképességére szimuláció alapján szeretnénk egy közelítő értéket éshozzá tartozó konfidencia-intervallumot meghatározni.

a) Hány szimuláció mérési eredményeiből számoljunk átlagot?MegoldásHa még nincsenek közelítéseink a szórásra, az ökölszabály szerint legalább 100 megfigyelést kellvégezni.

45

Page 46: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

b) Az így elvégzett mérési eredmények tapasztalati közepe 500 kérés/s; a tapasztalati szórás 10%.Szeretnénk, hogy 95% konfidencia mellett egy legfeljebb 40 kérés/s széles intervallumba essen azátbocsátóképesség. Hány mérést végezzünk még?MegoldásA tapasztalati szórás 10%, azaz s = 10% · 500 kérés/sec = 50 kérés/sec.Ha a 95%-os (vagyis 2 szórásnyi sugarú) konfidenciaintervallum szélessége (sugár kétszerese)maximum 40 kérés/sec, akkor a normális eloszlás szórása (σm) maximum 10 kérés/sec lehet.Ez a tapasztalati átlag mint valószínűségi változó szórása a tényleges várható érték körül, értéke:

σm = σ√t≈ s√

t≈ 50 kérés/sec√

t≤ 10 kérés/sec

Innen 5 ≤√t, azaz legalább 25 megfigyelésből kell számolni az átlagot. Persze az egész normális

eloszlásos közelítés csak 100 megfigyelés fölött alkalmazható – de ennyi megfigyelést már el isvégeztünk, tehát nem kell még többet mérni. A jelenlegi kísérlet eredménye alapján:

σm = s√t≈ 50 kérés/sec√

100= 5 kérés/sec

Tehát a 2σm sugarú intervallum szélessége 20 kérés/sec, így kétszeres pontosságot garantálhatunk95% konfidencia mellett. (Avagy 40 kérés/sec széles (négy szórásnyi sugarú) intervallumot isgarantálhatnánk 99,9936% konfidenciával.)

8.2. Kísérlet kiértékelése

Infrastruktúránk méretezését megnehezíti, hogy egy adott feladattípus végrehajtási ideje a körülmé-nyek függvényében ingadozik, például lapozás, memória szemétgyűjtés, memória cache találatok stb.változékonysága folytán. Ezért összeállítottunk egy valós munkaterhelést jól jellemző benchmarkot, ésennek többszöri lefuttatása során a futási időket átlagolva szeretnénk meghatározni a rendszer átlagosteljesítményét.

a) Az első tíz futtatás eredményei: 37 s, 34 s, 35 s, 39 s, 57 s, 41 s, 36 s, 35 s, 61 s, 35 s. Mennyi ezalapján a rövid kísérlet alapján a tapasztalati átlag és tapasztalati szórás?MegoldásVajon mitől lehetnek ilyenek az értékek?A tapasztalati átlag:

m = 37 + 34 + 35 + 39 + 57 + 41 + 36 + 35 + 61 + 3510 = 41 [s]

Tapasztalati átlagtól eltérések és eltérések négyzetei:

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10xi 37 34 35 39 57 41 36 35 61 35 [s]xi −m −4 −7 −6 −2 +16 0 −5 −6 +20 −6 [s](xi −m)2 16 49 36 4 256 0 25 36 400 36 [s2]

Tapasztalati átlagtól eltérések: mennyi ezeknek az összege/átlaga? Miért 0?Tapasztalati átlagtól eltérések négyzete: jól érezhető, hogy a nagy eltérést jobban büntet-jük, összes négyzetes eltérés 858 s2. Innen eltérések négyzetes közepe (átlagos négyzetes eltérésgyöke):

s∗ =

√(x1 − E)2 + ...+ (xt − E)2

t=

√858 s2

10 ≈ 9,26 s

Ez lenne a sokaság szórása, ha ez a 10 adatpont lenne a teljes sokaság. Mivel ez a 10 adatpontcsak a sokaságból vett minta, valójában (t− 1)-et (jelen esetben 9-et) kell a nevezőbe írni, hogyaz úgynevezett korrigált szórást kapjuk:

s =

√(x1 − E)2 + ...+ (xt − E)2

t− 1 =

√858 s2

9 ≈ 9,76 s

46

Page 47: Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév …docs.inf.mit.bme.hu/remo-gyakorlatok/exercise-book... · 2019-11-04 · Rendszermodellezés(BMEVIMIAA00),2019. tavaszifélév

Rendszermodellezés (BMEVIMIAA00), 2020. tavaszi félév

Ez utóbbi már valóban az eredeti valószínűségi változó szórását közelíti (ha nagyon sokszorismételnénk meg ezt a 10 hosszú kísérletsorozatot, a tapasztalati szórás várható értéke a szóráslenne).

b) Nagyobb léptékben futtatva a kísérletet, a benchmark 10 000 futtatása átlagban 44,3 másodper-cig tartott, 11,6 másodperc tapasztalati szórással. Mennyire lehetünk biztosak a kapott eredménypontosságában?MegoldásMivel jóval több mint 100 megfigyelésből állt a kísérlet, a tapasztalati átlag jó közelítéssel normá-lis eloszlással szór a tényleges várható érték körül. Ennek a Gauss-haranggörbének a szórása (azismeretlen valószínűség változó szórását a kísérletből adódó tapasztalati szórással helyettesítve):

σm = σ√t≈ s√

t≈ 11,6 s√

10 000= 0,116 s

Tehát azt mondhatjuk, hogy a benchmark várható végrehajtási ideje 44,3 s± 0,1 s. A normáliseloszlás konfidenciaintervallumairól tanultak alapján 99,7% konfidencia mellett jelenthetjük ki,hogy a végrehajtási idő várható értéke a [44,0 s, 44,6 s] intervallumba esik.

47