MscMVPKidolgozas

A VIK Wikiből
A lap korábbi változatát látod, amilyen Unknown user (vitalap) 2012. október 21., 21:43-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Infoszak|MscMVPKidolgozas}} * Modellezés: a bonyolult valóság egy egyszerűsített nézete ** Tervrajz: A terv alapján építhetünk ** Recept: Ut…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

Ez az oldal a korábbi SCH wikiről lett áthozva.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.


  • Modellezés: a bonyolult valóság egy egyszerűsített nézete
    • Tervrajz: A terv alapján építhetünk
    • Recept: Utasításhalmaz
    • Makett: Kicsiben
  • Szakterület specifikus nyelv
    • Absztrakt szintaxis: A nyelv struktúrája+kényszerek
    • Konkrét szintaxis: Megjelenítés
    • Szemantika: A nyelv jelentése
  • Metamodellezés: Egy nyelv absztrakt szintaxisának megadása formálisan
    • MOF (Meta-Object Facility): 4 szintű (Objektumok, modellező, metamodellező (UML), MOF)
      • Zárt: Önmagához hű
      • Szigorú: Minden elem szoros kapcsolatban van a fölötte levő szint elemével
    • XMI: Modellek sorosítása (MOF->XML)
  • Modell elemek
    • Adattípusok: Primitívek, felhasználó által megadottak
    • Osztályok
    • Attribútumok
      • Modellelemekre írt címkeként: Kiforratlanabb matematikai háttér
      • Speciális modellelemként (vonallal csatlakozik): Átláthatatlan, ha sok van belőle
    • Asszociáció
      • Multiplicitás
      • Sorrendezés, egyediség
      • Asszociációs osztállyal lehet attribútumokat adni neki
    • Kompozíció
    • Általánosítás
      • Absztrakt és konkrét osztályok
      • Többszörös örökéls
        • Névütközés: Azonos nevű attribútum vagy metódus
        • Ismételt öröklés: A két ős ugyanabból származik
  • Modell megfelelés: Jól formált, ha a metamodell elemeit használja és kielégíti annak kényszereit
  • OPRR (Object-Property-Relationship-Role Model):
    • Nagyjából mint az ER, de van Role, ami az objektumot kapcsolja a kapcsolathoz, és ezt nevesíti (pl. állapotokat tranzíciók kötik össze, akkor lesz egy forrás és egy cél szerepű tranzíció)
  • VMTS (Visual Modelling and Transformation System):
    • n szintű
    • Szintek között azonos a példányosítási művelet
    • Atom típus
      • Név, attribútum, összetett típus(~struct)
    • Mély példányosítás: Egy modellezési hierarchiában alkalmazott példányosítást mély példányosításnak (deep instantiation) nevezzük, ha az n. szinten modellezett információ elérhető az n+x. (x > 1) szinten
      • Attribútumoknál megadható, hogy a következő szinten pédányosodjon-e
  • XMF (eXecutable Metamodelling Facility)
    • Meg lehet adni a konkrét szintaxist és a szemantikát is => végrehajtható a nyelv
  • EBNF (Enhanced Backus-Naur Form):
    • Szöveges
    • Profukciós szabályokból áll
    • Boolean = ”True” | ”False”
    • Konkatenáció: ,
    • Opcionális: []
    • Ismétlés: {}
    • Pl.: international-number = [(”00” | ”+”), ”36”], area-code, localnumber;
  • Szemantika
    • Mit jelentenek a jelölések
    • Megadása
      • Informális
      • Operációs: Hogyan hajtjuk végre
      • Denotációs: Matematikai objektumokra képezzük és azok tulajdonságait vizsgáljuk
      • Axiomatikus: Elő-, és utófeltételeket ír le, nem a teljes szemantikát írja le
  • OCL (Object Constraint Language): Megszorítások a metamodellen, amiket a példányoknak ki kell elégíteniük
    • Deklaratív
    • Nincs mellékhatás
    • Formális szintaxis és szemantika
    • Kontextus

* Az az entitás, amire a kényszert definiáljuk * Típusa: Az entitás típusa * Példány: A konkrét példány, amire fut a kiértékelés. self kulcsszóval érhető el

    • Invariáns: Minden pillanatban fennáll, osztályra definiáljuk. inv kulcsszó
    • Elő-, és utófeltétel: Művelethez definiáljuk, a futás előtti és az utáni időpillanatban igaz. pre és post kulcsszavak.
      • attrnév@pre-vel lehet hivatkozni az attribútum művelet előtti értékére
    • Kezdeti érték: Attribútumra vagy asszociációra vehető fel, létrehozáskor ez lesz az értéke. init kulcsszó
    • Származtatott érték: Más elemekből származtatott. derive kulcsszó
    • Típusok: String, Integer, Boolean, Real, Collection, Set, Bag, Sequence + felhasználó által készítettek
    • Örökléssel a kényszerek is öröklődnek
      • Invariánst lehet szigorítani
      • Előfeltételt lehet enyhíteni
      • Utófeltételt lehet szigorítani
    • Elágazás: if a then b else c endif
    • Enumerációk: EnumerációTípus::Kifejezés
    • OclIsKindOf(objektum): Igaz, ha az objektum feljebb van az öröklési fában, mint self.
    • OclIsTypeOf(objektum): Igaz, ha az objektum lejjebb van az öröklési fában, mint self.
    • oclAsType(): Castolás
    • Navigáció asszicációkon keresztül
      • Ha 0..1, akkor mutató
      • Ha >1, akkor kollekció
    • Műveletek kollekciókon
      • size()
      • select(kif)/reject(kif): Azokat választja, ki amikre igaz/hamis a kifejezés
      • including(obj)/excluding(obj): Hozzáadja/elhagyja az elemet a kollekcióból
      • count(obj): Megszámolja, hogy az objektum hányszor szerepel
      • isEmpty()/notEmpty
      • forAll(kif): Igaz, ha minden elemre igaz
    • Lekérdező műveletekre megadhatjuk, hogy pontosan mit is adjon vissza. bodí kulcsszó
  • Konkrét szintaxis megadási módszerek
    • Metamodellben vannak a megjelenítést megadó attribútumok
    • Kódolás
    • Modellben írjuk le
  • Tervezési minták vannak a szakterületi nyelvekben is
  • Generatív programozás: Írunk egyszer egy alapot, és abból generáljuk a kész programot
    • Az alapot elég egyszer megírni, és utána alacsony befektetéssel tudunk hasonló szoftvereket készíteni
  • Funkciómodellezés: Termékcsalád elemei közötti különbségek leírására
    • Funkciók, közöttük élek
    • Teli kör: Kötelező elem
    • Üres kör: Opcionális
    • Kitöltött ív: 1..* kapcsolat
    • Üres ív: Alternatív
  • Szimuláció: A rendszer a specifikációnak megfelelően működik? De a megépítése drága, ezért szimuláljuk
    • Rendszerspecifikációs hierarchia
      • Megfigyelési keret: Bemenetek és kimenetek
      • I/O viselkedés: Bemeneti és kimeneti trajektóriák
      • I/O függvény: Tetszőleges bemenetre kiszámolható a kimenet
      • Állapotátmenet: Bemenetre létrejött állapotváltozásokat is követni tudjuk
      • Komponensek: Fehér doboz, ismertek a részek és a közöttük levő kapcsolatok
    • DEVS rendszer megadása:
      • X: bemeneti értékek halmaza
      • S: állapotok halmaza
      • Y: kimeneti események halmaza
      • δint: S → S a belső állapotátmeneti függvény
      • δext: QxX → S a külső állapotátmeneti függvény, ahol
      • Q a teljes állapothalmaz
      • e az utolsó állapotváltás óta eltelt idő
      • λ: S → Y a kimeneti függvény
      • ta: S → R+
  • Modelltranszformáció
    • Imperatív/deklaratív
    • Osztályozás:
      • Endogén/exogén: Azonos/különböző cél és forrásnyelv
      • Horizontális/vertikális: Azonos/különböző absztakciós szint
  • Gráftranszformáció: Modellek legtöbbször gráfokkal vannak leírva, így a transzformációkkal a modellek változását írhatjuk le
    • LHS,RHS: Left/Right Hand Side, a transzformáció a bal oldali gráfból a jobb oldalit csinálja
    • L-R: törlés, R-L: létrehozás
    • Működés
      • LHS-re illeszkedő minta keresése
      • L-R törlése
      • R-L másolatának hozzáadása
    • Problémák
      • Lógó élek
      • Konfliktusok: Vagy egyik vagy másik szabályt tudjuk csak alkalmazni
      • Okozati összefüggés: Ha felcseréljük őket, akkor megváltozik az eredmény
    • További lehetőségek
      • Csomópontok csoportos kezelése (pl. vmennyi Field egyben)
      • Negatív feltételek (pl. nincs pacman a szellem mellett)
      • Prioritás: A magasabb prioritású szabály lesz mindig alkalmazva, ha konfliktusban lenne egy másikkal
    • Funkcionális követelmények
      • Use Case leírás
      • Konfliktusban lehetnek műveletek, pl mindkettő ugyanazt az élt akarja törölni
      • Kritikus pár analízis: Megkeresni a lehetséges konfliktusokat és okozati összefüggéseket
    • TGG (Triple Graph Grammars): left, corr, right oldalakkal. A corr az elemek megfelelőségét adja meg, így össze lesznek kapcsolva
      • Absztrakt szintaxis -> Szemantikát transzformál
    • Operációs szemantika: A gráfban szerepeltessük a futásidejű állapotot is
  • Metamodell alapú transzformáció
    • Szabályok: Modellben vannak megadva
      • Illesztésnél a szabály modell egy példányát keressük az LHS-ben
      • Struktúra, metatípus információ, kényszerek, műveletek
    • Vezérlés
      • Nem determinisztikus: Nincs explicit vezérlés
      • Negatív alkalmazási kritérium: Adott helyzetben megakadályozza a szabály futását
      • Nyelvként
        • Szabályok sorrendezése
        • Paraméterátadás
        • Adatfolyam jelleg: Minden szabály a végrehajtáskor az előzőnek az eredményén dolgozik
        • Elágazás
        • Hierarhikus
        • Iteráció, rekurzió
        • Fork, join
        • Kimerítő szabályalkalmazás: Mindaddig hajtódik végre a szabály újra és újra, amíg van illeszthető LHS
  • Validált modelltranszformáció
    • Online, offline validáció
    • Design by Contract: A kommunikációt definiálja
    • Validáció
    • Elő-, és utófeltételek
    • Validáció: S szabály előtt biztos, hogy igaz, különben a szabály sikertelen
    • Megőrzés: P megőrzi az értékét
    • Garantálás: S után P mindig igaz
    • Tervezési minták
      • Helper: Összeköt ideiglenesen 2 entitást
      • Optimalizált tranzitív lezárt minta: lezártat számol, ehhez felvesz egy segédentitást, majd azt az ősök felé mozgatja, míg a lezárt elemeit összegyűjti. Azért optimalizált, mert egyetlen segítőt használ
  • Modellalapú módszertanok
    • MIC (Model-Integrated Computing): Metamodell <-> Modell <-> Alkalmazás. Van visszacsatolás
      • MIPS (Model-Integrated Program Synthesis)
    • MDA (Modellvezérelt architektúra): Modellből platformspecifikus részeket több modellprocesszorral állítunk elő, így pl generálható a kód különböző mobiltelefonokra
  • Többirányű modelltranszformáció: Modellt és kódot együtt módosítjuk, vagy mergelünk
    • TGG: Oda-, és visszairányú szabály egyszerre
    • QVT (Query/View/Transformation):
      • Relations nyelv: Tud összetett objektummintákat illeszteni. Traceket helyez el, így könnyen nyomonkövethető
        • Relation: Követelmények, amiket a modellnek teljesítenie kell
        • Domain: Típusos változó, a modellbe illeszkedik
        • When klóz: Feltételek, amiknek teljesülése esetén a relációnak teljseülnie kell
        • Where klóz: Feltételek, amiket a relációnak biztosítania kell
        • Top level reláció: Nem csak wehere feltételből hívódnak
        • Checkonly mód: Ellenőrzi, hogy a modell megfelel-e a specifikáltnak
        • Enforce mód: Elvégzi s szükséges transzformációkat, hogy a modell megfeleljen a specifikációnak
        • Kulcsok: Biztosítható, hogy ne készüljenek duplikált objektumok
      • Core nyelv: Kényszerek kiértékelése, ellenőrzése
      • Imperatív implementáció: Operational Mappings
  • Aspektusorientált fejlesztés:
    • Crosscutting Concerns: A programban szétszóródott, de logikailag egybe tartozó részek
    • 1 helyen vesszük fel a szabályt (aspektus)
    • Meghatározzuk a pontokat, ahol alkalmazásra kell, hogy kerüljön (joinpoints)
    • Egy szövő fordítási időben beilleszti az aspektusokat a megfelelő helyre

-- sashee - 2010.05.20.