# XBUP - Dokumentace: Pravidla tvorby bloků

### Úvod

Tento dokument je součástí dokumentace projektu eXtensible Binary Universal Protocol. Obsahuje omezující podmníky, které by měly být splněny při tvorbě vlastních bloků v protokolu XBUP.

O úroveň výše

### Obsah

1. Úvod
2. Konstrukce definice dokumentu
2.1. Konstrukce bloku
2.1.1. Pravidla uvádění atributů
2.1.2. Pravidla záměny za blok
2.1.3. Pravidla pořadí atributů
2.1.4. Pravidlo izolovanosti
2.1.5. Pravidlo parametrizace typu
2.2. Pravidla organizace skupin
2.3. Pravidla organizace definic
3. Standardní schémata bloků
3.1. Schéma seznam
3.2. Schéma kolekce
4. Propojování bloků

### 1. Úvod

Při vytváření datových formátů je nutné zachovat určitá konstrukční pravidla tak, aby bylo dosaženo co nejlepšího výsledku. Tato pravidla budou postupně zformována podle získaných zkušeností, tak aby se co nejvíce zjednodušil návrch nových formátu, minimalizoval se vznik chyb v návrhu a dosáhlo se co nejvhodnějšího tvaru bloku, pořadí a počtu atributů.

### 2. Konstrukce definice dokumentu

Při tvorbě nové definice dokumentu je nutné si především zjistit, jestli neexistuje jiný lepší ekvivalentní formát, který by mohlo být možné použít. Celý formát je taktéž nutné důsledně promyslet tak, aby jej nebylo nutné v budoucnu často opravovat.

### 2.1. Konstrukce bloku

Vytváříme-li blok bez existence jakékoliv předlohy, je vhodné se také zaměřit na pořadí atributů a podbloků. Cílem následujících pravidel je také vést autora a zjednodušit mu tak celý proces tvorby definice bloku a pomoci mu vyvarovat se běžných chyb.

### 2.1.1. Pravidla uvádění atributů

S výhodou je zde možné použít některých pravidel (normálních forem) databázových relací:

- Atomicita atributů - atributy musí být atomické, tedy například ne "data celkem, z toho přijatá data", ale "přijatá data, odeslaná data"
- Přímá závislost na bloku - atribut musí být plně závislý na významu bloku, tedy například pro blok představující auto, není vhodný atribut "finanční stav účtu majitele auta"
- Dodatečné atributy - pokud některý z atributů není uváděn vždy, je vhodné jej uvádět až jako volitelný podblok. Například barva auta.
- Zákaz odvozených atributů - Odvozený atribut je takový, jehož obsah lze spočítat z atributů jiných. Kromě toho, že se jedná o plýtvání, může takové použití vést k nekonzistenci. Na rozdíl od databáze zde nemá smysl povolovat vyjímky kvůli předpočítání, neboť v případě kritických výpočtů se předpočítané hodnoty posílají jako datové struktury s odpovídajícími hlavičkami.
- Cykly ukazatelů - nesmí vzniknout cykly mezi bloky, tedy dva bloky by na sebe neměli mít odkazy
- Zákaz typového rozšíření - atribut nesmí vést k rozšíření významu bloku mimo třídu hodnot. K tomu jsou definovány právě typové atributy. V případě nutnosti je možné použít transformaci.

Jinými pravidly je vhodné vést tvůrce k akceptování národních prostředí

- Univerzálnost jednotek - není vhodné uvádět atributy v konkrétních jednotkách, například metrech. Doporučuje se uvést místo toho odkaz na podblok, u něhož bude uvedena i jednotka.
- Závislé identifikační čísla - také není vhodné pro identifikaci používat nestandardní čísla přímo, například rodné číslo, číslo pojištění, číslo občasného průkazu

Další z pravidel vyplývají ze snahy minimalizovat velikost bloku...

### 2.1.2. Pravidla záměny za blok

Ne vždy je atribut vhodné zahrnout. Někdy je vhodnější pro tento atribut vytvořit podblok a raději jej odkazovat. To platí například v následujících případech:

- Pokud atribut může být odkazován z jiného bloku, tedy místo hodnoty bude uveden odkaz na jinou hodnotu jiného bloku
- Pokud má atribut jinou jednotku než počet

### 2.1.3. Pravidla pořadí atributů

Primární cíl je uvést atributy podle frekvence využití od nejpoužívanějšího po nejméně používaný. To umožní v případě nevyužití atributu zkrátit velikost bloku a ušetřit tak prostor.

- První jsou uvedeny atributy, které jsou povinné a nulová hodnota u nich má podstatný význam
- Jako další jsou uvedeny atributy jejichž nejčastější hodnotou je 0
- Nakonec se uvádí atributy, které mohou být často vynechávány

### 2.1.4. Pravidlo izolovanosti

Při definici bloku je vhodné také dodržovat toto pravidlo, které říká, že jednotlivé definice bloku by měly odkazovat pouze obsah samotného bloku, podobně jako atributy v objektovém programování. Zatímco by neměl být odkazována žádná vlastnost nadřazeného objektu, je u podřízených bloků možné některé případy použít.

Příklad chybného použití:

- Osoba
  - Jméno
    - Věk

Vlastnosti podřazených bloků je vhodné uvádět např. v následujících případech:

- Definice zpracování podbloků, např. nahrazení obsahu

### 2.1.5. Pravidlo parametrizace typu

Pravidlo parametrizace určuje, kdy je vhodné parametry či atributy sloučit s definicí typu bloku. Nejhorším případem je obejití typu bloku, kdy pro stejnou hodnotu typu bloku je použita alternativní dvojice hodnot definující skutečný význam bloku. Následující seznam popisuje případy, kdy je vhodné se vyvarovat použití daného atributu či parametru:

- V závislosti na hodnotě atributu se mění typ/význam některého jiného atributu, či podloku
- Je použit obecný atribut či parametr, přestože jsou identifikovatelné skupiny významů, kdy by bylo možné použít konkrétní typ atributu či parametru
- Pro jiný blok by bylo potřeba použít pouze část z možných významů daného bloku

### 2.2. Pravidla organizace skupin

Zřejmě není vhodné, aby různorodé bloky patřily do stejné skupiny. Následující pravidla by měly vést k co nejlepší organizaci skupin pro váš dokument.

### 2.3. Pravidla organizace definic

### 3. Standardní schémata bloků

Pokud je to možné, je vhodné se pokusit napasovat definici bloku na nějaké již existující schéma. Následující seznam uvádí vzory bloků a jejich doporučované atributy, tak jak by měly být použity. Jde o jistou obdobu návrhových vzorů.

### 3.1. Schéma seznam

(zastaralé) Schéma seznamu definuje strukturu s položkami a pořadím na nich. Toto schéma je již popsáno v úrovni 1 pro definici seznamu specifikačních položek pro typy. Všechny položky seznamu by měly být stejného typu, nebo na tento typ transformovatelné.

### 3.2. Schéma kolekce

(zastaralé) Kolekce je obdobou seznamu, ve které mohou být jednotlivé položky různého typu.

### 4. Propojování bloků

S propojováním bloků je spojeno vysoké riziko nedodržení konzistence. Proto by bloky, u nichž se počítá s propojováním, měly být konstruovány tak, aby se počítalo s tím, že budou případně umisťovány do stejného souboru.

Homepage: http://xbup.sf.net
License: GNU Free Documentation License (FDL)
Latest update: 2009-09-19