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

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

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

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

Folyamatmodellezés (BPMN), adatfolyamhálók

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

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

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

Folyamatmodellezés (BPMN) és alkalmazásai

Modell alapú tesztelés mobil környezetben

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

Modellek ellenőrzése és tesztelése

Java programozási nyelv

Modellellenőrzés a vasút automatikai rendszerek fejlesztésében. XIX. Közlekedésfejlesztési és beruházási konferencia Bükfürdő

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

Szoftver-mérés. Szoftver metrikák. Szoftver mérés

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

Modellek fejlesztése

Modellek fejlesztése

Szoftverminőségbiztosítás

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

Szoftver karbantartási lépések ellenőrzése

Folyamatmodellezés (BPMN), adatfolyamhálók

Részletes szoftver tervek ellenőrzése

A szoftverfejlesztés eszközei

Webprogramozás szakkör

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

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

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

Modellezési alapismeretek

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

Szoftver karbantartás

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

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

Bevezetés az informatikába

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

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

Valószínűségi modellellenőrzés Markov döntési folyamatokkal

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

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

Szoftver értékelés és karbantartás

Modellezési alapismeretek

Programozási nyelvek (ADA)

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

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

BPEL nyelvű üzleti folyamatok modellezése és formális ellenőrzése

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

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

Programfejlesztési Modellek

Modellezési alapismeretek

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

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

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

Fordítás Kódoptimalizálás

Modellező eszközök, kódgenerálás

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

Informatikai rendszertervezés

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

Szolgáltatásintegráció (VIMIM234) tárgy bevezető

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

Programozási technológia

A C# programozási nyelv alapjai

Informatikai rendszertervezés

UML (Unified Modelling Language)

Informatika tanítási módszerek

Szoftvertervezés és -fejlesztés I.

10-es Kurzus. OMT modellek és diagramok OMT metodológia. OMT (Object Modelling Technique)

Algoritmizálás és adatmodellezés tanítása 1. előadás

Java II. I A Java programozási nyelv alapelemei

Komputeralgebra Rendszerek

Java II. I A Java programozási nyelv alapelemei

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Alapszintű formalizmusok

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Programozási alapismeretek. 1. előadás. A problémamegoldás lépései. A programkészítés folyamata. Az algoritmus fogalma. Nyelvi szintek.

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

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

Programozási alapismeretek 1. előadás

Modellezési alapismeretek

Programok értelmezése

Forráskód generálás formális modellek alapján

Részletes tervek ellenőrzése

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

Mintavételes szabályozás mikrovezérlő segítségével

Transzformációk integrált alkalmazása a modellvezérelt szoftverfejlesztésben. Ráth István

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

Szoftver-modellellenőrzés absztrakciós módszerekkel

Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Verifikáció és validáció Általános bevezető

Algoritmizálás, adatmodellezés tanítása 6. előadás

Algoritmusok tervezése

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

Digitális technika VIMIAA01 9. hét

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

8.3. AZ ASIC TESZTELÉSE

Kölcsönhatás diagramok

A programozás alapjai 1 Rekurzió

Struktúra alapú teszttervezési módszerek

BOC Information Technologies Consulting GmbH. Minőségmenedzsment

Átírás:

Folyamatmodellezés Rendszermodellezés 2018. Budapesti Műszaki és Gazdaságtudományi Egyetem Hibatűrő Rendszerek Kutatócsoport Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika 1 és Információs Rendszerek Tanszék 1

Tartalom Ismétlés, kitekintés Folyamatmodellezés célja Folyamatmodellek Vezérlési folyam Megvalósítás 2 2

Tartalom Ismétlés, kitekintés Folyamatmodellezés célja Folyamatmodellek Vezérlési folyam Megvalósítás 3 3

Ismétlés: felépítési vs. viselkedési modellek Felépítési (structural) modellek o Statikus o Rész és egész, összetevők o Kapcsolatok, összeköttetések Viselkedési (behavioral) modellek o Dinamikus o Időbeli lefolyás o Állapot, folyamat o Reakciók a külvilágra Az autóban van kamera és kormányvezérlő A kamera jeleket küld a sáv elhagyásáról (mennyit? mikor?) A sávtartó rendszerben a kamera jeleit fogadva a kormányvezérlő beavatkozik (mikor/hogyan?) Nem fed le mindent, nem válik élesen szét 4 4

Viselkedésmodellek fő kérdései Mit csinál a rendszer? Esemény alapú modell Folyamat alapú modell Most milyen, és hogyan változik a rendszer? Állapot alapú modell 5 5

Folyamat Folyamat: lépések sorozata, melyek sorrendben történő végrehajtása valamilyen célra vezet. 6 6

Tartalom Ismétlés, kitekintés Folyamatmodellezés célja Folyamatmodellek Vezérlési folyam Megvalósítás 7 7

Dokumentáció Implementáció Folyamatmodellezés célja o Végrehajtható modellek o Kódgenerálás Modell szintű ellenőrzés (Verifikáció) o Szimuláció o Monitorozás o Automatizált modellellenőrzés 8 8

Példa: HW rendelés kiszállítása omg.org, BPMN 2.0 by Example 9 9

Példa: HW rendelés kiszállítása Opcionális végrehajtás Összetartozó vezérlési elemek Döntési pontok ( XOR ) Lépések végrehajtási sorrendje Párhuzamos (független) végrehajtás ( AND ) 10 10

Történeti előzmények Mire épül? o Programok vezérlési szerkezete o Ütemezés (pl. GANTT diagramok) o Gyártási/irodai folyamatok modellezése o IDEF-0: 1980-as évek, US AirForce o Logisztikai folyamatok leírása o Üzemeltetés: runbook Közös elemek o Vannak elemi lépések o Köztük függőségek (idő? adat? sorrend?) o Döntési pontok o általános célú folyamatmodellezési nyelvek (pl. BPMN) 11 11

Példa: IDEF-0 Adatfüggőség és végrehajtási logika nem látszik Logikai függőség igen Defense Acquisition University - Systems Engineering Fundamentals. Defense Acquisition University Press, 2001 12 12

flow 13 13

Gantt 14 14

Példa: GANTT Tevékenységek állapota, időzítése, és függőségei 15 15

16 16

17 17

18 18

Mit használ fel? Ötlet rendszer/szoftvertervezésben: o használjunk fel meglévő elemeket o Írjuk le az összetett rendszer működését Alapelem lehet sokféle o webform validáció, email küldés, adatbázisművelet, távoli webszolgáltatás, emberi interakció, SMS küldés, diagram kirajzolás, stb. Mire fordul a vezérlési logika? o Lehet közvetlen kód (C/C++, C#, Java, ) o Lehet egy végrehajtó környezet bemenete Csinálj nekem ilyen folyamatot 19 19

Hol használnak még folyamatmodelleket? Informatikai rendszerek működtetése o ITIL, UK Gov. kezdeményezés Protokoll specifikáció o Összetett rendszer részei hogy működnek együtt o Melyik komponensnek mi a szerepe Végrehajtható folyamatok tervezése o Rendeléskiértékelés, hitelbírálat előkészítése, Adatfeldolgozási/elemzési folyamatok 20 20

Példa: egészségügyi adatok kezelése Több, egymással kommunikáló fél Belső sorrendi függőségek Belső és külső események Feltételezések ez önmagában nem automatizálható http://wiki.directproject.org/abstract+model+examples 21 21

Példa: agilis fejlesztés, mint folyamat Szerepek, termékek A csoportmunka lépései http://www.eclipse.org/epf/ 22 22

Példák Banki folyamatok modellezése o Milyen tevékenységek tudnak le záráskor? o Át tud-e állni a bank a napi többszöri utalásra? Gyártási folyamat modellezése o Optimális gyártásütemezés: átszereljünk vagy újat gyártsunk? o Mi történik a gyárban? o (ld. Szimuláció előadás) Üzletkötési folyamatok modellezése o Hol vannak ismétlődő kommunikációs minták? o Adatfeldolgozás modell alapon 23 23

Példa: adatfeldolgozási folyamat Lépések: beolvasás, adatszűrés, grafikon előállítás, Lépések állapota lefutásonként követhető: előállt már az eredmény? Eszköz: pl. KNIME 24 24

Példa: gyári tesztelés, mint folyamat Létező konfiguráció kiegészítése Új gép gyártása Átszerelés 25 25

Folyamatok tervezésének alapfogalmai Folyamat leíró nyelv o BPMN, jpdl, XPDL, BPEL, UML AD, o Vezérlés, adatáramlás o Adatstruktúrák kapcsolhatóak hozzá o Végrehajtandó lépések definíciója o Időzítések, erőforrások Folyamat minta (template) o Pl. Jegyrendelés folyamat o Verziózás Folyamat példány (instance) o Gönczy László jegyet rendel Lisszabonba 26 26

Tartalom Ismétlés, kitekintés Folyamatmodellezés célja Folyamatmodellek Vezérlési folyam Megvalósítás 27 27

Elemi tevékenység Compile végrehajtás kezdete végrehajtás vége Compile t 28 28

Definíció: Elemi tevékenység Az elemi tevékenység olyan időbeli kiterjedéssel rendelkező tevékenység, amelynek a megkezdésén és befejezésén túl további részleteit nem modellezzük. Compile 29 29

Szekvencia, vezérlésfolyam Compile Link Compile Link t 30 30

Definíció: Szekvencia A Szekvencia tevékenységek végrehajtási sorrendjét definiálja. Compile Link 31 31

Őrfeltételek, elágazás [source modified] Compile Merge (Egyesítés) Decision (Döntés) [source unmodified] Szemantika: o Csak az egyik ág hajtódik végre o Nemdeterminizmus lehetséges Átlapolódó őrfeltételek Vagy egyszerűen őrfeltételek nélkül 32 32

Definíció: Vezérlési elem A vezérlési elem olyan csomópont a folyamatban, mely a folyamatmodell tevékenységei közül választ ki egyet vagy többet végrehajtásra. [source modified] Compile [source unmodified] 33 33

Definíció: Elágazás Az elágazás olyan vezérlési szerkezet, mely áll egy Döntés (Decision) és egy Egyesítés (Merge) vezérlési elemből, ahol a döntési csomópontnak van legalább kettő kimenete, melyek közül a kimenetekhez tartozó őrfeltételek kiértékelése alapján választunk (oda kerül a vezérlési token), a kiválasztott kimenet (döntési ág) tetszőleges számú elemet tartalmazhat, az összes döntési ág az Egyesítés csompontba fut be. Itt az elágazást mindig kizáró döntés (XOR kapu) értelemben használjuk, vagyis egy kiértékelés során csak az elágazás (Decision) egyik kimenete lehet kiválasztva (aktív). Egy elágazás lehet többszörös vagy bináris, a tárgyban alapvetően bináris (két kimenetű) elágazást használunk 34 34

Ciklus Merge Decision Compile [no syntax errors] [syntax errors] Edit 35 35

Definíció: ciklus A ciklus olyan vezérlési szerkezet, mely többszörös végrehajtást definiál. A ciklus áll egy Egyesítés (Merge) és egy azt szekvenciálisan követő Döntés (Decision) vezérlési elemből, ahol a döntési csomópont egyik kimenete (döntési ága) az egyesítés (merge) vezérlési csomópontba fut vissza. Compile [no syntax errors] [syntax errors] Edit 36 36

Fork / Join Compile source1.c Join (Szinkronizáció) Fork (Elágazás) Compile source2.c Szemantika: o Nem meghatározott végrehajtási sorrend o Párhuzamos / átlapolt végrehajtás is lehet Lásd: SzGArch tárgy 37 37

Definíció: párhuzamos végrehajtás A párhuzamos végrehajtás áll egy Párhuzamos elágazás (Fork) és egy Összeillesztés/ Szinkronizáció (Join) vezérlési elemből, ahol az elágazásnak tetszőleges számú kimenete lehet (ágak), az egyes ágak egymással konkurrens módon hajthatóak végre, az összes ág a szinkronizáció csomópontba fut be, a párhuzamos végrehajtás akkor fejeződik be, ha az összes ág végrehajtása befejeződött. Két tevékenység konkurrens, ha végrehajtási sorrendjükre nézve nincs megkötés. Megj: tipikusan kettő párhuzamos ággal fogunk dolgozni. NEM azonos a döntési elágazással! 38 38

Flow begin / flow end Build 39 39

Definíció: folyamat indítása/befejezése Minden folyamat egy indítási (Flow Begin) vezérlési elemmel indul, és egy befejezési (Flow End) elemmel fejeződik be. Az indítási csomópont a csomópont legelső eleme, melynek pontosan egy kimenete van. A befejezési csomópont a folyamat utolsó eleme, melynek pontosan egy bemenete van. Megj: itt nem modellezzük külön, minek a hatására indul el a folyamat. 40 40

Hierarchia Build Compile Link Build Compile Link t 41 41

Hierarchikus folyamatmodell: Definíció: hierarchia Elemi tevékenység helyett tartalmaz folyamatmodellel leírt részmodellt (hierarchikus finomítás) 42 42

Példa: kávéfőzés 1. Töltse meg a BAL tartályt hideg vízzel 2. Tegyen egy bögrét vagy poharat a BAL pohártartóra 3. Tegyen be egy kávépárnát a BAL oldali tartóba 4. Dugja be a kábelt és nyomja meg a BAL OLDAL START/STOP gombot Ha egyszerre két kávét akar főzni, egyszerre kövesse a BAL és JOBB utasításokat 43 43

Példa: kávéfőzés Fill LEFT reservoir Place cup on LEFT side Place pod in LEFT side Plug in and press LEFT side START 44 44

Kávéfőzés Fill LEFT reservoir Place cup on LEFT side Place pod in LEFT side Plug in and press LEFT side START 45 45

Kávéfőzés Fill LEFT reservoir Place cup on LEFT side Place pod in LEFT side Plug in and press LEFT side START 46 46

Kávéfőzés Fill LEFT reservoir Place cup on LEFT side Place pod in LEFT side Plug in Press LEFT side START 47 47

Kávéfőzés [not plugged in] Fill LEFT reservoir Place cup on LEFT side Place pod in LEFT side [plugged in] Plug in Press LEFT side START 48 48

Kávéfőzés [not plugged in] Fill LEFT reservoir Place cup on LEFT side Place pod in LEFT side [plugged in] Plug in Press LEFT side START 49 49

Kávéfőzés [not plugged in] Fill LEFT reservoir Place cup on LEFT side Place pod in LEFT side [plugged in] Plug in Press LEFT side START 50 50

Kávéfőzés [not plugged in] Prepare LEFT side [plugged in] Plug in Press LEFT side START 51 51

Kávéfőzés [not plugged in] Prepare LEFT side [plugged in] Plug in Press LEFT side START 52 52

Kávéfőzés Prepare LEFT side [plugged in] Plug in [not plugged in] Prepare RIGHT side Press LEFT side START Press RIGHT side START 53 53

Kávéfőzés Prepare LEFT side [plugged in] Plug in [not plugged in] Prepare RIGHT side Fill LEFT reservoir Place cup on LEFT side Place pod in LEFT side Press LEFT side START Press RIGHT side START 54 54

Különböző szempontok szerinti modellezés 55 55

Mi történik egy autóval? Assemble Car i Paint Car i Polish Car i 56 56

Mi történik a gyártósoron? Assemble Car 1 Assemble Car n Assemble Cars Paint Cars Polish Cars 57 57

Különböző szempontok szerinti modellezés Assemble Car 1 Assemble Car n Assemble Cars Paint Cars Polish Cars Assemble Car i Paint Car i Polish Car i 58 58

Együttes nézet Assemble Car 1 Assemble Car 2 Assemble Car n Paint Car 1 Paint Car 2 Paint Car n Polish Car 1 Polish Car 2 Polish Car n Mindent tartalmaz, de nem túl praktikus 59 59

Együttes nézet Assemble Car 1 Assemble Car 2 Assemble Car n Paint Car 1 Ez nem a folyamat logikájából adódó függőség (erőforrás, fizikai hely, stb. konfiguráció) Paint Car 2 Paint Car n Ne a folyamat logikájában ábrázoljuk (ld. Későbbi előadások: erőforrásfoglalás) Polish Car 1 Polish Car 2 Polish Car n Mindent tartalmaz, de nem túl praktikus 60 60

Együttes nézet A 2D fork-join háló nem túl praktikus o Aspektusokra (autó és gép életútja) külön folyamat Sok fork-join tömörebben? PERT chart o Program Evaluation and Review Technique Végrehajtási idő analízisére való, ld. BSz 2 o (Ez viszont elágazást nem tud) 1 2 3 3 4 3 61 61

ÜZLETI FOLYAMATOK VÉGREHAJTÁSA 62 62

Folyamatok szemantikája Modellezés szempontjából Az elvárt működés 63 63

Folyamat végrehajtása Tokenáramlás A folyamat állapota 64 64

Elemi tevékenység állapotai T végrehajtás kezdete végrehajtás vége T végrehajtás előtt T végrehajtás alatt T befejezve t 65 65

Elemi tevékenység állapotai T végrehajtás előtt T végrehajtás alatt T befejezve végrehajtás kezdete végrehajtás vége T végrehajtás előtt T végrehajtás alatt T befejezve t 66 66

Folyamat állapotai T 1 T 2 T 1 végrehajtás előtt T 1 végrehajtás alatt T 1 befejezve T 2 végrehajtás előtt T 2 végrehajtás alatt T 2 befejezve t 67 67

Háttér: matematikai modell Allen-féle intervallum logika (1983) o Pl. tesztelésnél használják, 13 (6 + 1 + 6) eset James F. Allen: Maintaining knowledge about temporal intervals. In: Communications of the ACM. 26 November 1983. ACM Press. pp. 832 843, ISSN 0001-0782 68 68

Háttér: matematikai modell Allen-féle intervallum logika (1983) o Pl. tesztelésnél használják, 13 (6 + 1 + 6) eset X EQUALS y X BEFORE y X MEETS y X OVERLAPS y X STARTS y X FINISHES y James F. Allen: Maintaining knowledge about temporal intervals. In: Communications of the ACM. 26 November 1983. ACM Press. pp. 832 843, ISSN 0001-0782 69 69 X DURING y n intervallum: 1,1,13,409, 23917 eset

Mit lehet ellenőrizni? Pl. a végrehajtás nem folyamat alapon történt o Megfelelt-e az elvárásoknak (sorrend, függetlenség)? Mi lehetett a folyamat a rendszer mögött? o Workflow mining Pl. a futtatókörnyezet megengedő o Lépés kihagyható o Ilyenkor is teljesülnek az elvárások? Eszköz: formális módszerek o Logika, Petri-hálók, modellellenőrzés, stb. 70 70

Tartalom Ismétlés, kitekintés Folyamatmodellezés célja Folyamatmodellek Vezérlési folyam Megvalósítás 71 71

Vezérlési folyam <statement1> <statement2> statement1 statement2 72 72

if (<expression>) <statement> Vezérlési folyam [expression fails] [expression holds] statement 73 73

Vezérlési folyam if (<expression>) <statement1> else <statement2> [expression holds] statement1 [expression fails] statement2 74 74

while (<expression>) <statement> Vezérlési folyam [expression fails] [expression holds] statement 75 75

do <statement> while (<expression>) Vezérlési folyam statement [expression fails] 76 76

Vezérlési folyam - példa while (a!= b) { if (a > b) { a = a - b; } else { b = b - a; } } return a; 77 77

Vezérlési folyam - példa while (a!= b) { if (a > b) { a = a b; } else { b = b a; } } return a; 78 78

Vezérlési folyam - példa while (a!= b) { if (a > b) { a = a b; } else { b = b a; } } return a 79 79

Vezérlési folyam - példa [a!= b] if (a > b) { a = a b; } else { b = b a; } [a == b] return a 80 80

Vezérlési folyam - példa [a!= b] [a == b] [a > b] [a <= b] a = a b b = b a return a 81 81

Vezérlési folyam - komplexitás [a!= b] [a == b] [a > b] [a <= b] Ciklomatikus komplexitás M = E N + 2 a = a b b = b a return a 82 82

Vezérlési folyam - rekurzió int fact(int n) { return (n == 0)? 1 : n * fact(n - 1); } 83 83

Vezérlési folyam - rekurzió int fact(int n) { int tmp1; if (n == 0) { tmp1 = 1; } else { int tmp2 = fact(n - 1); tmp1 = n * tmp2; } return tmp1; } 84 84

Vezérlési folyam - rekurzió fact(n) [n == 0] [n!= 0] tmp1 = 1 tmp2 = fact(n - 1) tmp1 = n * tmp2 return tmp1 85 85

Példa: n alatt a k int choose(int n, int k) { } if (k < 0 k > n) { return 0; } else if (k == 0 && n == 0) { return 1; } else { } int x = spawn choose(n 1, k); int y = spawn choose(n 1, k - 1); sync; return x + y; 86 86 n k = n 1 k 0 0 =1 + n 1 k 1

Példa: n alatt a k choose(n, k) [k < 0 k > n] return 0 [k == 0 n == 0] [else] return 1 x = choose(n 1, k) return x + y y = choose(n 1, k - 1) 87 87

Jólstrukturált folyamatok Vezérlési blokkokból építkezünk o Egy bemenet, egy kimenet, közte jól strukturált blokk o Szekvencia, decision-merge és fork-join blokk, ciklus o (üres vezérlési szakasz) Analógia: strukturált programozás (goto helyett vezérlési szerkezetek) Nem jólstrukturált folyamatra példa: A B C 88 88

Jólstrukturált folyamatok Bizonyos formalizmusok kikényszerítik o pl. BPEL (üzleti folyamatok webszolgáltatások fölött) o Pl. Struktogram (Nassi-Shneiderman) true while a b do a > b false a := a - b b := b - a return a 89 89