1 / 19

SimCo – tvorba komponent

SimCo – tvorba komponent. Richard Lipka Department of Computer Science and Engineering Faculty of Applied Sciences University of West Bohemia, Pilsen , Czech Republic. Agenda. Základní koncepty Přehled důležitých tříd SimCa Tvorba simulované komponenty Tvorba intermediate komponenty

onofre
Télécharger la présentation

SimCo – tvorba komponent

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. Použití simulace • 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

  4. Nasazení k testování • 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

  5. Struktura SimCa • 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í

  6. Podpora pro simulační komponenty • 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

  7. Simulovaná komponenta • 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

  8. Simulovaná komponenta - příklad public Vector<AccelerometerVector> getVector() { this.simcoCatchEvent(); this.simcoDelay(); Vector<AccelerometerVector> vector_temp = newVector<AccelerometerVector>(); for(AccelerometerVectorvector : this.vectors) { vector_temp.add(vector); } this.vectors.removeAllElements(); returnvector_temp; }

  9. Simulovaná komponenta - příklad

  10. Simulovaná komponenta - zachycení • 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

  11. Simulovaná komponenta - zpoždění • 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

  12. Intermediate komponenta • 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

  13. Intermediate komponenta - příklad public intgetCountOfSteps() { SimulationEventevent = this.intermediateRealEventCatch(); intstepsCount = calculator.getCountOfSteps(); this.intermediateReturnEventCatch(event); returnstepsCount; }

  14. Intermediate komponenta - příklad

  15. Intermediate komponenta - volání • 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

  16. Kalendář • 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

  17. Sestavení simulace • 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:<entry key="simul" value="true" /> • U těch kdo službu využívají přibude nastavení filtru: <osgi:reference id="Calculator" interface="simco.application.calculator.ICalculator" filter="(simul=true)" />

  18. Popisy pro simulátor • V každém bundlu v kořeni XML souborjmenoSettings.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

  19. Děkuji za pozornost

More Related