V této kapitole rozeberu potřebnou funkcionalitu aplikační části. Rozbor
umožní vybrat prostředky pro konkrétní implementaci a tuto implementaci
realizovat.

\section{Automatická analýza formátů testovacích obvodů}

Vychází z potřeby uživatele zjistit co nejvíce informací o daném obvodu.
Formát může obsahovat nejrůznější informace, na základě kterých si
uživatel může udělat základní obrázek o složitosti obvodu a jeho
struktuře. Typickými informacemi, které lze zjistit analýzou obvodu,
jsou počty vstupů a výstupů nebo počty hradel určitého typu.

{\odstavec
Analyzátor přijme jeden nebo více souborů obsahujících testovací obvody
a vypíše informace o každém obvodu. Analýzu provede na základě znalosti
fomátu souboru. Formát souboru vyhodnotí ze znalosti přípony souboru
nebo na základě explicitního zadání přípony uživatelem.
}

\section{Základní požadavky na databázi testovacích obvodů}

Databáze testovacích obvodů obsahuje informace o jednotlivých obvodech,
ale i samotné soubory testovacích obvodů v podporovaných formátech.
Informace v databázi musí být možné modifikovat, prohlížet a vyhledávat,
soubory bude třeba mít možnost stáhnout do adresáře uživatele pro prohlédnutí
souboru nebo další zpracování.

\section{Informace ukládané v databázi}

Základní jednotkou dat uloženou v databázi je samotný testovací obvod - benchmark.
Data benchmarku rozdělíme na popisná a strukturní. Strukturní data jsou v podobě
souboru v podporovaném formátu (např. BENCH) - konkrétní podporované formáty
proberu v následující kapitole.

{\odstavec
Testovací obvody jsou seskupeny v sadách a tuto skutečnost musí respektovat i naše
databáze.

Testovací obvod se stejnou funkcí a názvem může být vyjádřen různými způsoby i
v rámci jedné sady. To znamená, že sada může obsahovat onen obvod v několika
formátech nebo i v několika instancích v rámci jednoho formátu - např. v
optimalizované a neoptimalizované podobě.  Těmto různým vyjádřením jednoho
obvodu budu dále říkat instance testovacího obvodu (benchmarku). V praxi to
znamená, že je možné mít základní sdílená data vyjádřená pro obvod jako takový,
které nazvu data benchmarku a dále data platná pouze pro danou instanci.

Data benchmarku zahrnují název benchmarku a jeho obecný popis.

Popisná data instance se rozdělují do dvou skupin. První skupinou jsou obecná data, která
je možno přiřadit jakémukoliv testovacímu obvodu, ve druhé skupině jsou data,
která jsou přiřazována dynamicky na základě automatické analýzy nebo doplněním
uživatelem.

Mezi obecná data instance patří:
}

\begin{itemize}

\item Formát instance (např. BLIF).

\item Konkrétní popis instance (např. informace o provedení optimalizace).

\item Sada benchmarků, do níž instance náleží.
    
\end{itemize}

{\odstavec
Dynamicky přidělovaná data nazvu atributy instance. Tyto atributy se budou připojovat
k instanci až v případě, že budou jejich hodnoty zadány do systému a vymazání
hodnoty povede k odpojení atributu.

Informace o sadě benchmarků musí obsahovat název sady a její popis.

Informace o formátu musí obsahovat název formátu a jeho popis.
}

\section{Vytvoření struktury a základních dat databáze}

Struktura databáze musí být v rámci instalace vytvořena automaticky, je nutné
vypracovat prostředek, který naplní základní data, např. data podporovaných formátů,
do databáze, po vytvoření struktury.


\section{Plnění dat do databáze}

Data do databáze je třeba mít možnost zadávat jak ručně, tak i automatizovaně.
Automatizované plnění dat využije vytvořený analyzátor benchmarků a dovoluje
naplnit najednou data celé sady, jsou-li uložena v rámci společného adresáře.
Automatické plnění dat bude probíhat tak, že program rekurzivně prochází zadaný
adresář a při nalezení benchmarkového souboru známého formátu naplní jeho
data do databáze a přiřadí jim zadanou sadu benchmarků.

\section{Zobrazovaná data databáze}

Uživatelské rozhraní databáze musí umožňovat zobrazovat veškerá popisná data
konkrétních instancí. Dále je třeba umožnit výpis podporovaných formátů,
popisných informací o těchto formátech a zobrazení seznamu sad, které konkrétní
formát obsahuji. U benchmarkových sad je nutno rovněž zobrazit název a popis
a dále seznam formátů, které sada obsahuje a odkaz na vyhledání instancí
obsažených v sadě.

\section{Vyhledávání instancí}

Instance benchmarků potřebuje uživatel vyhledávat podle několika kritérií:

\begin{itemize}

\item Podřetězec názvu benchmarku,

\item formát,

\item sada,

\item hodnota atributu.
        
\end{itemize}

{\odstavec
Je vhodné moci zadat v rámci vyhledávacích kritérií referenční hodnoty více atributů,
u každé hodnoty je třeba mít možnost zadat i relaci (\textgreater, \textless,
=, \textless\textgreater, \textless=, \textgreater=). Všechna vyhledávací
kritéria budou spojena logickou operací AND.

Protože zadaným kritériím může vyhovovat větší množství instancí, je třeba vymyslet
způsob, jak omezit počet najednou zobrazovaných výsledků a jak listovat mezi podmnožinami
výsledků.
}

\section{Stahování benchmarků}

Uživatel musí mít možnost stáhnout si vyhledané instance benchmarků, resp.
jejich strukturální data ve tvaru benchmarkového souboru, do určeného adresáře. Stahování
může být jednotlivé nebo agregované. Agregované stahování znamená stažení archivu obsahujícího
všechny benchmarky vyhovující zadaným kritériím.

\section{Modifikace dat v databázi}

Modifikace dat v databázi zahrnuje změnu popisu formátu nebo sady. Nejdůležitější je však
modifikace instancí benchmarků.

{\odstavec
Modifikace instancí benchmarků musí umožňovat změnit popis instance, obecný popis benchmarku
a hodnoty atributů (u neexistujících to znamená připojení atributu k instanci, je nutné
též moci smazat hodnotu atributu). Zadáním nového jména dojde k připojení instance k jinému
benchmarku nebo jeho vytvoření. Instanci musí být rovněž možno přesunout do jiné sady.
}

\section{Omezení přístupu k datům databáze}

Správce systému určí, zda prohlížení databáze bude dostupné všem zájemcům nebo zda bude
k prohlížení nutno mít založen uživatelský účet. Modifikace dat v databázi benchmarků je
vázána na uživatelský účet s dostatečným oprávněním.

\section{Správa uživatelských účtů}

Součástí rozhraní databáze benchmarků bude i správa uživatelských účtů, tedy jejich
vytváření, změna přístupových práv, změna hesla a zrušení uživatelského účtu. Pro správu
uživatelských účtů musí mít uživatel zvláštní úroveň oprávnění. Při vytváření struktury
databáze bude vytvořen jeden uživatelský účet, který bude disponovat právy k administraci
uživatelských účtů.

% vim:enc=iso8859-2:fenc=iso8859-2:syntax=tex:
