# XBUP - Dokumentace: Pořadí kroků

### Úvod

Tento dokument je součástí dokumentace projektu eXtensible Binary Universal Protocol. Obsahuje popis způsobu určení pořadí kroků vývoje a jejich postupné naplňování.

O úroveň výše

### Obsah

1. Zvolený postup
2. Základní principy
2.1. Ověření požadavků
2.2. Kódování dat
2.3. Datová abstrakce
2.4. Zpracování dat

### 1. Zvolený postup

Při práci na tomto projektu bylo potřeba zvolit vhodý postup vývoje. Původní záměr, vycházet z existujícího řešení, nebylo možné použít, protože nebylo žádné takové řešení nalezeno. Proto bylo nutné začít úplně od nejnižší úrovně. Snahou bylo dokázat, že projektem navrhované finální řešení splňuje cíle, tedy splňuje požadované vlastnosti v požadovaném rozsahu, nebo je nemožnost jejich splnění podložena ověřitelnými argumenty. Možným způsobem jak tohoto dosáhnout je prokázání toho, že každý jednotlivý krok je správný, čímž se prokáže správnost celého postupu.

Nakonec byl zvolen způsob vývoje od primitiv k vyšším strukturám (bottom-up), neboť opačný postup by nemusel včas odhalit reálné problémy. Také práce v obou směrech s jejich postupnou konvergencí k výsledku by mohla v tomto případě narazit na problémy s odvozováním spojové vrstvy. Na vysoké úrovni abstrakce už dnes existuje řada solidních teorií, o které se bude moci vývoj v pozdějších fázích opřít. Zvolený postup je tedy prozatím následující:

- Kódování čísel
- Bloková struktura
- Typovost prvků
- Katalog
- Transformační bloky
- Skriptování

### 2. Základní principy

Bylo potřeba vyvinout některé nové způsoby kódování dat. Bylo rozhodnuto jít cestou co největší abstrakce. Jako první bylo stanoveno jednotné kódování čísel, umožňující kódování neomezeně velkých čísel, nezávisle na platformě. Dále bylo potřeba nalézt strukturu bloků, způsob zajištění kompatibility, rozšiřitelnosti a další. Dále by bylo dobré dosáhnout toho, aby se nejednalo pouze o výběr jednoho z kompromisů. Správnost koncepce není možné formálně dokázat, nicméně je možné jistým formálnějším způsobem dokázat správnost některých zvolených postupů. Například použití nekonečných čísel je nutností, neboť pokud bychom chtěli uložit větší soubor než je maximální povolená velikost, museli bychom změnit formát, nebo použít formát jiný. Takový formát by pak nebyl plně dopředně kompatibilní a tedy v rozporu se stanovenými cíly. Další podobné argumenty můžete najít v dokumentaci vývoje v částech o kódování čísel či o blokové struktuře. Podobné zdůvodnění by bylo dobré použít i nad vyššími datovými strukturami. Předpokládá se však, že konkrétní formáty už nebude možné nijak podložit, nebo nebude požadovaná argumentace dosažitelná a organizace dat tak bude výsledkem kompromisu.

### 2.1. Ověření požadavků

Vhodným ověřením by mělo být možné potvrdit správnost požadovaných vlastností a cílů.

- univerzálnost - Za předpokladu, že chceme vytvořit dobrý protokol, měl by tento umožňovat v extrémním případě realizovat uložení libovolné informace.
- rozšiřitelnost - Rozšiřitelnost je přímým důsledkem univerzálnosti. Pokud chceme, aby byl výsledný protokol univerzální, musíme zajistit, aby jej bylo možné rozšiřovat o další struktury a ne pouze definovat omezenou skupinu informací, která nikdy nebude schopna postihnout vše.
- kompatibilita - Zajištění dopředné a zpětné kompatibility plyne z rozšiřitelnosti. Kvalitní protokol dobrý by kromě možnosti rozšíření měl podporovat i starší formáty a vhodně je zpracovávat.

### 2.2. Kódování dat

Data je nutné kódovat do bitové posloupnosti a to z následujících důvodů:

- Bit je základní jednotka informace - Bit, jakožto nejmenší a základní jednotka informace, by se měl stát základem kódu pro reprezentaci libovolné informace.
- Posloupnost položek stejného typu - Ačkoliv je možné používat položky různých typů, je to nepraktické a mnohem vhodnější se jeví použití posloupnosti položek stejného druhu.

Do této posloupnosti je potřeba interpretovat jednotlivé vyšší datové typy. Pro tyto účely je potřeba také zvolit vhodné kódování a blokovou strukturu. Použité kódování a důvody pro volbu tohoto řešení popisuje část kódování čísel, způsob jakým vyjádřit blokovou strukturu pak část bloková struktura.

### 2.3. Datová abstrakce

Kromě vlastního kódování je potřeba zavést datovou abstrakci, jako je identifikace typu dat a zavedení vztahů. Pro tyto účely je potřeba následně definovat katalog, který by byl schopen tyto informace uchovávat. Kvůli velké složitosti bude pravděpodobně potřeba škálovat protokol podle úrovní složitosti. Tímto tématem se zabývají části typovost prvků, transformace bloků a katalog specifikací.

### 2.4. Zpracování dat

Následně je vhodné zvážit způsob, jakým jsou data zpracovávána a umožnit transformace různých typů dat do požadovaného tvaru. To zahrnuje tvorbu procesních instrukcí, programových a skriptovacích kódů a metainformace umožňující zpracování správným způsobem řídit.

Homepage: http://xbup.sf.net
License: GNU Free Documentation License (FDL)
Latest update: 2008-10-05