Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Richard Lipka Department of Computer Science and Engineering Faculty of Applied Sciences University of West Bohemia, Pilsen, Czech Republic 1.

Podobné prezentace


Prezentace na téma: "Richard Lipka Department of Computer Science and Engineering Faculty of Applied Sciences University of West Bohemia, Pilsen, Czech Republic 1."— Transkript prezentace:

1 Richard Lipka Department of Computer Science and Engineering Faculty of Applied Sciences University of West Bohemia, Pilsen, Czech Republic 1

2 > Základní koncepty > Přehled důležitých tříd SimCa > Tvorba simulované komponenty > Tvorba intermediate komponenty > Zapojení do aplikace 2

3 > Simulované komponenty běží ve vláknech > Běh vláken řízen kalendářem > Simulovaná komponenta se po vyvolání uspí a po vyvolání kalendářem provede „scénář“ > Intermediate komponenta vytvoří událost pro volání reálné, uspí se, provede reálnou akci a vytvoří událost pro návrat hodnoty 3

4 > Simulace komponent > Pro urychlení výpočtu (komprese) > Potenciálně automaticky generovatelné > Pro interakci s okolím > Simulace vstupu od uživatele > Simulace síťových a dalších rozhraní která nejsou během testování k dispozici > Vyžaduje tvorbu netriviálních scénářů > Problém při složitějších zapojeních > Vyžaduje splnění behaviorálního modelu 4

5 > core > Jen rozraní mezi jádrem a GUI, nic víc > extension > Simulační kontext SimCoContext, řízení běhu vláken, podpora načítání scénářů, definice typů > gui > Celé grafické rozhraní > scheduler > Implementace kalendáře CalendarImpl, podpora práce s ním, řízení běhu simulace SimcoSimulation, logování > Simco > Abstraktní třídy a rozhraní pro simulované komponenty, EventCreator pro tvorbu událostí 5

6 > ABaseSimObject > Vložení události volání a návratu do kalendáře > AIntermediate > Zachycení volaných metod, určení událostí a bundlů > ASimco > Tvorba událostí pro volání reálných a simulovaných komponent > Řízení běhu simulované komponenty > Zachycení volaných metod, určení zdroje 6

7 > Potomek třídy ASimco, musí implementovat rozhraní simulované komponenty > V konstruktoru předat reference na kalendář ( ICalendar ), simulační kontext ( ISimCoContext ) a tvorbu událostí ( EventCreator ) > Volání metody > Zachycení volané metody > Naplánování zpoždění > Simulační běh komponenty 7

8 public Vector getVector() { this.simcoCatchEvent(); this.simcoDelay(); Vector vector_temp = new Vector (); for(AccelerometerVector vector : this.vectors) { vector_temp.add(vector); } this.vectors.removeAllElements(); return vector_temp; } 8

9 9

10 > ASimco.CatchEvent() > Zachycení a tvorba události pro kalendář > Získání jména ze StackTrace → obecné > Podle toho koho volá vytvoří > Reálnou událost > Simulovanou událost pokud volá další simulovanou komponentu > Vloží událost do kalendáře > Kontrola zařazení do skupiny 10

11 > ASimco.simcoDelay() > Získání jména volané metody > Uspání simulační komponenty > Vytvoření události simulovaného návratu hodnoty a vložení do kalendáře > Pokud se má odehrát okamžitě, probuzení kalendáře aby ji vyvolal 11

12 > Potomek třídy AIntermediate, musí implementovat rozraní zakryté komponenty > Konstruktor jako simulovaná komponenta, navíc potřebuje referenci na zakrytou komponentu > Volání metody > Vytvoření simulační události volání > Skutečné volání a získání návratové hodnoty > Vytvoření simulační události návratu hodnoty > Návrat hodnoty z reálné komponenty 12

13 public int getCountOfSteps() { SimulationEvent event = this.intermediateRealEventCatch(); int stepsCount = calculator.getCountOfSteps(); this.intermediateReturnEventCatch(event); return stepsCount; } 13

14 14

15 > AIntermediate.intermediateRealEventCatch() > Získá jméno volané metody ze StackTrace a ID bundlu > Vytvoří událost pro kalendář – kdy má v simulačním čase dojít k volání > AIntermediate.intermediateReturnEventCatch() > Vloží do kalendáře událost návratu hodnoty 15

16 > Rozhraní ICalendar, implementace scheduler.CalendarImpl > Umožňuje jeden krok nebo plynulý běh simulace > Podle typu událostí je volá přes EventsInvoker > invokeCasualEvent() – jedno volání metody > invokeRegularEvent() – volání metod ze scénáře > invokeReturnEvent() – událost s návratem hodnoty 16

17 > Manifesty pro OSGi se měnit nemusí > SpringDM > Pro simulované komponenty > V popisu simulované komponenty uvést že poskytuje potřebnou službu > V popisu reálné komponenty umazat že poskytuje potřebnou službu > Pro intermediate komponenty > U intermediate komponenty vznikne nová služba se stejným rozhraním jako u zakryté komponenty, navíc ale s parametrem: > U těch kdo službu využívají přibude nastavení filtru: 17

18 > V každém bundlu v kořeni XML soubor jmenoSettings.xml > V něm popis bundlu – třídy jaké poskytuje > Nastavení metod, které se budou opakovaně volat (pro scénáře) > I pro reálné bundly > Celkový soubor s popisem > Seznam a odlišení typů bundlů > Seznam událostí které se mají volat, nastavení period pokud je potřeba 18

19 19


Stáhnout ppt "Richard Lipka Department of Computer Science and Engineering Faculty of Applied Sciences University of West Bohemia, Pilsen, Czech Republic 1."

Podobné prezentace


Reklamy Google