ABSZTRAKT TERVEZÉSI MODELL Németh Gábor
2001Németh Gábor: Számítógép architektúrák 2 ABSZTRAKT SPECIFIKÁCIÓ Az ABSZTRAKT (ALGEBRAI) SPECIFIKÁCIÓs módszernél a rendszer viselkedését egy esemény alapú absztrakt modellel specifikáljuk. A különféle műveletkombinációk között általánosított ekvivalencia relációkat adunk meg. Egy számítógéprendszer által végzett információ feldolgozást a rendszer bemenetén és kimenetén átfolyó adatáramlásként értelmezzük.
2001Németh Gábor: Számítógép architektúrák 3 ABSZTRAKT SPECIFIKÁCIÓ - 2 Ezen absztrakt modell szerint két alapelemet kell definiálni: a kívánt műveletet biztosító (process) és a rendszernek a környezetéhez való csatlakozását biztosító (port) elemet. A PROCESS egy specifikációs egységnek tekintett, valamilyen adatfeldolgozást végző entitás. A PORT egy process része, és az illető folyamatnak a környezetével való kommunikációját biztosítja.
2001Németh Gábor: Számítógép architektúrák 4 ABSZTRAKT SPECIFIKÁCIÓ - 3 KÖRNYEZET PROCESS PORT A process és a port tulajdonságait ab- sztrakt módon írjuk le, csak a kívülről látható (kommuni- kációs) viselkedést specifikáljuk. A specifikáció nem tartalmazza, hogyan valósítjuk meg ezt a viselkedést. A logikai és a fizikai megoldás szétválasztásával egy entitás a rendszer többi részének módosítása nélkül kicserélhető!
2001Németh Gábor: Számítógép architektúrák 5 ABSZTRAKT SPECIFIKÁCIÓ - 4 FELÜLRŐL-LEFELÉ mozgó tervezési eljárást alkalmazunk LÉPÉSENKÉNTI FINOMÍTÁSsal. A megoldandó problémát először egyetlen rendszerként (processként) specifikáljuk. A következő lépés(ek)ben a rendszert egymással (portokon keresztül) kommunikáló alrendszerekre bontjuk, és í.t. Minden részletezési szinten a korlátozásokat és a tulajdonságokat örököljük a felsőbb szintről és finomításokkal egészítjük ki.
2001Németh Gábor: Számítógép architektúrák 6 ABSZTRAKT SPECIFIKÁCIÓ - 5 A P1 P2 P3 Egy process portjai az illető process környezetének absztrakt képét jelentik. A P1 P2 P3 D E P2 A P3 B C P1
2001Németh Gábor: Számítógép architektúrák 7 ABSZTRAKT SPECIFIKÁCIÓ - 6 PORT SPECIFIKÁCIÓJA: A porton felléphető egymásrahatás típusok felsorolása. A végrehajtott egymásrahatások sorrendezésére és paramétereire vonatkozó korlátozások megadása. Szerep (ez a port, vagy a hozzá csatlakozó másik kezdeményezi az egymásrahatást). Kicserélt paraméterek típusának meghatározása. Ez a port, vagy a hozzá csatlakozó másik határozza meg a kicserélt paraméter értékét?
2001Németh Gábor: Számítógép architektúrák 8 ABSZTRAKT SPECIFIKÁCIÓ - 7 A rendszert a részrendszerek megfelelő portjainak összeköttésével írjuk le. Két port összekötését a két port közötti általánosított ekvivalencia relációval határozzuk meg. A két összekötött port szerepeinek az egymásrahatás kezdeményezésére és a paraméterek típusainak és értékeinek meghatározására vonatkozóan egymás komplemenseinek kell lenniük. Ezt formálisan ellenőrizzük!
2001Németh Gábor: Számítógép architektúrák 9 ABSZTRAKT SPECIFIKÁCIÓ - 8 PROCESS SPECIFIKÁCIÓJA: Portjainak felsorolása (mert azok tulajdonságait örökli). A process különböző portjain fellépő egymásrahatások közötti relációk meghatározása. A processnek csak a kívülről látható viselkedését specifikáljuk.
2001Németh Gábor: Számítógép architektúrák 10 ABSZTRAKT SPECIFIKÁCIÓ - 9 PÉLDA:Tervezzünk információs rendszert, melyben véges számú előfizető kérdéseire a rendszer válaszol. Egy felhasználót egy user process képvisel. A válaszokat egy server process szolgáltatja. A user és a server együttműködéséhez a request és a response egymásrahatásokat definiáljuk.
2001Németh Gábor: Számítógép architektúrák 11 ABSZTRAKT SPECIFIKÁCIÓ - 10 ELŐFELTEVÉSEK (a legmagasabb absztrakciós szinten): 1.A rendszerben nem lép fel meghibásodás. 2.A felhasználók nem befolyásolják egymás működését. 3.Egy meghatározott kérdésre adott válasz kizárólag az illető kérdés függénye.
2001Németh Gábor: Számítógép architektúrák 12 ABSZTRAKT SPECIFIKÁCIÓ - 11 SPECIFIKÁCIÓK (a legmagasabb absztrakciós szinten): A user és server processek megfelelő portjaikon keresztül kommunikálnak egymással. Ezek vagy azonosak, vagy kompatibilisek kell legyenek (önkényes tervezői döntés). port access is operationrequest (X: question); response (Y: answer); constraint (access/request) i (access/response) i (access/request) i+1 end access.
2001Németh Gábor: Számítógép architektúrák 13 ABSZTRAKT SPECIFIKÁCIÓ - 12 process user is service: access end user. process server is users: array [user_identifier] of access; constraint for u in user_identifier holds (users[u]/response) i.Y = ƒ((users[u]/request) i.X end server.
2001Németh Gábor: Számítógép architektúrák 14 ABSZTRAKT SPECIFIKÁCIÓ - 13 Egy rendszert alkotó processeinek és azok összeköttetéseinek felsorolásával specifikálunk. process system is S: server; U: array [user_identifier] of user; connection for u in 1..N: U[u].service = S.users[u] end system.
2001Németh Gábor: Számítógép architektúrák 15 ABSZTRAKT SPECIFIKÁCIÓ - 14 A lépésenkénti finomítás illusztrálására funkcionálisan particionáljuk a server processt. 1 N multiplexer core server örökölt portok új portok
2001Németh Gábor: Számítógép architektúrák 16 ABSZTRAKT SPECIFIKÁCIÓ - 15 process core is user: access; constraint (user/response) i.Y = ƒ((user/request) i.X) end core. process multiplexer is single: array[user_identifier] of access; multiplexed: access; constraint for s in user_identifier holds i i’ ((single[s]/request) i = (multiplexed/request) i’ and (single[s]/response) i = (multiplexed/response) i’ ) end multiplexer. önkényes tervezői döntés önkényes tervezői döntés (IMPLE- MENTÁ- CIÓ!)
2001Németh Gábor: Számítógép architektúrák 17 ABSZTRAKT SPECIFIKÁCIÓ - 16 process server is M: multiplexer; C: core; connectionM.multiplexed = C.user; u in user_identifier: users[u] is M.single[u] end server. csak virtuális összeköttetés (ÖRÖKLŐDÉS!) Az absztrakt tervezésnél nincs megvalósítási modellünk, így a lépésenkénti finomítás legutolsó lépésében egy megvalósítási transzformáció szükséges.
2001Németh Gábor: Számítógép architektúrák 18 ABSZTRAKT SPECIFIKÁCIÓ - 17 Az orthogonális tulajdonságokat külön-külön kell specifikálni, mivel ebben az esetben teljesítésük egymástól függetlenül bizonyítható. Ez az absztrakt tervezés legnagyobb előnye, mert elkerülhető az állapot-robbanás. (Sajnos nincs közvetlen módszer az orthogonális tulajdonságok meghatározására, csak ellenőrizhető a megadott tulajdonságok orthogonalitása.)
2001Németh Gábor: Számítógép architektúrák 19 ABSZTRAKT SPECIFIKÁCIÓ - 18 A lépésenkénti finomítás konkrét lépéseit jelentősen befolyásolja a particionálás módja. A következő szempontok szerint kell particionálni: Funkcionálisan (ld. előző példa) (ez a rendszer működése szempontjából érthető). Diagnosztika (erről korábban volt szó) (meghatározza a processek között minimálisan szükséges összeköttetéseket és egymásrahatásokat). Interfész specifikáció (maximalizálja a rendszer értékét, miközben minimalizálja költségét). Kölcsönösen ellentmondanak egymásnak!
2001Németh Gábor: Számítógép architektúrák 20 ABSZTRAKT SPECIFIKÁCIÓ - 19 INTERFÉSZ SPECIFIKÁCIÓ: KONZISZTENS A process hiányzó információi a meglévőkből megjósolhatóak. Elnevezési, paraméterátadási stb. konvenciók. Minden fejlesztő rendszer rendelkezik vele, sajnos az egyes eszközök konvenciói eltérőek.
2001Németh Gábor: Számítógép architektúrák 21 ABSZTRAKT SPECIFIKÁCIÓ - 20 ALAPVETŐ A szükségtelen tulajdonságokat el kell hagyni. Ugyanazt a funkciót nem szabad két különböző végrehajtási történettel felajánlani. A követelmény nyilvánvalónak tűnik, de egy tulajdonság szükséges voltát a tervező által elképzelt felhasználók megjósolt igényeire alapozzuk!
2001Németh Gábor: Számítógép architektúrák 22 ABSZTRAKT SPECIFIKÁCIÓ - 21 ÁLTALÁNOS A processt használni kell tudni az eredeti tervezési célokon túlmenő feladatokra is. Nem a problémát, hanem a probléma osztályt kívánjuk megoldani!
2001Németh Gábor: Számítógép architektúrák 23 ABSZTRAKT SPECIFIKÁCIÓ - 22 MINIMÁLIS A független tulajdonságokat különálló egymásrahatási típusokba kell tenni. A tulajdonságok függetlenségét a kérdéses szolgáltatás felhasználójának szemszögéből kell értelmezni! Ez nyilvánvalóan tervező-függő (milyen felhasználói csoportot vesz figyelembe).
2001Németh Gábor: Számítógép architektúrák 24 ABSZTRAKT SPECIFIKÁCIÓ - 23 ÁTTETSZŐ Az interfész rejtse el a jövőben megváltozható valamennyi megvalósítási tervezői döntést. Az interfész maga ne változzon, ha az elrejtett megvalósítási döntés megváltozik. Készítsük el a megvalósítás lehetséges változásainak jegyzékét (ún. titkok).
2001Németh Gábor: Számítógép architektúrák 25 ABSZTRAKT SPECIFIKÁCIÓ - 24 A rendszert particionáljuk modulokra úgy, hogy minden modul egyetlen titkot tartalmazzon. (Csak egy modult kell kicserélni, ha egy tervezői döntés megváltozik.) A modul interfészét tervezzük meg úgy, hogy ne változzon meg a titok módosításakor. A tervező nem szükségképpen tudja előre, hogy mi fog a termék élettartama alatt megváltozni!
2001Németh Gábor: Számítógép architektúrák 26 ABSZTRAKT SPECIFIKÁCIÓ - 25 Funkcionális particionálás RENDSZER Diagnosztikai particionálás Titokelrejtési particionálás Végső particionálás DE EKKOR MÁR NEM IGAZ, HOGY EGYETLEN MODULT KELL MEGVÁLTOZTATNI, HA EGY TITOK MEGVÁLTOZIK!
2001Németh Gábor: Számítógép architektúrák 27 ABSZTRAKT SPECIFIKÁCIÓ - 26 PÉLDA: stack modul BEMENET EGYMÁSRA- HATÁS TÍPUSKIMENETKIVÉTEL pushs_ integer túlcsordulás popsg_ integerüres Megsérti a minimalitás követel- ményét (a stack tartalmának felfelé mozgatását kombinálja a stack legfelső elemének vizsgálatával).
2001Németh Gábor: Számítógép architektúrák 28 ABSZTRAKT SPECIFIKÁCIÓ - 27 ”Javított” stack modul: (két külön egymásrahatásba tesszük a stack felfelé tolását és legfelső elemének vizsgálatát) BEMENET EGYMÁSRA- HATÁS TÍPUSKIMENETKIVÉTEL pushs_ integer túlcsordulás pop’s_ üres integertop üresg_ DE: a szokásos stack használat hosszabb lesz!
2001Németh Gábor: Számítógép architektúrák 29 ABSZTRAKT SPECIFIKÁCIÓ - 28 PÉLDA: gráf építő program készítése Intuitív úton határozzuk meg a szükséges funkciókat. BEMENET EGYMÁSRA- HATÁS TÍPUSKIMENETKIVÉTEL inits_ N: integer maxnodes... INICIALIZÁLÁS:megadjuk a gráf csomópontjainak megengedett maximális számát. A gráf mátrix formában tárolható, könnyen megvalósítható. Megsérti az ÁTTETSZŐség követelményét.
2001Németh Gábor: Számítógép architektúrák 30 ABSZTRAKT SPECIFIKÁCIÓ - 29 BEMENET EGYMÁSRA- HATÁS TÍPUSKIMENETKIVÉTEL inits_ N: integer maxnodes hasznos, de nem szükséges (megsérti az ALAPVETŐség követelményt)! numnodes N: integer... LEHETSÉGES CSOMÓPONTOK SZÁMA: g_
2001Németh Gábor: Számítógép architektúrák 31 ABSZTRAKT SPECIFIKÁCIÓ - 30 add_edges_ s: integer d: integer l: real node_number length arc_eqdst GRÁF BŐVÍTÉSE: csomópontot és élt csak együtt adhatunk meg. Megsérti az ÁLTALÁNOSság követelményét (nem lehet külön él és csomópont felsorolást adni). BEMENET EGYMÁSRA- HATÁS TÍPUSKIMENETKIVÉTEL inits_ N: integer maxnodes numnodes N: integer... g_
2001Németh Gábor: Számítógép architektúrák 32 ABSZTRAKT SPECIFIKÁCIÓ - 31 A definiált modul nem teszi lehetővé csomópontok és élek törlését. Ez új egymásrahatás bevezetésével [s_del_edge(s, d, l)] lehetséges. Ez hasznos (teljesítenénk az ÁLTALÁNOSság követelményét), de nem szükséges; bevezetése sérti az ALAPVETŐség követelményét (ugyanez a cél elérhető az init és azután egy sorozat add_edge használatával is). Hiánya viszont sérti az ÁLTALÁNOSság követelményét.
2001Németh Gábor: Számítógép architektúrák 33 ABSZTRAKT SPECIFIKÁCIÓ - 32 A rendszer tulajdonságait orthogonálisan kell specifikálni. Egymástól függetlenül bizonyíthatók (nincs állapot- robbanás). Nincs közvetlen módszerünk a specifikációk orthogonális felvételére. Viszonylag könnyű formálisan bizonyítani a specifikációk teljesítését. Absztrakt volta miatt nehezen értelmezhető.
2001Németh Gábor: Számítógép architektúrák 34 ABSZTRAKT SPECIFIKÁCIÓ - 33 PÉLDA: gyűrű specifikálása. inportinport node N[u] node N[mod N (u)+1] inportinport outportoutport outout link L[u] inin outportoutport ab Csak egyirányú átvitel minden csomópontnak van egy bemenő és egy kimenő portja. ettől gyűrű
2001Németh Gábor: Számítógép architektúrák 35 ABSZTRAKT SPECIFIKÁCIÓ - 34 inportinport node N[u] node N[mod N (u)+1] inportinport outportoutport outout link L[u] inin outportoutport ab process system is N: array [identifier] of node; L: array [identifier] of link; connection for u in 1..N: N[u].outport = L[u].in; N[mod N (u) + 1].inport = L[u].out end system.
2001Németh Gábor: Számítógép architektúrák 36 ABSZTRAKT SPECIFIKÁCIÓ - 35 inportinport node N[u] node N[mod N (u)+1] inportinport outportoutport outout link L[u] inin outportoutport ab port input is operation receive (a b); constraint [(a A) (b B)] end input. port output is operation send (a b); constraint [(a A) (b B)] end output.
2001Németh Gábor: Számítógép architektúrák 37 ABSZTRAKT SPECIFIKÁCIÓ - 36 inportinport node N[u] node N[mod N (u)+1] inportinport outportoutport outout link L[u] inin outportoutport ab process node is inport: input; outport: output; constraint (outport/a) i (outport/a) i+1 ; ƒ 1 (inport/b) i (outport/a) i end node.
2001Németh Gábor: Számítógép architektúrák 38 ABSZTRAKT SPECIFIKÁCIÓ - 37 process node is inport: input; outport: output; constraint (outport/a) i (outport/a) i+1 ; ƒ 1 (inport/b) i (outport/a) i end node. A node process feldolgozza a vett üzeneteket és az eredményeket ugyanabban a sorrendben adja ki, ahogy vette a megfelelő bemeneteket. ”nincs kimenet” helyett 0 hosszúságú kimenő üzenet. ez írja le a feldolgozást.
2001Németh Gábor: Számítógép architektúrák 39 ABSZTRAKT SPECIFIKÁCIÓ - 38 A link process írja le az üzenetátvitelt két feldolgozó csomópont között. Intuitív vizsgálat eredményeként a hibátlan átvitelt öt orthogonális követelménnyel specifikáljuk. process link is in: input; out: output; constraint /*R1: megőrzi az üzenetek sorrendjét*/ [(a 1, a 2 A), (b 1, b 2 B)]: [(a 1 b 1 ) (a 2 b 2 )] {[(a 1 a 2 ) (b 1 b 2 )] [(a 1 a 2 ) (b 1 b 2 )] [(a 2 a 1 ) (b 2 b 1 )]}; Nehéz áttekinteni és értelmezni.
2001Németh Gábor: Számítógép architektúrák 40 ABSZTRAKT SPECIFIKÁCIÓ - 39 /*R2: nem veszik el üzenet az átvitel során*/ (a A) (b B): a b; /*R3: nem keletkezik üzenet a linkben*/ (b B) (a A): a b; /*R4: nincs üzenet duplikálás*/ [(a A), (b 1, b 2 B)]: [(a b 1 ) (a b 2 )] (b 1 b 2 ); /*R5: az üzenet tartalmát megőrzi*/ [(a A), (b B)]: ƒ 2 (in/a) i (out/b) i end link. kódátalakítás lehetséges!
2001Németh Gábor: Számítógép architektúrák 41 ABSZTRAKT SPECIFIKÁCIÓ - 40 Formálisan bizonyítsuk be például, hogy az üzenet tartal- ma nem változik meg, miközben körbeutazik a gyűrűn. inportinport node N[u] node N[mod N (u)+1] inportinport outportoutport outout link L[u] inin outportoutport ab pqrs
2001Németh Gábor: Számítógép architektúrák 42 ABSZTRAKT SPECIFIKÁCIÓ N[u].inport: p B N[u].outport: q A úgy, hogy p q process node is inport: input; outport: output; constraint (outport/a) i (outport/a) i+1 ; ƒ 1 (inport/b) i (outport/a) i end node. ƒ 1 (p) q 2. N[mod N (u)+1].inport: r B N[mod N (u)+1].outport: s A úgy, hogy r s ƒ 1 (r) s
2001Németh Gábor: Számítógép architektúrák 43 ABSZTRAKT SPECIFIKÁCIÓ - 42 inportinport node N[u] node N[mod N (u)+1] inportinport outportoutport outout link L[u] inin outportoutport ab ƒ 1 (r) s p qrs 3. ƒ 2 (q) r ƒ 2 (q) r process link is ……………. constraint /*R5: az üz. tart. megőrzi*/ [(a A), (b B)]: ƒ 2 (in/a) i (out/b) i 4. p s ( tranzitív). ƒ 1 (p) q