Zde uváděná zadání projektů jsou orientační, po konzultacích je možné zadání upravit, případně vytvořit úplně jiné ... Pokud vás cokoliv zaujalo (byť i myšlenka) a máte zájem něco podobného rozvíjet, uvítám váš mail (koci AT fit.vutbr.cz).
Témata projektů
Framework pro tvorbu a ověřování specifikačních modelů
Navrhněte modulární architekturu nástroje, který umožňuje tvorbu specifikačních modelů a jejich validaci.
Nástroj bude primárně pracovat s Petriho sítěmi (editace sítí a zobrazování stavu simulace).
Nástroj musí být jednoduchým způsobem rozšiřitelný na další modely (případy užití, diagramy tříd, sekvenční diagramy, DEVS).
[bp][–] Minimální prostředí pro systém PNtalk
Seznamte se s prostředím Smalltalk a s implementací simulátoru PNtalk.
Prostudujte koncept správy paměti a image souborů ve Smalltalku.
Navrhněte a vytvořte co nejmenší image soubor, ve kterém může běžet simulátor PNtalk. Uvažujte variantu s GUI i bez GUI. Image musí obsahovat možnost vzdálené správy.
Seznamte se s Linuxovými operačními systémy a jejich minimálními distribucemi.
Proveďte analýzu požadavků na distribuci operačního systému, v kterém může běžet image Smalltalku se simulátorem PNtalk.
Vytvořte minimální distribuci OS Linux, která bude splňovat výše uvedené požadavky. Distribuce musí umožňovat vzdálenou správu a obsahovat jednoduchý balíčkovací systém.
Vytvořená distribuce bude přístupná formou Live CD/DVD/USB s možností instalace.
[dp] Virtuální stroj pro Objektově orientované Petriho sítě v jazyce Java/C++/Smalltalk
Navrhněte koncept virtuálního stroje, který umožňuje interpretovat vybranou podmnožinu OOPN. Modely budou překládány do interní reprezentace (mezikód). Virtuální stroj musí splňovat požadavky na efektivitu běhu modelů a velikost použité paměti. Virtuální stroj musí umožnit spuštění a zastavení běhu modelů, získání stavu modelů a uložení a načtení modelů v libovolném stavu. Tyto zásahy budou probíhat v privilegovaném režimu, tj. tyto zásahy budou povoleny jen pro vybrané uživatele.
Navržený virtuální stroj implementujte v jazyce /..dle dohody../. Proveďte analýzu možností navrženého a implementovaného virtuálního stroje, zaměřte se na slabá místa.
[dp] Nástroj pro podporu vývoje softwarových systémů
Seznamte se s problematikou nástrojů pro podporu vývoje softwarových systémů.
Prostudujte koncept jazyka UML a formalismu Objektově orientované Petriho sítě (OOPN).
Navrhněte nástroj umožňující návrh softwarového systému s využitím diagramů případů užití a tříd z jazyka UML pro popis struktury a formalismu OOPN pro popis chování. Nástroj musí umožnit export a import modelů ve stanoveném formátu /bude upřesněno/.
Navržený nástroj implementujte v jazyce /dle dohody/
Proveďte analýzu možností nástroje, zaměřte se především na jeho slabá místa.
[dp] Generování kódu z Objektově orientovaných Petriho sítí
Prostudujte problematiku generování kódu.
Prostudujte koncept formalismu Objektově orientovaných Petriho sítí (OOPN).
Navrhněte mechanismus transformace modelů popsaných OOPN do různých programovacích jazyků (generování kódu). Uvažujte alespoň jazyky Java a C++.
Implementujte nástroj, který bude respektovat navržené mechanismy transformace. Vytvořte sadu testovacích příkladů.
Analyzujte možné problémy a omezení spojené s transformací do konkrétního jazyka.
[dp] Trasování simulace vysokoúrovňových modelů
Seznamte se s vybranými vysokoúrovňovými modely (DEVS a Petriho sítě) a jejich simulátory (SmallDEVS a PNtalk).
Prostudujte problematiku sledování (trasování) běhu aplikací.
Navrhněte způsob trasování simulace vysokoúrovňových modelů. Zaměřte se na efektivitu ukládání informací a možnost zpětného krokování simulace.
Návrh implementujte a začleňte do simulátoru. Proveďte jednoduchou analýzu časové a prostorové složitosti.
Diskutujte dosažené výsledky a možnosti rozšíření. Výsledky také prezentujte formou posteru.
Automatická správa paměti jazyka PNtalk
Prostudujte problematiku odstraňování objektů (garbage collection), seznamte se s různými přístupy k odstraňování objektů.
Seznamte se s jazykem PNtalk a s principy jeho interpretu (virtuálního stroje).
Navrhněte vhodnou koncepci garbage collectoru pro objekty PNtalku.
Navržený garbage collector implementujte.
Proveďte diskuzi implementace (výhody, nevýhody, efektivita).Výsledky prezentujte také formou posteru.
Nástroj pro práci s Objektově orientovanými Petriho sítěmi
Prostudujte formalismus Objektově orientovaných Petriho sítí (OOPN), jazyk PNtalk a jazyk pro popis Petriho sítí PNML.
Seznamte se s aktuální implementací simulačního serveru OOPN a protokoly pro práci s modely a řízení simulace.
Navrhněte a implementujte nástroj umožňující vytváření, editaci a ukládání modelů OOPN ve formátu PNML a jazyka PNtalk a export modelů do formátu EPS.
Rozšiřte nástroj o možnost komunikace se simulačním serverem (ukládání a načítání modelů, řízení simulace, zobrazení stavu simulace). V případě potřeby upravte protokoly.
Diskutujte dosažené výsledky a navrhněte možná rozšíření nástroje. Výsledky také prezentujte formou posteru.
[bp] Inkrementální překladač jazyka PNtalk
Prostudujte problematiku tvorby překladačů.
Seznamte se z definicí jazyka PNtalk a jeho vnitřní reprezentací.
Navrhněte inkrementální překladač jazyka PNtalk s ohledem na existující vnitřní reprezentaci. Překladač by měl umožňovat překlad jednotlivých elementů jazyka s případným začleněním do již existujících přeložených struktur.
Navržený překladač implementujte. Pokud to bude účelné, navrhněte a realizujte změny ve vnitřní reprezentaci.
Vytvořte dokumentaci a sadu testů ověřující správnou funkčnost implementace.
[bp] Migrace zdrojových textů Smalltalku
Prostudujte systémy Smalltalk/X, Pharo Smalltalk a Squeak Smalltalk. Zaměřte se na formáty pro sdílení zdrojového kódu.
Navrhněte algoritmy pro export a import zdrojových kódů, které reflektují rozdílné třídy a protokoly jednotlivých systémů.
Rozšiřte stávající formáty pro sdílení zdrojových kódů, případně navrhněte nové.
Navržené algoritmy a změny implementujte v systémech Smalltalk/X, Pharo Smalltalk a Squeak Smalltalk.